Desvinculação de contas

A desvinculação pode ser iniciada da sua plataforma ou do Google, e a exibição de um estado de link consistente em ambas oferece a melhor experiência do usuário. A compatibilidade com um endpoint de revogação de token ou com a Proteção de várias contas é opcional para a vinculação de contas do Google.

As contas podem ser desvinculadas por qualquer um dos seguintes elementos:

  • Solicitação de usuário de
    • Um aplicativo do Google ou as configurações da Conta do Google
    • Sua plataforma
  • Falha na renovação de um token de atualização expirado
  • Outros eventos iniciados por você ou pelo Google. Por exemplo, a suspensão da conta por serviços de abuso e detecção de ameaças.

O usuário solicitou a desvinculação do Google.

A desvinculação da conta iniciada por meio da Conta do Google ou do app de um usuário exclui todos os tokens de acesso e atualização emitidos anteriormente, remove o consentimento do usuário e, como opção, chama o endpoint de revogação do token, se você optar por implementá-lo.

O usuário solicitou a desvinculação da sua plataforma

Forneça um mecanismo para os usuários desvincularem, como um URL para a conta deles. Se você não oferece uma maneira de os usuários desvincularem, inclua um link para a Conta do Google para que os usuários possam gerenciar a conta vinculada.

Você pode implementar o Compartilhamento e Colaboração em Incidentes e Risco (RISC, na sigla em inglês) e notificar o Google sobre mudanças no status de vinculação de contas de usuário. Isso permite uma experiência do usuário aprimorada, em que a plataforma e o Google mostram um status de vinculação atual e consistente sem a necessidade de depender de uma solicitação de atualização ou de token de acesso para atualizar o estado da vinculação.

Expiração do token

Para oferecer uma experiência do usuário tranquila e evitar a interrupção do serviço, o Google tenta renovar os tokens de atualização perto do fim da vida útil. Em algumas situações, o consentimento do usuário pode ser necessário para vincular contas novamente quando um token de atualização válido não está disponível.

Projetar sua plataforma para oferecer suporte a vários tokens de atualização e acesso não expirados pode minimizar as disputas presentes em trocas de clientes e servidores entre ambientes em cluster, evitar interrupções dos usuários e minimizar cenários complexos de tempo e tratamento de erros. Embora tenham consistência posterior, os tokens não expirados anteriores e recém-lançados podem ficar em uso por um curto período durante a troca de renovação do token do cliente-servidor e antes da sincronização do cluster. Por exemplo, uma solicitação do Google para seu serviço que usa o token de acesso anterior não expirado ocorre logo após a emissão de um novo token de acesso, mas antes da sincronização de recibos e clusters ocorrer no Google. Medidas alternativas de segurança para atualizar o token de rotação são recomendadas.

Outros eventos

As contas podem ser desvinculadas por vários outros motivos, como inatividade, suspensão, comportamento malicioso e assim por diante. Nessas situações, sua plataforma e o Google podem gerenciar melhor as contas de usuários e vincular novamente, notificando uns aos outros sobre mudanças no estado da conta e da vinculação.

Implemente um endpoint de revogação de token para que o Google chame e notifique o Google sobre os eventos de revogação de tokens usando o RISC para garantir que sua plataforma e o Google mantenham um estado de vinculação de conta de usuário consistente.

Endpoint de revogação de token

如果您支持OAuth 2.0令牌吊销终结点,则您的平台可以接收来自Google的通知。这使您可以通知用户链接状态更改,使令牌无效以及清理安全凭证和授权授予。

该请求具有以下形式:

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

您的令牌吊销终结点必须能够处理以下参数:

撤销端点参数
client_id一个字符串,用于将请求来源标识为Google。此字符串必须在您的系统中注册为Google的唯一标识符。
client_secret您在Google注册的用于服务的秘密字符串。
token要撤消的令牌。
token_type_hint (可选)要撤消的令牌类型,可以是access_tokenrefresh_token 。如果未指定,则默认为access_token

当令牌被删除或无效时返回响应。请参见以下示例:

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

如果由于某种原因无法删除令牌,请返回503响应代码,如以下示例所示:

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

Google稍后或按照Retry-After的要求重试该请求。

Proteção de várias contas (RISC)

如果您支持跨帐号保护,则您的平台可以在访问令牌或刷新令牌被撤消时通知 Google。这样一来,Google 就可以告知用户链接状态的变化、使令牌失效、清理安全凭据以及进行授权授权。

跨帐号保护基于 OpenID Foundation 开发的 RISC 标准

系统会使用安全事件令牌来通知 Google 令牌撤消情况。

解码后,令牌撤消事件如以下示例所示:

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

用于向 Google 通知令牌撤消事件的安全事件令牌必须符合下表中的要求:

令牌撤消事件
iss 颁发者声明:这是您托管的网址,在注册期间与 Google 共享。
aud Audience Claim:将 Google 标识为 JWT 接收者。它必须设置为 google_account_linking
jti JWT ID 声明:这是您为每个安全性事件令牌生成的唯一 ID。
iat Issued At Claim(在声明期间颁发):这是一个 NumericDate 值,表示此安全性事件令牌的创建时间。
toe Time of Event Claim:这是一个可选的 NumericDate 值,表示令牌撤消的时间。
exp 到期时间声明:请勿添加此字段,因为导致此通知的事件已经发生。
events
安全性事件声明:这是一个 JSON 对象,必须仅包含一个令牌撤消事件。
subject_type 此字段必须设置为 oauth_token
token_type 这是要撤消的令牌类型,可以是 access_tokenrefresh_token
token_identifier_alg 这是用于对令牌进行编码的算法,必须为 hash_SHA512_double
token 这是已撤消令牌的 ID。

如需详细了解字段类型和格式,请参阅 JSON Web 令牌 (JWT)