Como autenticar usuários

Nesta página, você aprenderá a adicionar suporte à API para autenticação de usuários a partir de aplicativos cliente usando o Cloud Endpoints Frameworks. Atualmente, só há suporte para clientes Android e JavaScript.

O Endpoints Frameworks oferece suporte à autenticação de usuários de aplicativos clientes que usam qualquer uma das seguintes metodologias:

Não importa o método de autenticação usado, para verificar a autenticação adequada para cada método de API, é preciso checar se há User, conforme descrito nas seções a seguir:

Pré-requisitos

Nesta página, presume-se que você já:

  • criou um projeto do Google Cloud;

  • adicionou gerenciamento de API.

  • Se você usa o JWT no cliente para enviar solicitações autenticadas à API, ele precisa estar no cabeçalho de autorização de uma solicitação HTTP e ter as seguintes reivindicações obrigatórias:

    • iss
    • sub
    • aud
    • iat
    • exp

Autenticar com o Firebase Auth

Para oferecer suporte a chamadas de clientes que usam Firebase Auth:

  1. Importe a API do App Engine Cloud Endpoints na classe de API:

    import endpoints
    
  2. Adicione um objeto emissor do Firebase referente a cada cliente ao decorador de API. Exemplo:

    @endpoints.api(
        name='YOUR_API_NAME',
        version='VERSION_NUMBER',
        issuers={'firebase': endpoints.Issuer(
            'https://securetoken.google.com/YOUR_PROJECT_ID,
            'https://www.googleapis.com/service_accounts/VERSION_NUMBER/metadata/x509/securetoken@system.gserviceaccount.com')})
    
    • Substitua YOUR_API_NAME pelo nome da API.
    • Substitua VERSION_NUMBER por sua versão da API, por exemplo, v1.
    • Substitua o código > YOUR_PROJECT_ID pelo ID do projeto do Google Cloud do cliente.
  3. Em cada método de API em que você quer verificar a autenticação adequada, verifique se há um User válido e aumente error 401 se não houver, como mostra esse exemplo de definição de método:

    user = endpoints.get_current_user()
    # If there's no user defined, the request was unauthenticated, so we
    # raise 401 Unauthorized.
    
  4. Implante a API do Endpoints . Reimplante a API do Endpoints sempre que adicionar novos clientes.

Adicionar Firebase Authentication a um cliente

É possível adicionar o Firebase Authentication ao código, conforme descrito na documentação do Firebase. O cliente precisa ter um projeto do Google Cloud associado e o ID do projeto deve ser listado nas configurações do emissor do Firebase da API.

Como autenticar com Auth0

Para oferecer suporte a chamadas de clientes que usam Auth0:

  1. Importe a API do App Engine Endpoints na classe de API:

    import endpoints
    
  2. Adicione um objeto emissor Auth0 ao decorador de API de cada cliente. Exemplo:

    @endpoints.api(
        name='YOUR_API_NAME',
        version='VERSION_NUMBER',
        issuers={'auth0': endpoints.Issuer(
            'https://YOUR_ACCOUNT_NAME.auth0.com',
            'https://YOUR_ACCOUNT_NAME.auth0.com/.well-known/jwks.json')})
    
    • Substitua YOUR_API_NAME pelo nome da API.
    • Substitua VERSION_NUMBER por sua versão da API, por exemplo, v1.
    • Substitua YOUR_ACCOUNT_NAME pelo nome da conta Auth0 usado para o cliente.
  3. Em cada método de API em que você quer verificar a autenticação adequada, verifique se há um User válido e aumente error 401 se não houver, como mostra esse exemplo de definição de método:

    user = endpoints.get_current_user()
    # If there's no user defined, the request was unauthenticated, so we
    # raise 401 Unauthorized.
    
  4. Implante a API e reimplante-a sempre que adicionar novos clientes.

Adicionar a autenticação Auth0 a um cliente

Adicione a autenticação Auth0 ao código, conforme descrito na documentação do Auth0. O cliente precisa estar listado na configuração do emissor Auth0 da API.

Como autenticar com tokens de ID do Google

Para oferecer suporte a chamadas de clientes que fazem a autenticação usando tokens de ID do Google:

  1. Receba um ID do cliente OAuth 2 para cada aplicativo cliente. O proprietário do aplicativo cliente deve gerar o ID do cliente do Console do Google Cloud. Para instruções, consulte Como criar IDs do cliente.

  2. Importe a API do App Engine Endpoints na classe de API:

    import endpoints
    
  3. Especifique todos os IDs de clientes para os quais você quer conceder acesso à API no allowed_client_ids. Especifique também os IDs dos clientes Android no campo audiences no decorador da API. Exemplo:

    @endpoints.api(
        name='YOUR_API_NAME',
        version='VERSION_NUMBER',
        allowed_client_ids=ALLOWED_CLIENT_IDS,
        audiences=[ANDROID_AUDIENCE])
    class AuthedGreetingApi(remote.Service):
        # ...
    

    Substitua ALLOWED_CLIENT_IDS pela lista de IDs de clientes OAuth 2 gerados a partir do projeto de cada cliente e substitua ANDROID_AUDIENCE pela lista de IDs de clientes da Web do Android. O ID do cliente da Web é o ID do cliente com .apps.googleusercontent.com anexado, por exemplo: YOUR_CLIENT_ID.apps.googleusercontent.com.

  4. Em cada método de API em que você quer verificar a autenticação adequada, verifique se há um User válido e aumente error 401 se não houver, como mostra esse exemplo de definição de método:

    user = endpoints.get_current_user()
    # If there's no user defined, the request was unauthenticated, so we
    # raise 401 Unauthorized.
    
  5. Implante a API do Endpoints . Reimplante a API do Endpoints sempre que adicionar novos clientes.

Como adicionar a autenticação de tokens de ID do Google a um cliente

Para informações sobre como adicionar código de autenticação a clientes, consulte o seguinte:

A seguir

Para informações gerais sobre a autenticação de usuário e as diferenças entre esse método e a autorização de chave de API, consulte Quando e por que usar chaves de API.