Esta página descreve como adicionar suporte na sua API para autenticação de utilizadores a partir de aplicações cliente através dos Cloud Endpoints Frameworks. Tenha em atenção que, atualmente, os clientes Android e JavaScript são suportados.
Os Frameworks de Endpoints suportam a autenticação de utilizadores a partir de aplicações cliente que usam qualquer uma das seguintes metodologias:
Independentemente do método de autenticação que usar, em cada método da API em que quer verificar a autenticação adequada, tem de verificar se existe um User
válido, conforme descrito nas secções seguintes:
Pré-requisitos
Esta página pressupõe que já:
Criou um Google Cloud projeto.
- Se usar JWT no seu cliente para enviar pedidos autenticados para a API, o JWT tem de estar no cabeçalho de autorização de um pedido HTTP. O JWT deve ter as seguintes reivindicações obrigatórias:
-
iss
-
sub
-
aud
-
iat
-
exp
-
Autenticação com o Firebase Auth
Para suportar chamadas de clientes que usam o Firebase Auth:
Importe a API App Engine Cloud Endpoints na sua classe de API:
import endpoints
Adicione um objeto de emissor do Firebase para cada cliente ao decorador de API. Por 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 sua API. - Substitua
VERSION_NUMBER
pela versão da sua API, por exemplo,v1
. - Substitua code>YOUR_PROJECT_ID pelo Google Cloud ID do projeto do cliente.
- Substitua
Em cada método da API em que quer verificar a autenticação adequada, verifique se existe um
User
válido e apresenteerror 401
se não existir, conforme mostrado nesta definição de método de exemplo:user = endpoints.get_current_user() # If there's no user defined, the request was unauthenticated, so we # raise 401 Unauthorized.
Implemente a API Endpoints. Tem de voltar a implementar a API Endpoints sempre que adicionar novos clientes.
Adicionar a Firebase Authentication a um cliente
Pode adicionar a autenticação do Firebase ao seu código, conforme descrito na documentação do Firebase. O cliente tem de ter um Google Cloud projeto associado e o ID do projeto tem de estar listado na configuração do emissor do Firebase da API.
Autenticação com o Auth0
Para suportar chamadas de clientes que usam o Auth0:
Importe a API App Engine Endpoints na sua classe API:
import endpoints
Adicione um objeto de emissor Auth0 para cada cliente ao decorador de API. Por 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 sua API. - Substitua
VERSION_NUMBER
pela versão da sua API, por exemplo,v1
. - Substitua
YOUR_ACCOUNT_NAME
pelo nome da conta do Auth0 usado para o cliente.
- Substitua
Em cada método da API em que quer verificar a autenticação adequada, verifique se existe um
User
válido e apresenteerror 401
se não existir, conforme mostrado nesta definição de método de exemplo:user = endpoints.get_current_user() # If there's no user defined, the request was unauthenticated, so we # raise 401 Unauthorized.
Implemente a API. Tem de voltar a implementar a API sempre que adicionar novos clientes.
Adicionar autenticação Auth0 a um cliente
Pode adicionar a autenticação Auth0 ao seu código, conforme descrito na documentação do Auth0. O cliente tem de estar listado na configuração do emissor Auth0 da API.
Autenticação com tokens de ID da Google
Para suportar chamadas de clientes que se autenticam através de tokens de ID da Google:
Obtenha um ID de cliente OAuth 2 para cada aplicação cliente. O proprietário da aplicação cliente tem de gerar o ID de cliente a partir da Google Cloud consola. Para ver instruções, consulte o artigo Criar IDs de cliente.
Importe a API App Engine Endpoints na sua classe API:
import endpoints
Especifique todos os IDs de cliente aos quais quer conceder acesso à sua API no campo
allowed_client_ids
e especifique também os IDs de cliente pertencentes a clientes Android no campoaudiences
no decorador da API. Por 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 Web Android. O ID de cliente Web é o ID de cliente com.apps.googleusercontent.com
anexado, por exemplo:YOUR_CLIENT_ID.apps.googleusercontent.com
.Em cada método da API em que quer verificar a autenticação adequada, verifique se existe um
User
válido e apresenteerror 401
se não existir, conforme mostrado nesta definição de método de exemplo:user = endpoints.get_current_user() # If there's no user defined, the request was unauthenticated, so we # raise 401 Unauthorized.
Implemente a API Endpoints. Tem de voltar a implementar a API Endpoints sempre que adicionar novos clientes.
Adicionar autenticação de token de ID Google a um cliente
Para obter informações sobre como adicionar o código de autenticação a clientes, consulte o seguinte:
O que se segue?
Para informações gerais sobre a autenticação de utilizadores e como difere da autorização da chave de API, consulte o artigo Quando e por que motivo usar chaves de API.