Gdy Google zwróci token identyfikatora, zostanie on przesłany do punktu końcowego logowania za pomocą żądania metody HTTP POST z parametrem o nazwie credential.
Oto przykład w języku Python, który pokazuje typowe czynności weryfikacji i użytkowania tokena identyfikującego:
- Sprawdź token CSRF. Gdy przesyłasz dane logowania do punktu końcowego logowania, używamy wzorca podwójnego przesyłania plików cookie, aby zapobiec atakom CSRF. Przed każdym przesłaniem generujemy token. Następnie token jest umieszczany w ciasteczce i w treści posta, jak pokazano w tym przykładzie kodu: - csrf_token_cookie = self.request.cookies.get('g_csrf_token') if not csrf_token_cookie: webapp2.abort(400, 'No CSRF token in Cookie.') csrf_token_body = self.request.get('g_csrf_token') if not csrf_token_body: webapp2.abort(400, 'No CSRF token in post body.') if csrf_token_cookie != csrf_token_body: webapp2.abort(400, 'Failed to verify double submit cookie.')
- Zweryfikuj token identyfikacyjny. - Aby sprawdzić, czy token jest prawidłowy, upewnij się, że spełnia te kryteria: - Token identyfikacji jest prawidłowo podpisany przez Google. Użyj kluczy publicznych Google (dostępnych w formacie JWK lub PEM), aby zweryfikować podpis tokena. Te klucze są regularnie zmieniane. Sprawdź nagłówek Cache-Controlw odpowiedzi, aby określić, kiedy należy je ponownie pobrać.
- Wartość audw tokenie identyfikatora jest równa jednemu z identyfikatorów klienta Twojej aplikacji. Jest to konieczne, aby zapobiec używaniu tokenów identyfikatora wydanych złośliwej aplikacji do uzyskiwania dostępu do danych o tym samym użytkowniku na serwerze backendu aplikacji.
- Wartość issw tokenie identyfikatora jest równaaccounts.google.comlubhttps://accounts.google.com.
- Czas wygaśnięcia tokena identyfikacyjnego (exp) jeszcze nie upłynął.
- Jeśli musisz sprawdzić, czy token identyfikatora reprezentuje konto organizacji Google Workspace lub Cloud, możesz sprawdzić roszczenie hd, które wskazuje hostowaną domenę użytkownika. Należy go używać, gdy chcesz ograniczyć dostęp do zasobu tylko do członków określonych domen. Brak tego roszczenia oznacza, że konto nie należy do domeny hostowanej przez Google.
 - Korzystając z pól - email,- email_verifiedi- hd, możesz sprawdzić, czy Google hostuje adres e-mail i czy jest dla niego autorytatywny. W przypadkach, w których Google ma wiarygodne informacje, użytkownik jest uznawany za prawowitego właściciela konta i możesz pominąć hasło lub inne metody weryfikacji.- Sytuacje, w których Google jest miarodajne: - emailma sufiks- @gmail.com, jest to konto Gmail.
