Como funciona a autorização do usuário

Se você não conhece os Serviços de Identificação do Google ou a autorização, comece lendo a visão geral.

O Google oferece uma biblioteca JavaScript que inclui recursos de autorização para ajudar você a gerenciar escopos, receber o consentimento do usuário e simplificar o trabalho com fluxos OAuth 2.0 padrão. O aplicativo da Web, executado no navegador do usuário, usa essa biblioteca para gerenciar o fluxo implícito do OAuth 2.0 ou para iniciar o fluxo do código de autorização que termina na plataforma de back-end.

Escopos somente de autenticação

Vários escopos são usados apenas para autenticação do usuário: email, profile e openid. Se o app usar apenas esses escopos, considere se um token de ID JWT e Fazer login com o Google para inscrição e login do usuário atendem às suas necessidades. Na maioria dos casos, esse é o método mais simples disponível para autenticação do usuário.

Principais termos e conceitos

Estes guias pressupõem que você tenha um conhecimento básico dos conceitos do OAuth 2.0 e dos padrões da IETF, como o RFC6749. Os termos a seguir são usados nos guias de autorização:

  • O token de acesso é uma credencial de curta duração por usuário emitida pelo Google que é usada para chamar APIs do Google e acessar dados do usuário com segurança.
  • O código de autorização é um código temporário emitido pelo Google para identificar com segurança usuários individuais que fazem login na Conta do Google em um navegador. Sua plataforma de back-end troca esse código por tokens de acesso e atualização.
  • O token de atualização é uma credencial de longa duração por usuário emitida pelo Google que é armazenada com segurança na sua plataforma e pode ser usada para receber um token de acesso novo e válido, mesmo quando o usuário não está presente.
  • O escopo restringe os tokens a uma quantidade definida e limitada de dados do usuário. Consulte Escopos do OAuth 2.0 para APIs do Google para saber mais.
  • O modo pop-up é um fluxo de código de autorização baseado em um callback JavaScript executado no navegador do usuário. O Google invoca o gerenciador de callback, que é responsável por enviar o código de autenticação para sua plataforma. A forma como isso é feito depende de você.
  • O modo de redirecionamento é um fluxo de código de autorização baseado em redirecionamentos HTTP. O user agent é redirecionado primeiro para o Google. Um segundo redirecionamento do Google para o endpoint de código de autorização da sua plataforma inclui o código.

Os tempos de vida do token são definidos pelo Google, como emissor. Devido a vários fatores, a duração exata pode variar.

Fluxos do OAuth 2.0

Dois fluxos, implícito e de código de autorização, são discutidos. Ambos retornam um token de acesso adequado para uso com as APIs do Google.

O fluxo do código de autorização é recomendado porque oferece maior segurança ao usuário. Esse fluxo também retorna um token de atualização que pode ser usado para receber tokens de acesso sem que o usuário esteja presente, permitindo que sua plataforma execute ações assíncronas, como enviar um lembrete por SMS de uma reunião agendada no último minuto. Escolher um modelo de autorização explica as diferenças entre os dois fluxos com mais detalhes.

A biblioteca JavaScript dos Serviços de Identificação do Google segue o padrão OAuth 2.0 para:

  • gerenciar o fluxo implícito para permitir que o app da Web no navegador receba rapidamente um token de acesso do Google necessário para chamar as APIs do Google.
  • iniciar o fluxo do código de autorização no navegador do usuário.

Etapas comuns

Os fluxos implícito e de código de autorização começam da mesma maneira:

  1. O app solicita acesso a um ou mais escopos.
  2. O Google mostra uma caixa de diálogo de consentimento ao usuário e, se necessário, primeiro faz o login na Conta do Google.
  3. O usuário aprova individualmente cada escopo solicitado.

Cada fluxo termina com etapas diferentes.

Ao usar o fluxo implícito

  • O Google usa um gerenciador de callback para notificar seu app sobre o resultado do consentimento e retornar um token de acesso para todos os escopos aprovados.

Ao usar o fluxo do código de autenticação

  • O Google responde com um código de autorização por usuário:
    • No modo de redirecionamento, o código é retornado ao endpoint de código de autorização da sua plataforma.
    • No modo de caixa de diálogo, o código é retornado ao gerenciador de callback do app no navegador, sem que os usuários precisem sair do seu site.
  • A partir da Etapa 4: processar a resposta do servidor OAuth 2.0, sua plataforma de back-end conclui uma troca de servidor para servidor com o Google, resultando em um token de atualização e um token de acesso por usuário que são retornados à sua plataforma.

