Desvinculando contas

A desvinculação pode ser iniciada em sua plataforma ou no Google, e a exibição de um estado de link consistente em ambos fornece a melhor experiência do usuário. O suporte para um endpoint de revogação de token ou proteção entre contas é opcional para vinculação de contas do Google.

As contas podem ser desvinculadas por qualquer um dos seguintes:

  • Solicitação do usuário de
  • Falha ao renovar um token de atualização expirado
  • Outros eventos iniciados por você ou pelo Google. Por exemplo, suspensão de conta por abuso e serviços de 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 aplicativo de um usuário exclui todos os tokens de acesso e atualização emitidos anteriormente, remove o consentimento do usuário e, opcionalmente, chama seu endpoint de revogação de token se você optar por implementar um.

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

Você deve fornecer um mecanismo para os usuários desvincularem, como um URL para suas contas. Se você não oferecer uma maneira de desvincular os usuários, inclua um link para a Conta do Google para que os usuários possam gerenciar suas contas vinculadas.

Você pode optar por implementar o Compartilhamento e Colaboração de Risco e Incidente (RISC) e notificar o Google sobre as alterações no status de vinculação da conta do usuário. 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 solicitação de token de acesso para atualizar o estado de vinculação.

Expiração de token

Para fornecer uma experiência tranquila ao usuário e evitar a interrupção do serviço, o Google tenta renovar tokens de atualização perto do fim de sua vida útil. Em alguns cenários, o consentimento do usuário pode ser necessário para reconectar contas quando um token de atualização válido não estiver disponível.

Projetar sua plataforma para oferecer suporte a vários tokens de atualização e acesso não expirados pode minimizar as condições de corrida presentes nas trocas cliente-servidor entre ambientes em cluster, evitar a interrupção do usuário e minimizar cenários complexos de gerenciamento de tempo e erro. Embora eventualmente consistentes, tanto os tokens não expirados anteriores quanto os recém-emitidos podem estar em uso por um curto período de tempo durante a troca de renovação do token cliente-servidor e antes da sincronização do cluster. Por exemplo, uma solicitação do Google para o seu serviço que usa o token de acesso anterior não expirado ocorre logo após você emitir um novo token de acesso, mas antes do recebimento e da sincronização do cluster no Google. São recomendadas medidas de segurança alternativas para atualizar a rotação do token .

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 vincular novamente, notificando um ao outro sobre as alterações na conta e no estado do link.

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 RISC para garantir que sua plataforma e o Google mantenham um estado de link de conta de usuário consistente.

Endpoint de revogação de token

Se você oferece suporte a um ponto de extremidade de revogação de token OAuth 2.0, sua plataforma pode receber notificações do Google. Isso permite que você informe os usuários sobre as alterações de estado do link, invalide um token e limpe 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

Seu endpoint de revogação de token deve ser capaz de lidar com os seguintes parâmetros:

Parâmetros de endpoint de revogação
client_id Uma string que identifica a origem da solicitação como Google. Esta string deve ser registrada em seu sistema como identificador exclusivo do Google.
client_secret Uma string secreta que você registrou no Google para seu serviço.
token O token a ser revogado.
token_type_hint (Opcional) O tipo de token sendo revogado, um access_token ou refresh_token . Se não for especificado, o padrão é access_token .

Retorne uma resposta quando o token for excluído ou inválido. Veja o seguinte para um exemplo:

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

Se o token não puder ser excluído por algum 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 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 o acesso ou atualização de tokens forem revogados. Isso permite que o Google informe os usuários sobre as alterações de estado do link, invalide o token, limpe as credenciais de segurança e as autorizações concedidas

A proteção entre contas é baseada no padrão RISC desenvolvido na OpenID Foundation.

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 se parece com o seguinte exemplo:

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

Os 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 Reivindicação do emissor: este é um URL que você hospeda e é compartilhado com o Google durante o registro.
aud Reivindicação de público: identifica o Google como o destinatário do JWT. Deve ser definido como google_account_linking .
jti Declaração de ID JWT: esta é uma ID exclusiva que você gera para cada token de evento de segurança.
iat Emitido na reivindicação: este é um valor NumericDate que representa a hora em que este token de evento de segurança foi criado.
toe Hora da reivindicação do evento: este é um valor NumericDate opcional que representa a hora em que o token foi revogado.
exp Prazo de Vencimento Reivindicação: não incluir neste campo, como o evento que resultou na presente notificação já ocorreu.
events
Declaração de eventos de segurança: este é um objeto JSON e deve incluir apenas um único evento de revogação de token.
subject_type Deve ser definido como oauth_token .
token_type Este é o tipo de token que está sendo revogado, access_token ou refresh_token .
token_identifier_alg Este é o algoritmo usado para codificar o token e deve ser hash_SHA512_double .
token Este é o ID do token revogado.

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