Desvinculação de contas

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
Declaração de eventos de segurança: é um objeto JSON e precisa incluir apenas um evento de revogação de token.
subject_type Ele precisa ser definido como oauth_token.
token_type Esse é o tipo de token que está sendo revogado access_token ou refresh_token.
token_identifier_alg Esse é o algoritmo usado para codificar o token e deve ser hash_SHA512_double:
token Este é o ID do token revogado.

Para mais informações sobre tipos e formatos de campos, consulte JSON Web Token (JWT).