Como funciona a autorização do usuário

Se você não estiver familiarizado com os Serviços de Identificação do Google ou com a 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 mais facilmente com fluxos padrão do OAuth 2.0. Seu aplicativo da Web, em execução 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 sua plataforma de back-end.

Escopos somente de autenticação

Vários escopos são usados apenas para autenticação de usuário: email, profile e openid. Se o app usa 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 direto e simples disponível para autenticação do usuário.

Principais termos e conceitos

Esses guias pressupõem que você tenha um conhecimento básico dos conceitos do OAuth 2.0 e dos 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 de curta duração por usuário 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 os usuários 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 usuário de longa duração emitida pelo Google que é armazenada com segurança na plataforma e pode ser usada para receber um novo token de acesso válido mesmo quando o usuário não estiver 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 com base em um callback JavaScript em execução no navegador do usuário. O Google invoca seu gerenciador de callback, que é responsável por enviar o código de autenticação para sua plataforma. Você decide como fazer isso.
  • O modo de redirecionamento é um fluxo de código de autorização baseado em redirecionamentos HTTP. Primeiro, o user agent é redirecionado para o Google. Depois, um segundo redirecionamento do Google para o endpoint do código de autorização da plataforma inclui o código.

A vida útil do token é definida pelo Google, como emissor. Devido a vários fatores, a duração exata pode variar.

Fluxos do OAuth 2.0

Dois fluxos, o código de autorização implícito e o código de autorização são discutidos. Ambos retornam um token de acesso adequado para uso com 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 a presença do usuário. Isso permite que a plataforma execute ações assíncronas com mais facilidade, como enviar um lembrete por SMS de uma próxima reunião agendada no último minuto. O artigo Escolher um modelo de autorização explica em mais detalhes as diferenças entre os dois fluxos.

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 seu app da Web no navegador receba de maneira rápida e fácil um token de acesso do Google necessário para chamar APIs do Google.
  • iniciar o fluxo do código de autorização no navegador do usuário.

Etapas comuns

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

  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, primeiro faz o login dele 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 callbacks 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 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: lidar com a resposta do servidor OAuth 2.0, a plataforma de back-end conclui uma troca de servidor para servidor com o Google, resultando no retorno de um token de atualização e de acesso por usuário para sua plataforma.

Antes de receber um token de acesso, os usuários individuais precisam autorizar que seu app acesse os escopos solicitados. Para 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 seu app são mostrados ao usuário com a opção de aprovar ou cancelar a solicitação.

Na Figura 1, é mostrada a caixa de diálogo de consentimento para um único escopo. 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 é mostrada.

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

Na Figura 2, é mostrada a caixa de diálogo de consentimento para vários escopos. 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 escopo tem 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 precisavam fazer login em uma Conta do Google para se autenticar no Google.

Embora não seja obrigatório, recomendamos usar o recurso Fazer login 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, permite que você associe facilmente os tokens de acesso a contas individuais na sua plataforma.

Por exemplo, usar o recurso "Fazer login com o Google" estabelece uma sessão ativa de Conta do Google, evitando a necessidade de solicitar posteriormente que o usuário faça login em uma Conta do Google ao fazer uma solicitação de autorização. Se você optar por autenticar usuários no seu app por outros meios, como nome de usuário e senha ou outros provedores de identidade, eles ainda vão precisar fazer login primeiro em uma Conta do Google para receber 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 conta, economizando uma etapa aos 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 conta 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 sua plataforma de back-end e armazenados para uso posterior. A maneira de implementar, trabalhar e gerenciar um sistema de conta de usuário é exclusiva da sua plataforma e não é discutida em mais detalhes.

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

O 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 ele exclui a própria conta da 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 optar por implementar seus próprios métodos e seguir as etapas descritas em Como usar o OAuth 2.0 para aplicativos de servidor da Web.

Em ambos os casos, é altamente recomendável usar a biblioteca de 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.