Antes de receber um token de acesso, os usuários individuais precisam conceder consentimento para que o app acesse os escopos solicitados. Para fazer isso, o Google mostra uma caixa de diálogo de consentimento durante a etapa 2 e registra o resultado em myaccount.google.com/permissions.

O nome, o logotipo, a Política de Privacidade, os Termos de Serviço e os escopos solicitados do app são mostrados ao usuário, juntamente com a opção de aprovar ou cancelar a solicitação.

Na Figura 1, a caixa de diálogo de consentimento para um único escopo é mostrada. Quando um único escopo é solicitado, não é necessário marcar caixas de seleção para aprovar ou negar um escopo.

Caixa de diálogo de consentimento do usuário com botões "Cancelar" ou "Continuar" e um único escopo. Nenhuma caixa de seleção é mostrada.

Figura 1:caixa de diálogo de consentimento do usuário com um único escopo.

Na Figura 2, a caixa de diálogo de consentimento para vários escopos é mostrada. Quando mais de um escopo é solicitado, caixas de seleção individuais são necessárias para permitir que o usuário aprove ou negue cada escopo.

Caixa de diálogo de consentimento do usuário com botões "Cancelar" ou "Continuar" e vários escopos, cada um com um seletor de caixa de seleção.

Figura 2:caixa de diálogo de consentimento do usuário com vários escopos.

Contas de usuário

É necessário ter uma Conta do Google para registrar o consentimento e emitir um token de acesso. Antes disso, os usuários individuais precisam se autenticar no Google fazendo login em uma Conta do Google.

Embora não seja um requisito, recomendamos que o recurso Fazer login com o Google seja usado para inscrição e login no app da Web ou na plataforma de back-end. Isso reduz o atrito do usuário, minimizando o número de etapas necessárias e, opcionalmente, permite associar tokens de acesso a contas individuais na sua plataforma.

Por exemplo, o uso do recurso Fazer login com o Google estabelece uma sessão ativa da Conta do Google, evitando a necessidade de pedir ao usuário que faça login em uma Conta do Google ao fazer uma solicitação de autorização. Se você optar por autenticar usuários no app por outros meios, como nome de usuário e senha ou outros provedores de identidade, eles ainda precisarão fazer login em uma Conta do Google para consentimento.

Adicionar uma dica de login durante a inicialização da autorização, normalmente o endereço de e-mail da Conta do Google do usuário, permite que o Google pule a exibição de um seletor de contas, economizando uma etapa para os usuários. A credencial do token de ID retornada pelo recurso Fazer login com o Google contém o endereço de e-mail do usuário.

Os apps da Web executados apenas no navegador podem depender exclusivamente do Google para autenticação do usuário, optando por não implementar um sistema de gerenciamento de contas de usuário. Nesse cenário, conhecido como fluxo implícito, não é necessário associar um token de atualização a uma conta de usuário e ao armazenamento seguro de gerenciamento.

Como alternativa, um sistema de contas de usuário é exigido pelo fluxo do código de autorização. Os tokens de atualização por usuário precisam ser associados a uma conta individual na plataforma de back-end e armazenados para uso posterior. A implementação, o trabalho e o gerenciamento de um sistema de contas de usuário são exclusivos da sua plataforma e não são discutidos com mais detalhes.

Os usuários podem visualizar ou revogar o consentimento a qualquer momento nas configurações da Conta do Google.

Opcionalmente, o app ou a plataforma da Web podem chamar google.accounts.oauth2.revoke para revogar tokens e remover o consentimento do usuário, o que é útil quando um usuário exclui a conta da sua plataforma.

Outras opções de autorização

Como alternativa, os navegadores podem receber tokens de acesso usando o fluxo implícito, chamando diretamente os endpoints do OAuth 2.0 do Google, conforme descrito em OAuth 2.0 para aplicativos da Web do lado do cliente.

Da mesma forma, para o fluxo do código de autorização, você pode implementar seus próprios métodos e seguir as etapas descritas em Usar o OAuth 2.0 para aplicativos de servidor da Web.

Em ambos os casos, recomendamos o uso da biblioteca dos Serviços de Identificação do Google para reduzir o tempo e o esforço de desenvolvimento e minimizar os riscos de segurança, como os descritos em Práticas recomendadas de segurança do OAuth 2.0.