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

Si admite un extremo de revocación de token de OAuth 2.0, su plataforma puede recibir notificaciones de Google. Esto le permite informar a los usuarios de los cambios de estado de los enlaces, invalidar un token y limpiar las credenciales de seguridad y las autorizaciones.

La solicitud tiene la siguiente forma:

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

Su punto final de revocación de token debe poder manejar los siguientes parámetros:

Parámetros de punto final de revocación
client_id Una cadena que identifica el origen de la solicitud como Google. Esta cadena debe estar registrada en su sistema como identificador único de Google.
client_secret Una cadena secreta que registró en Google para su servicio.
token El token que se va a revocar.
token_type_hint (Opcional) El tipo de token que se está access_token , ya sea un access_token o un refresh_token . Si no se especifica, el valor predeterminado es access_token .

Devuelve una respuesta cuando el token se elimina o no es válido. Vea lo siguiente para ver un ejemplo:

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

Si el token no se puede eliminar por algún motivo, devuelva un código de respuesta 503, como se muestra en el siguiente ejemplo:

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

Google vuelve a intentar la solicitud más tarde o según lo solicite Retry-After .

Protección de cuentas cruzadas (RISC)

Si admite la protección de cuentas cruzadas, su plataforma puede notificar a Google cuando se revoquen los tokens de acceso o actualización. Esto permite a Google informar a los usuarios de los cambios en el estado del enlace, invalidar el token, limpiar las credenciales de seguridad y otorgar autorizaciones.

La protección de cuentas cruzadas se basa en el estándar RISC desarrollado en OpenID Foundation.

Se utiliza un token de evento de seguridad para notificar a Google sobre la revocación del token.

Cuando se decodifica, un evento de revocación de token se parece al siguiente ejemplo:

{
  "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"
    }
  }
}

Los tokens de eventos de seguridad que utilice para notificar a Google sobre eventos de revocación de tokens deben cumplir con los requisitos de la siguiente tabla:

Eventos de revocación de tokens
iss Reclamo del emisor: esta es una URL que usted aloja y se comparte con Google durante el registro.
aud Reclamación de audiencia: esto identifica a Google como el destinatario de JWT. Debe establecerse en google_account_linking .
jti Reclamación de ID de JWT: esta es una ID única que genera para cada token de evento de seguridad.
iat Emitido en la reclamación: este es un valor NumericDate que representa el momento en que se creó este token de evento de seguridad.
toe Hora de la reclamación del evento: este es un valor NumericDate opcional que representa la hora a la que se revocó el token.
exp Reclamación de tiempo de vencimiento: no incluya este campo, ya que el evento que generó esta notificación ya se ha producido.
events
Reclamación de eventos de seguridad: este es un objeto JSON y debe incluir solo un evento de revocación de token.
subject_type Debe establecerse en oauth_token .
token_type Este es el tipo de token que se está access_token , ya sea access_token o refresh_token .
token_identifier_alg Este es el algoritmo utilizado para codificar el token y debe ser hash_SHA512_double .
token Este es el ID del token revocado.

Para obtener más información sobre los tipos y formatos de campo, consulte JSON Web Token (JWT) .