O desvinculação pode ser iniciada na sua plataforma ou no Google, e a exibição de um estado de vinculação consistente em ambas oferece a melhor experiência do usuário. O suporte a um endpoint de revogação de token ou à proteção entre contas é opcional para a vinculação de Contas do Google.
As contas podem ser desvinculadas por qualquer um dos seguintes motivos:
- Solicitação do usuário de
- um aplicativo do Google ou as configurações da Conta do Google
- Sua plataforma
- Falha ao renovar um token de atualização expirado
- Outros eventos iniciados por você ou pelo Google. Por exemplo, suspensão da conta por serviços de detecção de abuso e ameaças.
O usuário pediu para desvincular do Google
A desvinculação da conta iniciada por uma Conta do Google ou um app de um usuário exclui todos os tokens de acesso e atualização emitidos anteriormente, remove o consentimento do usuário e, opcionalmente, chama o endpoint de revogação de token se você tiver implementado um.
O usuário pediu para desvincular da sua plataforma
Forneça um mecanismo para os usuários desvincularem, como um URL para a conta deles. Se você não oferecer uma maneira de desvincular, inclua um link para a Conta do Google para que os usuários possam gerenciar a conta vinculada.
Você pode implementar o compartilhamento e a colaboração de riscos e incidentes (RISC, na sigla em inglês) e notificar o Google sobre mudanças no status de vinculação da conta dos usuários. Isso permite uma experiência do usuário aprimorada em que sua plataforma e o Google mostram um status de vinculação atual e consistente sem a necessidade de depender de uma atualização ou de um token de acesso para atualizar o estado da vinculação.
Expiração do token
Para oferecer uma experiência tranquila ao usuário e evitar interrupções no serviço, o Google tenta renovar os tokens de atualização perto do fim da vida útil deles. Em alguns cenários, o consentimento do usuário pode ser necessário para vincular as 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 acesso e atualização não expirados pode minimizar as condições de disputa presentes nas trocas cliente-servidor entre ambientes clusterizados, evitar interrupções para o usuário e minimizar cenários complexos de tratamento de erros e tempo. Embora sejam consistentes posteriormente, os tokens anteriores e os recém-emitidos que não expiraram podem ser usados por um curto período durante a troca de renovação de token 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 depois que você emite um novo token de acesso, mas antes que o recebimento e a sincronização de cluster aconteçam no Google. Recomendamos medidas alternativas de segurança para a rotação de tokens de atualização.
Outros eventos
As contas podem ser desvinculadas por vários outros motivos, como inatividade, suspensão, comportamento malicioso e assim por diante. Nesses cenários, sua plataforma e o Google podem gerenciar melhor as contas de usuário e fazer a vinculação novamente notificando um ao outro sobre mudanças no estado da conta e da vinculação.
Implemente um endpoint de revogação de token para o Google chamar e notifique o Google sobre seus eventos de revogação de token 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_token 或 refresh_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 entre contas (RISC)
如果您支持跨账号保护功能,您的平台可以在以下情况下通知 Google: 访问或刷新令牌会被撤消。这样,Google 就可以告知用户 更改关联状态、使令牌失效、清理安全凭据 授权。
跨账号保护以 RISC 标准是 OpenID Foundation。
安全事件令牌 用于通知 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 |
Issuer Claim:这是由您托管的网址,并且会分享给 在注册过程中与 Google 联系。 | ||||||||||
aud |
受众群体声明:这可将 Google 标识为 JWT 收件人。它
必须设置为 google_account_linking。 |
||||||||||
jti |
JWT ID 声明:这是您为每次 JWT 生成的唯一 ID 安全事件令牌 | ||||||||||
iat |
Issued At Claim:这是一个 NumericDate 值
表示创建此安全性事件令牌的时间。 |
||||||||||
toe |
事件声明时间:此为可选
NumericDate 值,该值表示
已撤消。 |
||||||||||
exp |
到期时间声明:请勿包含此字段。 因为导致此通知的事件已经发生。 | ||||||||||
events |
|
||||||||||
如需详细了解字段类型和格式,请参阅 JSON 网络令牌 (JWT)。