API Users para serviços agrupados legados

Com a API Users um aplicativo pode:

  • detectar se o usuário atual fez login;
  • redirecionar o usuário para a página de login correta;
  • solicitar que o usuário do aplicativo crie uma nova conta do Google se ainda não tiver uma.

Quando um usuário está conectado ao aplicativo, o app pode acessar o endereço de e-mail, além de um ID do usuário único. É possível detectar se o usuário atual é um administrador, também chamado de "usuário administrador", o que facilita a implementação de áreas exclusivas do administrador do aplicativo.

Autenticação de usuário no Python 2

No exemplo a seguir, um usuário que se conectou ao aplicativo recebe uma mensagem personalizada de saudação e um link para sair. Se o usuário não estiver conectado, o aplicativo oferece um link para a página de login das Contas do Google.

Primeiro, importe o módulo google.appengine.api.users.

from google.appengine.api import users

Em seguida, use-o para buscar informações do usuário:

user = users.get_current_user()
if user:
    nickname = user.nickname()
    logout_url = users.create_logout_url('/')
    greeting = 'Welcome, {}! (<a href="{}">sign out</a>)'.format(
        nickname, logout_url)
else:
    login_url = users.create_login_url('/')
    greeting = '<a href="{}">Sign in</a>'.format(login_url)

Login e acesso de administrador obrigatórios com app.yaml

Se você tem páginas que exigem que o usuário faça login para acessá-las, é possível aplicar isso no arquivo app.yaml. Se um usuário acessa um URL configurado para exigir login, mas não está conectado, esse usuário é redirecionado pelo App Engine para a página de login do Google apropriada e levado de volta ao URL do aplicativo depois de se conectar ou se registrar com sucesso.

A configuração do gerenciador também pode exigir que o usuário seja um administrador registrado no aplicativo, ou seja, o usuário precisa ter o papel de Visualizador, Editor, Proprietário ou Administrador do App Engine. Isso facilita a criação de seções exclusivas para administradores do site, sem a necessidade de implementar um mecanismo de autorização separado.

Para saber como configurar a autenticação de URLs, veja como exigir status de administrador ou login na referência do app.yaml.

Opções de autenticação

O aplicativo pode autenticar usuários usando uma destas opções:

  • uma Conta do Google
  • uma conta no domínio do Google Workspace

Como escolher uma opção de autenticação

Depois de criar o aplicativo, é possível escolher a opção de autenticação que você quer usar. Por padrão, o aplicativo usará Contas do Google para autenticação. Se você quiser escolher outra opção, como o domínio do Google Workspace, acesse a página de configurações do projeto no console do Google Cloud e clique em Editar. No menu suspenso Autenticação do Google, selecione o tipo de autenticação de sua escolha e clique em Salvar.

Como fazer login e logout

Um aplicativo pode detectar se o usuário fez login com a opção de autenticação escolhida do aplicativo. Se o usuário não estiver conectado, ele poderá ser direcionado pelo aplicativo às Contas do Google para fazer login ou criar uma nova conta. O aplicativo obtém o URL da página de login chamando um método da API Users. O aplicativo pode exibir esse URL como um link ou emitir um redirecionamento HTTP para o URL quando o usuário visitar uma página que exija autenticação.

Se o aplicativo usar Contas do Google ou Google Workspace para autenticação, o nome do aplicativo aparecerá na página de login quando o usuário fizer login no aplicativo. O nome mostrado é o nome do aplicativo que você especificou ao registrá-lo. É possível alterar esse nome no campo Nome do aplicativo da página Credenciais do console do Google Cloud.

Depois que o usuário faz login ou cria uma conta do Google, ele é redirecionado para o aplicativo novamente. O aplicativo fornece o URL de redirecionamento ao método que gera o URL de login.

A API Users inclui um método que gera um URL para sair do aplicativo. O URL de logout cancela a autenticação do usuário do aplicativo e o redireciona para o URL do aplicativo sem exibir nada.

Um usuário não estará conectado a um aplicativo até que o login seja solicitado e ele insira o endereço de e-mail e a senha da conta. Isso é válido mesmo se o usuário tiver feito login em outros aplicativos usando a Conta do Google.

Como acessar informações da conta

Enquanto um usuário estiver conectado, o app poderá acessar o endereço de e-mail da conta para cada solicitação feita. O app também terá acesso a um ID exclusivo que identifica o usuário, mesmo que ele altere o endereço de e-mail da conta.

O aplicativo também pode determinar se o usuário atual é um administrador do aplicativo. Um usuário administrador é qualquer usuário que tenha o papel de Leitor, Editor, Proprietário ou Administrador do App Engine. É possível usar essa funcionalidade para criar recursos administrativos para o aplicativo, ainda que você não autentique usuários. As APIs Go, Java, PHP e Python facilitam a configuração de URLs como "somente administrador".

Usuários e o armazenamento de dados

A API do serviço Usuários pode retornar as informações do usuário atual como um objeto User. Os objetos User podem ser salvos como um valor de propriedade no armazenamento de dados. No entanto, é altamente recomendável evitar isso, porque esse tipo de armazenamento inclui o endereço de e-mail e o ID exclusivo do usuário. Se um usuário alterar o endereço de e-mail, e você comparar o User antigo armazenado com o novo valor de User, eles não serão correspondentes. Em vez disso, use o valor de ID do usuário User como o identificador exclusivo estável do usuário.

Contas do Google e o servidor de desenvolvimento

O servidor de desenvolvimento simula o sistema de Contas do Google usando uma tela de login falsa. Quando o aplicativo chama a API Users para conseguir o URL da tela de login, a API retorna um URL especial do servidor de desenvolvimento que solicita um endereço de e-mail, mas não uma senha. Digite qualquer endereço de e-mail nessa solicitação e o aplicativo se comportará como se você tivesse feito login usando uma conta com esse endereço.

A tela de login falsa também inclui uma caixa de seleção que indica se a conta falsa é um administrador. Ou seja, se a conta tem o papel de Leitor, Editor, Proprietário ou Administrador do App Engine. você marcar essa caixa de seleção, o aplicativo se comportará como se você tivesse feito login usando uma conta de administrador.

Da mesma forma, a API Users retorna um URL de logout que cancela o login falso.

O ID exclusivo de um objeto User no servidor de desenvolvimento é calculado a partir do endereço de e-mail. Dois endereços de e-mail exclusivos sempre representam dois usuários exclusivos no servidor de desenvolvimento.