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
Se você oferece suporte a um endpoint de revogação de token OAuth 2.0, sua plataforma pode receber notificações do Google. Isso permite informar aos usuários sobre mudanças no estado do link, invalidar um token e limpar as credenciais de segurança e as concessões de autorização.
A solicitação tem o seguinte formato:
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
O endpoint de revogação de token precisa processar os seguintes parâmetros:
| Parâmetros do endpoint de revogação | |
|---|---|
client_id |
Uma string que identifica a origem da solicitação como o Google. Essa string precisa ser registrada no seu sistema como o identificador exclusivo do Google. |
client_secret |
É uma string secreta registrada no Google para seu serviço. |
token |
O token a ser revogado. |
token_type_hint |
(Opcional) O tipo de token que está sendo revogado, um
access_token ou refresh_token. Se não for especificado,
o padrão será access_token. |
Retorne uma resposta quando o token for excluído ou inválido. Confira um exemplo a seguir:
HTTP/1.1 200 Success Content-Type: application/json;charset=UTF-8
Se o token não puder ser excluído por qualquer motivo, retorne um código de resposta 503, conforme mostrado no exemplo a seguir:
HTTP/1.1 503 Service Unavailable Content-Type: application/json;charset=UTF-8 Retry-After: HTTP-date / delay-seconds
O Google tenta fazer a solicitação novamente mais tarde ou conforme solicitado por Retry-After.
Proteção entre contas (RISC)
Se você oferece suporte à Proteção entre contas, sua plataforma pode notificar o Google quando tokens de atualização ou acesso são revogados. Isso permite que o Google informe os usuários sobre mudanças de estado do link, invalidar o token, limpar credenciais de segurança e concessões de autorização.
A Proteção entre contas tem como base o padrão RISC desenvolvido Fundação OpenID.
Um token de evento de segurança é usado para notificar o Google sobre a revogação do token.
Quando decodificado, um evento de revogação de token é semelhante ao exemplo a seguir:
{
"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"
}
}
}
Tokens de evento de segurança que você usa para notificar o Google sobre eventos de revogação de token devem estar em conformidade com os requisitos da tabela a seguir:
| Eventos de revogação de token | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
iss |
Declaração do emissor:um URL que você hospeda e é compartilhado com ele Google durante o registro. | ||||||||||
aud |
Declaração de público-alvo:identifica o Google como destinatário do JWT. Ela
precisa ser definido como google_account_linking. |
||||||||||
jti |
Declaração de ID do JWT:esse é um ID exclusivo gerado para cada token de evento de segurança. | ||||||||||
iat |
Emitido na reivindicação: este é um valor de NumericDate.
que representa a hora em que o token de evento de segurança foi criado. |
||||||||||
toe |
Time of Event Claim:é um campo opcional.
O valor NumericDate que representa o momento em que
O token foi revogado. |
||||||||||
exp |
Declaração de prazo de validade: não inclua este campo, porque o evento que resultou nessa notificação já ocorreu. | ||||||||||
events |
|
||||||||||
Para mais informações sobre tipos e formatos de campos, consulte JSON Web Token (JWT).