Una vez que el token se encuentre disponible en tu aplicación, se podrá PUBLICAR con ella y
a través del protocolo HTTPS en tu servidor, en el cual se intentará validarlo.(*) Según lo establecido por
RFC7519, un token de Id. es un token web JSON. Es un método estándar abierto de la industria pensado para representar reclamaciones de manera segura entre dos partes.
Paso 2: tu servidor recibe el token de tu cliente de Android. Luego debe validar el token con métodos proporcionados en las bibliotecas del
cliente de API de Google, en particular, para verificar que fue emitido por Google y que el destinatario es tu servidor.
Tu servidor puede usar la clase
GoogleIdTokenVerifier para verificar el token y luego extraer los datos de identidad requeridos. El campo “sub” (disponible a través del método getSubject()) proporciona un identificador de cadenas estable que puede usarse para identificar a tus usuarios, aun cuando se modifique su dirección de correo electrónico, y registrarlos en tu base de datos. Se encuentran disponibles otros campos de token de Id., incluidos el nombre, la dirección de correo electrónico y la URL de la foto. A continuación, se proporciona un
ejemplo de un servlet probado en Google App Engine que puede verificar token a través de una biblioteca suministrada. Estas bibliotecas te permiten verificar el token a nivel local sin una llamada de red.
GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory)
// Here is where the audience is set -- checking that it really is your server
// based on your Server’s Client ID
.setAudience(Arrays.asList(ENTER_YOUR_SERVER_CLIENT_ID_HERE))
// Here is where we verify that Google issued the token
.setIssuer("https://accounts.google.com").build();
GoogleIdToken idToken = verifier.verify(idTokenString);
if (idToken != null) {
Payload payload = idToken.getPayload();
String userId = payload.getSubject();
// You can also access the following properties of the payload in order
// for other attributes of the user. Note that these fields are only
// available if the user has granted the 'profile' and 'email' OAuth
// scopes when requested. Even when requested, some fields may be null.
// 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");
Ten en cuenta que si tienes una aplicación en la que se usa GoogleAuthUtil para hacer que un token llegue a tu backend, debes cambiar por las bibliotecas y los mecanismos de validación de token de Id. más recientes descritos arriba. Describiremos recomendaciones para prácticas recomendadas en el servidor en una publicación futura.
En esta publicación se demuestra la manera en que deben usarse tecnologías de autenticación para garantizar que tu usuario sea quien dice ser. En la próxima publicación, trataremos el uso de la API de Google Sign-In para la autorización, de modo que los usuarios puedan, por ejemplo, acceder a servicios de Google como Google Drive desde tu aplicación y tu servicio de backend.
Puedes obtener más información sobre tecnologías de autenticación de Google en el sitio para
desarrolladores de Google Identity Platform.