Se você for novo ou não estiver familiarizado com os serviços de identidade ou autorização do Google, leia 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. O 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 plataforma de back-end.
Escopos somente de autenticação
Vários escopos são usados apenas para a autenticação do usuário: email
, profile
e openid
. Se o app usar apenas esses escopos, considere se um token de ID do JWT e
Sign In with Google para inscrição 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
Para seguir estes guias, é necessário ter uma compreensão básica dos conceitos do OAuth 2.0 e dos padrões IETF, como o 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 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. 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 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 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 do 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 à plataforma. Você decide como fazer isso.
- 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 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, 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, pois oferece segurança aprimorada 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 reunião futura programada no último minuto. Em Escolher um modelo de autorização, há mais detalhes sobre 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 um token de acesso do Google de maneira rápida e fácil, necessário para chamar as APIs do Google;
- iniciar o fluxo do código de autorização a partir do navegador do usuário.
Etapas comuns
O fluxo do código implícito e de autorização começam da mesma forma:
- Seu app solicita acesso a um ou mais escopos.
- O Google exibe uma caixa de diálogo de consentimento para o usuário e, se necessário, primeiro ele faz login na Conta do Google dele.
- 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 o 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: processar a resposta do servidor OAuth 2.0, a 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 retornados à plataforma.
Consentimento do usuário
Antes de receber um token de acesso, os usuários precisam autorizar o acesso dos aplicativos aos 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 do aplicativo, o logotipo, a Política de Privacidade, os Termos de Serviço e os escopos solicitados são exibidos ao usuário com a opção de aprovar ou cancelar a solicitação.
Na figura 1, é exibida 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.
Figura 1: caixa de diálogo de consentimento do usuário com um único escopo.
Na figura 2, é exibida a caixa de diálogo de consentimento para vários escopos. 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.
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 fazendo login em uma Conta do Google.
Embora não seja um requisito, é recomendável que o recurso faça 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 tokens de acesso a contas individuais na sua plataforma.
Por exemplo, usar o recurso Fazer login com o Google estabelece uma sessão ativa da 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 os usuários no seu app de outras formas, como nome de usuário e senha ou com 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 ignore a exibição de um seletor de conta, economizando uma etapa. A credencial do token de ID retornada pelo 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 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 estar associados a uma conta individual na sua plataforma de back-end e armazenados para uso posterior. A forma de implementar, trabalhar e gerenciar um sistema de conta de usuário é exclusiva da sua plataforma e não é discutida em mais detalhes.
Como visualizar e revogar o consentimento
Os usuários podem visualizar ou revogar o consentimento a qualquer momento nas configurações da Conta do Google.
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 sua plataforma.
Outras opções de autorização
Como alternativa, os navegadores podem conseguir tokens de acesso usando o fluxo implícito chamando diretamente os pontos de extremidade do OAuth 2.0 do Google, conforme descrito pelo OAuth 2.0 para aplicativos da Web do lado do cliente.
Da mesma forma, para o fluxo de 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, recomendamos o uso da biblioteca do Google Identity Services 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 do OAuth 2.0 (em inglês).