Como funciona a autorização do usuário (original) (raw)

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 eFazer 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:

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:

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

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

Consentimento do usuário

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.

Como visualizar e revogar o consentimento

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.

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.