Desvincular cuentas

La desvinculación puede iniciarse desde su plataforma o Google, y la visualización de un estado de enlace coherente en ambos proporciona la mejor experiencia de usuario. La compatibilidad con un punto final de revocación de tokens o protección entre cuentas es opcional para la vinculación de cuentas de Google.

Las cuentas pueden desvincularse por cualquiera de los siguientes:

  • Solicitud de usuario de
  • Error al renovar un token de actualización caducado
  • Otros eventos iniciados por usted o Google. Por ejemplo, suspensión de cuenta por servicios de detección de amenazas y abuso.

El usuario solicitó desvincularse de Google

La desvinculación de la cuenta iniciada a través de la cuenta o aplicación de Google de un usuario elimina los tokens de actualización y acceso emitidos anteriormente, elimina el consentimiento del usuario y, opcionalmente, llama a su punto final de revocación de tokens si decide implementar uno.

El usuario solicitó desvincularse de su plataforma

Debe proporcionar un mecanismo para que los usuarios se desvinculan, como una URL a su cuenta. Si no ofrece a los usuarios una forma de desvincularse, incluya un vínculo a la cuenta de Google para que los usuarios puedan administrar su cuenta vinculada.

Puede optar por implementar la colaboración y el intercambio de riesgos e incidentes (RISC) y notificar a Google los cambios en el estado de vinculación de la cuenta de los usuarios. Esto permite una experiencia de usuario mejorada donde tanto su plataforma como Google muestran un estado de enlace actual y consistente sin la necesidad de depender de una actualización o solicitud de token de acceso para actualizar el estado de enlace.

Caducidad del token

Para proporcionar una experiencia de usuario fluida y evitar la interrupción del servicio, Google intenta renovar los tokens de actualización cerca del final de su vida útil. En algunos escenarios, es posible que se requiera el consentimiento del usuario para volver a vincular cuentas cuando no esté disponible un token de actualización válido.

Diseñar su plataforma para admitir múltiples tokens de actualización y acceso no vencidos puede minimizar las condiciones de carrera presentes en los intercambios cliente-servidor entre entornos agrupados, evitar interrupciones del usuario y minimizar los escenarios complejos de manejo de errores y tiempos. Aunque eventualmente sean consistentes, tanto los tokens no vencidos emitidos previamente como los recién emitidos pueden estar en uso por un corto período de tiempo durante el intercambio de renovación de tokens cliente-servidor y antes de la sincronización del clúster. Por ejemplo, una solicitud de Google a su servicio que utiliza el token de acceso anterior no vencido se produce justo después de que usted emita un nuevo token de acceso, pero antes de que se realice la recepción y la sincronización del clúster en Google. Se recomiendan medidas de seguridad alternativas a Refresh Token Rotation .

Otros eventos

Las cuentas se pueden desvincular por varias otras razones, como inactividad, suspensión, comportamiento malicioso, etc. En tales escenarios, su plataforma y Google pueden administrar mejor las cuentas de usuario y volver a vincularse notificándose mutuamente los cambios en el estado de la cuenta y el vínculo.

Implemente un punto final de revocación de token para que Google llame y notifique a Google de sus eventos de revocación de token mediante RISC para garantizar que su plataforma y Google mantengan un estado de enlace de cuenta de usuario constante.

Punto final de revocación de tokens

If you support an OAuth 2.0 token revocation endpoint, your platform can receive notifications from Google. This lets you inform users of link state changes, invalidate a token, and cleanup security credentials and authorization grants.

The request has the following form:

POST /revoke HTTP/1.1
Host: oauth2.example.com
Content-Type: application/x-www-form-urlencoded

client_id=GOOGLE_CLIENT_ID&client_secret=GOOGLE_CLIENT_SECRET&token=TOKEN&token_type_hint=refresh_token

Your token revocation endpoint must be able to handle the following parameters:

Revocation endpoint parameters
client_id A string that identifies the request origin as Google. This string must be registered within your system as Google's unique identifier.
client_secret A secret string that you registered with Google for your service.
token The token to be revoked.
token_type_hint (Optional) The type of token being revoked, either an access_token or refresh_token. If unspecified, defaults to access_token.

Return a response when the token is deleted or invalid. See the following for an example:

HTTP/1.1 200 Success
Content-Type: application/json;charset=UTF-8

If the token can't be deleted for any reason, return a 503 response code, as shown in the following example:

HTTP/1.1 503 Service Unavailable
Content-Type: application/json;charset=UTF-8
Retry-After: HTTP-date / delay-seconds

Google retries the request later or as requested by Retry-After.

Protección de cuentas cruzadas (RISC)

If you support Cross-Account Protection, your platform can notify Google when access or refresh tokens are revoked. This allows Google to inform users of link state changes, invalidate the token, cleanup security credentials, and authorization grants.

Cross-Account Protection is based on the RISC standard developed at the OpenID Foundation.

A Security Event Token is used to notify Google of token revocation.

When decoded, a token revocation event looks like the following example:

{
  "iss":"http://risc.example.com",
  "iat":1521068887,
  "aud":"google_account_linking",
  "jti":"101942095",
  "toe": "1508184602",
  "events": {
    "https://schemas.openid.net/secevent/oauth/event-type/token-revoked":{
      "subject_type": "oauth_token",
      "token_type": "refresh_token",
      "token_identifier_alg": "hash_SHA512_double",
      "token": "double SHA-512 hash value of token"
    }
  }
}

Security Event Tokens that you use to notify Google of token revocation events must conform to the requirements in the following table:

Token revocation events
iss Issuer Claim: This is a URL which you host, and it's shared with Google during registration.
aud Audience Claim: This identifies Google as the JWT recipient. It must be set to google_account_linking.
jti JWT ID Claim: This is a unique ID that you generate for every security event token.
iat Issued At Claim: This is a NumericDate value that represents the time when this security event token was created.
toe Time of Event Claim: This is an optional NumericDate value that represents the time at which the token was revoked.
exp Expiration Time Claim: Do not include this field, as the event resulting in this notification has already taken place.
events
Security Events Claim: This is a JSON object, and must include only a single token revocation event.
subject_type This must be set to oauth_token.
token_type This is the type of token being revoked, either access_token or refresh_token.
token_identifier_alg This is the algorithm used to encode the token, and it must be hash_SHA512_double.
token This is the ID of the revoked token.

For more information on field types and formats, see JSON Web Token (JWT).