- email_verifiedjest prawdziwe i- hdjest ustawione, jest to konto Google Workspace.
 - Użytkownicy mogą rejestrować konta Google bez używania Gmaila ani Google Workspace. Gdy - emailnie zawiera sufiksu- @gmail.comi nie ma parametru- hd, Google nie jest autorytatywny i zaleca się użycie hasła lub innych metod weryfikacji użytkownika.- email_verifiedmoże być też prawdziwe, ponieważ Google początkowo zweryfikowało użytkownika podczas tworzenia konta Google, ale od tego czasu własność konta e-mail w usłudze innej firmy mogła ulec zmianie.- Zamiast pisać własny kod do wykonywania tych kroków weryfikacji, zdecydowanie zalecamy używanie biblioteki klienta interfejsu Google API dla Twojej platformy lub ogólnej biblioteki JWT. Na potrzeby programowania i debugowania możesz wywołać nasz - tokeninfopunkt końcowy weryfikacji.- Korzystanie z biblioteki klienta interfejsów API Google- Używanie jednej z bibliotek klienta interfejsów API Google (np. Java Node.js, PHP, Pythona) to zalecany sposób weryfikacji tokenów tożsamości Google w środowisku produkcyjnym. - Jawa - Aby zweryfikować token identyfikatora w Javie, skorzystaj z GoogleIdTokenVerifier. Na przykład: - import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken; import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken.Payload; import com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier; ... GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory) // Specify the WEB_CLIENT_ID of the app that accesses the backend: .setAudience(Collections.singletonList(WEB_CLIENT_ID)) // Or, if multiple clients access the backend: //.setAudience(Arrays.asList(WEB_CLIENT_ID_1, WEB_CLIENT_ID_2, WEB_CLIENT_ID_3)) .build(); // (Receive idTokenString by HTTPS POST) GoogleIdToken idToken = verifier.verify(idTokenString); if (idToken != null) { Payload payload = idToken.getPayload(); // Print user identifier. This ID is unique to each Google Account, making it suitable for // use as a primary key during account lookup. Email is not a good choice because it can be // changed by the user. String userId = payload.getSubject(); System.out.println("User ID: " + userId); // Get profile information from payload String email = payload.getEmail(); boolean emailVerified = Boolean.valueOf(payload.getEmailVerified()); String name = (String) payload.get("name"); String pictureUrl = (String) payload.get("picture"); String locale = (String) payload.get("locale"); String familyName = (String) payload.get("family_name"); String givenName = (String) payload.get("given_name"); // Use or store profile information // ... } else { System.out.println("Invalid ID token."); } - Metoda - GoogleIdTokenVerifier.verify()weryfikuje token JWT podpis, twierdzenie- aud, roszczenie- issoraz Roszczenie- exp.- Jeśli chcesz sprawdzić, czy token identyfikatora reprezentuje Google Workspace lub Cloud konta organizacji, możesz zweryfikować własność domeny - hd, sprawdzając nazwę domeny zwracanymi przez metodę- Payload.getHostedDomain(). Domena Roszczenie dotyczące- emailnie wystarcza do zapewnienia, że konto jest zarządzane przez domenę lub organizacji.- Node.js - Aby sprawdzić token identyfikatora w Node.js, użyj biblioteki uwierzytelniania Google dla Node.js. Zainstaluj bibliotekę: - npm install google-auth-library --save - verifyIdToken(). Na przykład:- const {OAuth2Client} = require('google-auth-library'); const client = new OAuth2Client(); async function verify() { const ticket = await client.verifyIdToken({ idToken: token, audience: WEB_CLIENT_ID, // Specify the WEB_CLIENT_ID of the app that accesses the backend // Or, if multiple clients access the backend: //[WEB_CLIENT_ID_1, WEB_CLIENT_ID_2, WEB_CLIENT_ID_3] }); const payload = ticket.getPayload(); // This ID is unique to each Google Account, making it suitable for use as a primary key // during account lookup. Email is not a good choice because it can be changed by the user. const userid = payload['sub']; // If the request specified a Google Workspace domain: // const domain = payload['hd']; } verify().catch(console.error); - Funkcja - verifyIdTokenweryfikuje podpis JWT, deklaracja- aud, deklaracja- exp, i roszczenie- iss.- Jeśli chcesz sprawdzić, czy token identyfikatora reprezentuje Google Workspace lub Cloud konta organizacji, możesz sprawdzić twierdzenie - hd, które wskazuje, w domenie użytkownika. Tej opcji należy używać, gdy dostęp do zasobu mają tylko użytkownicy i konkretnych domen. Brak tego roszczenia oznacza, że konto nie należy do: jest domeną hostowaną przez Google.- PHP - Aby sprawdzić token identyfikatora w języku PHP, użyj biblioteki klienta interfejsów API Google dla języka PHP. Zainstaluj bibliotekę (np. za pomocą narzędzia Composer): - composer require google/apiclient - verifyIdToken(). Na przykład:- require_once 'vendor/autoload.php'; // Get $id_token via HTTPS POST. $client = new Google_Client(['client_id' => $WEB_CLIENT_ID]); // Specify the WEB_CLIENT_ID of the app that accesses the backend $payload = $client->verifyIdToken($id_token); if ($payload) { // This ID is unique to each Google Account, making it suitable for use as a primary key // during account lookup. Email is not a good choice because it can be changed by the user. $userid = $payload['sub']; // If the request specified a Google Workspace domain //$domain = $payload['hd']; } else { // Invalid ID token } - Funkcja - verifyIdTokenweryfikuje podpis JWT, deklaracja- aud, deklaracja- exp, i roszczenie- iss.- Jeśli chcesz sprawdzić, czy token identyfikatora reprezentuje Google Workspace lub Cloud konta organizacji, możesz sprawdzić twierdzenie - hd, które wskazuje, w domenie użytkownika. Tej opcji należy używać, gdy dostęp do zasobu mają tylko użytkownicy i konkretnych domen. Brak tego roszczenia oznacza, że konto nie należy do: jest domeną hostowaną przez Google.- Python - Aby sprawdzić token tożsamości w Pythonie, użyj instrukcji verify_oauth2_token . Na przykład: - from google.oauth2 import id_token from google.auth.transport import requests # (Receive token by HTTPS POST) # ... try: # Specify the WEB_CLIENT_ID of the app that accesses the backend: idinfo = id_token.verify_oauth2_token(token, requests.Request(), WEB_CLIENT_ID) # Or, if multiple clients access the backend server: # idinfo = id_token.verify_oauth2_token(token, requests.Request()) # if idinfo['aud'] not in [WEB_CLIENT_ID_1, WEB_CLIENT_ID_2, WEB_CLIENT_ID_3]: # raise ValueError('Could not verify audience.') # If the request specified a Google Workspace domain # if idinfo['hd'] != DOMAIN_NAME: # raise ValueError('Wrong domain name.') # ID token is valid. Get the user's Google Account ID from the decoded token. # This ID is unique to each Google Account, making it suitable for use as a primary key # during account lookup. Email is not a good choice because it can be changed by the user. userid = idinfo['sub'] except ValueError: # Invalid token pass - Funkcja - verify_oauth2_tokenweryfikuje token JWT podpis, roszczenie- audi roszczenie- exp. Musisz też zweryfikować- hdroszczenia (jeśli dotyczy) przez sprawdzenie obiektu, który- verify_oauth2_tokenzwraca. Jeśli wielu klientów ma dostęp do serwera backendu, ręcznie zweryfikuj również deklarację- aud.
- Token identyfikacji jest prawidłowo podpisany przez Google. Użyj kluczy publicznych Google (dostępnych w formacie JWK lub PEM), aby zweryfikować podpis tokena. Te klucze są regularnie zmieniane. Sprawdź nagłówek 
- Po potwierdzeniu ważności tokena możesz użyć informacji z tokenu Google ID, aby powiązać stan konta witryny: - Niezarejestrowany użytkownik: możesz wyświetlić interfejs rejestracji, który umożliwia użytkownikowi podanie dodatkowych informacji o profilu (jeśli to wymagane). Pozwala też użytkownikowi na utworzenie nowego konta i zalogowanie się w sesji. 
- Istotne konto, które już istnieje w Twojej witrynie: możesz wyświetlić stronę internetową, na której użytkownik może wpisać hasło i połączyć swoje konto starsze z danymi logowania Google. Potwierdza to, że użytkownik ma dostęp do istniejącego konta. 
- Powracający użytkownik z federacją: możesz umożliwić mu logowanie bez potwierdzenia.