Como funciona a autorização do usuário

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Se você for novo ou não estiver familiarizado com os serviços de identidade ou autorização do Google, 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 trabalhar com mais facilidade 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 iniciar o fluxo de 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 usa apenas esses escopos, considere se um token de ID do JWT e login com o Google para login e login do usuário atendem às suas necessidades. Na maioria dos casos, esse é o método mais simples e simples disponível para a autenticação do usuário.

Principais termos e conceitos

Estes guias pressupõem que você tenha uma compreensão básica dos conceitos do OAuth 2.0 e de padrões IETF, como RFC6749. Os termos a seguir são usados em todos os guias de autorização:

  • O token de acesso é uma credencial por usuário de curta duração emitida pelo Google que é usada para chamar com segurança as APIs do Google e acessar os dados do usuário.
  • 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. A 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 armazenada na plataforma que pode ser usada com segurança para ser usada para conseguir um novo token de acesso 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 OAuth 2.0 para APIs do Google para saber mais.
  • O modo de pop-up é um fluxo de código de autorização com base em um retorno de chamada JavaScript em execução no navegador do usuário. O Google invoca o gerenciador de callback que é responsável por enviar o código de autenticação à sua plataforma. Você decide como fazer isso.
  • O modo de redirecionamento é um fluxo de código de autorização com base 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 plataforma inclui o código.

O ciclo de vida do token é definido pelo Google como emissor. A duração exata pode variar devido a vários fatores.

Fluxos do OAuth 2.0

Dois fluxos, código implícito e 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 segurança aprimorada para o 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 mais facilmente, como enviar um lembrete por SMS de uma próxima reunião programada no último minuto. O artigo Escolher um modelo de autorização explica com mais detalhes as diferenças entre os dois fluxos.

A biblioteca JavaScript do Google Identity Services segue o padrão OAuth 2.0 para:

  • gerenciar o fluxo implícito para permitir que o app da Web no navegador receba de maneira rápida e fácil um token de acesso do Google necessário para chamar as APIs do Google;
  • inicie o fluxo de código de autorização no navegador do usuário.

Etapas comuns

O fluxo do código implícito e o de autorização começam da mesma forma:

  1. Seu app solicita acesso a um ou mais escopos.
  2. O Google exibe uma caixa de diálogo de consentimento ao usuário e, se necessário, faz 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 de 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 para o endpoint do código de autorização da plataforma.
    • No modo pop-up, o código é retornado ao gerenciador de callback do app no navegador, sem que os usuários precisem sair do 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. Por fim, o resultado é um token de atualização por usuário e um token de acesso retornado à sua plataforma.

Antes de receber um token de acesso, os usuários individuais precisam autorizar o acesso do seu app aos escopos solicitados. Para fazer isso, o Google exibe uma caixa de diálogo de consentimento durante a etapa 2 acima 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 exibidos ao usuário, além da opção de aprovar ou cancelar a solicitação.

Na Figura 1, a caixa de diálogo de consentimento de um único escopo é mostrada. Quando um único escopo é solicitado, nenhuma caixa de seleção é necessária 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 será exibida.

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 for solicitado, caixas de seleção individuais serão necessárias para permitir que o usuário aprove ou negue cada escopo.

Caixa de diálogo de consentimento do usuário com vários botões "Cancel" ou "Continue" e cada escopo 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 precisam se autenticar no Google ao fazer login em uma Conta do Google.

Embora não seja um requisito, é recomendável usar o recurso Iniciar sessão com o Google para se inscrever e fazer login no seu app da Web ou plataforma de back-end. Isso reduz o atrito do usuário, minimizando o número de etapas necessárias e, opcionalmente, associa facilmente os tokens de acesso a contas individuais na sua plataforma.

Por exemplo, o recurso Iniciar sessão com o Google estabelece uma sessão ativa da Conta do Google, evitando, assim, a necessidade de solicitar mais tarde ao usuário que faça login em uma Conta do Google ao fazer uma solicitação de autorização. Se você autenticar os usuários no seu 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 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 ignore a exibição de um seletor de conta, economizando uma etapa dos 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 apenas do Google para autenticação do usuário, optando por não implementar um sistema de gerenciamento de contas do 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 conta de usuário é exigido pelo fluxo do código de autorização. Os tokens de atualização por usuário precisam estar associados a uma conta individual na sua plataforma de back-end e armazenados para uso posterior. Como implementar, trabalhar com e gerenciar um sistema de conta de usuário é exclusivo da sua plataforma e não será discutido em mais detalhes.

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

Opcionalmente, seu app da Web ou plataforma pode 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 plataforma.

Outras opções de autorização

Os navegadores também podem conseguir tokens de acesso usando o fluxo implícito chamando diretamente os endpoints do OAuth 2.0 do Google, conforme descrito no artigo OAuth 2.0 para aplicativos da Web do lado do cliente.

Da mesma forma, para o fluxo do código de autorização, é possível implementar seus próprios métodos e seguir as etapas descritas em Como usar o OAuth 2.0 para aplicativos de servidor da Web.

Nos dois casos, é altamente recomendável usar a biblioteca de serviços de identidade do Google para reduzir o tempo e o esforço de desenvolvimento e minimizar os riscos de segurança, como os descritos pela Prática recomendada de segurança atual do OAuth 2.0.