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;
- 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:
Importe a API do App Engine Cloud Endpoints na classe de API:
import endpoints
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/v1/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.
- Substitua
Em cada método de API em que você quer verificar a autenticação adequada, verifique se há um
User
válido e aumenteerror 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.
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:
Importe a API do App Engine Endpoints na classe de API:
import endpoints
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.
- Substitua
Em cada método de API em que você quer verificar a autenticação adequada, verifique se há um
User
válido e aumenteerror 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.
Implante a API e reimplante-a sempre que adicionar novos clientes.
Adicionar a autenticação Auth0 a um cliente
Adicione a autenticação do 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:
Receba um ID do cliente OAuth 2 para cada aplicativo cliente. O proprietário do aplicativo cliente precisa gerar o ID do cliente no console do Google Cloud. Para instruções, consulte Como criar IDs do cliente.
Importe a API do App Engine Endpoints na classe de API:
import endpoints
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 campoaudiences
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 substituaANDROID_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
.Em cada método de API em que você quer verificar a autenticação adequada, verifique se há um
User
válido e aumenteerror 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.
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.