Cette page explique comment permettre l'authentification des utilisateurs dans votre API à partir d'applications clientes à l'aide de Cloud Endpoints Frameworks. Sachez que les clients Android et JavaScript sont actuellement compatibles.
Cloud Endpoints Frameworks accepte l'authentification des utilisateurs à partir d'applications clientes utilisant l'une des méthodologies suivantes :
Quelle que soit la méthode d'authentification employée, dans chaque méthode d'API pour laquelle vous souhaitez confirmer que l'authentification est appropriée, vous devez rechercher un élément User
valide, comme décrit dans les sections suivantes :
- Procéder à l'authentification via la fonctionnalité d'authentification de Firebase
- Procéder à l'authentification via Auth0
- Procéder à l'authentification via les jetons d'ID Google
Prérequis
Cette page suppose que vous avez déjà :
créé un projet Google Cloud ;
- Si vous utilisez un jeton JWT dans le client pour envoyer des requêtes authentifiées à l'API, ce jeton doit figurer dans l'en-tête d'autorisation d'une requête HTTP. Il doit avoir les revendications requises suivantes :
-
iss
-
sub
-
aud
-
iat
-
exp
-
Procéder à l'authentification via la fonctionnalité d'authentification de Firebase
Pour pouvoir gérer les appels de clients utilisant l'authentification Firebase :
Importez l'API App Engine Cloud Endpoints dans votre classe d'API :
import endpoints
Ajoutez un objet émetteur Firebase pour chaque client au décorateur API. Exemple :
@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')})
- Remplacez
YOUR_API_NAME
par le nom de votre API. - Remplacez
VERSION_NUMBER
par la version de votre API, par exemple,v1
. - Remplacez YOUR_PROJECT_ID par l'ID du projet Google Cloud du client.
- Remplacez
Dans chaque méthode d'API pour laquelle vous souhaitez vérifier que l'authentification est appropriée, recherchez un élément
User
valide. S'il n'y en a pas, générez une erreurerror 401
, comme indiqué dans cet exemple de définition de méthode :user = endpoints.get_current_user() # If there's no user defined, the request was unauthenticated, so we # raise 401 Unauthorized.
Déployez l'API Endpoints. Vous devez la redéployer chaque fois que vous ajoutez des clients.
Ajouter Firebase Authentication à un client
Vous pouvez ajouter Firebase Authentication à votre code comme décrit dans la documentation Firebase. Le client doit être associé à un projet Google Cloud et l'ID du projet doit être répertorié dans la configuration d'émetteur Firebase de l'API.
Procéder à l'authentification via Auth0
Pour pouvoir gérer les appels de clients utilisant Auth0 :
Importez l'API App Engine Endpoints dans la classe d'API :
import endpoints
Ajoutez pour chaque client un objet émetteur Auth0 au décorateur API. Exemple :
@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')})
- Remplacez
YOUR_API_NAME
par le nom de votre API. - Remplacez
VERSION_NUMBER
par la version de votre API, par exemple,v1
. - Remplacez
YOUR_ACCOUNT_NAME
par le nom de compte Auth0 utilisé pour le client.
- Remplacez
Dans chaque méthode d'API pour laquelle vous souhaitez vérifier que l'authentification est appropriée, recherchez un élément
User
valide. S'il n'y en a pas, générez une erreurerror 401
, comme indiqué dans cet exemple de définition de méthode :user = endpoints.get_current_user() # If there's no user defined, the request was unauthenticated, so we # raise 401 Unauthorized.
Déployez l'API. Vous devez la redéployer à chaque ajout de nouveaux clients.
Ajouter l'authentification Auth0 à un client
Vous pouvez ajouter l'authentification Auth0 à votre code comme décrit dans la documentation Auth0. Le client doit être répertorié dans la configuration d'émetteur Auth0 de l'API.
Procéder à l'authentification via les jetons d'ID Google
Pour pouvoir gérer les appels de clients qui s'authentifient à l'aide de jetons d'ID Google :
Obtenez un ID client OAuth 2.0 pour chaque application cliente. Le client le propriétaire de l'application doit générer l'ID client à partir de la console Google Cloud. Pour obtenir des instructions, consultez la page Créer des ID client.
Importez l'API App Engine Endpoints dans la classe d'API :
import endpoints
Spécifiez tous les ID client auxquels vous souhaitez accorder l'accès à l'API dans
allowed_client_ids
, et spécifiez également les ID client appartenant à des clients Android dans le champaudiences
du décorateur d'API. Exemple :@endpoints.api( name='YOUR_API_NAME', version='VERSION_NUMBER', allowed_client_ids=ALLOWED_CLIENT_IDS, audiences=[ANDROID_AUDIENCE]) class AuthedGreetingApi(remote.Service): # ...
Remplacez
ALLOWED_CLIENT_IDS
par la liste des ID client OAuth 2 générés à partir du projet de chaque client et remplacezANDROID_AUDIENCE
par la liste des ID client Web Android. L'ID client Web est l'ID client auquel.apps.googleusercontent.com
est ajouté. Par exemple :YOUR_CLIENT_ID.apps.googleusercontent.com
.Dans chaque méthode d'API pour laquelle vous souhaitez vérifier que l'authentification est appropriée, recherchez un élément
User
valide. S'il n'y en a pas, générez une erreurerror 401
, comme indiqué dans cet exemple de définition de méthode :user = endpoints.get_current_user() # If there's no user defined, the request was unauthenticated, so we # raise 401 Unauthorized.
Déployez l'API Endpoints. Vous devez la redéployer chaque fois que vous ajoutez des clients.
Ajouter l'authentification via des jetons d'ID Google à un client
Pour plus d'informations sur l'ajout de code d'authentification aux clients, consultez les articles suivants :
Étape suivante
Pour obtenir des informations générales sur l'authentification des utilisateurs et les différences avec l'autorisation via des clés API, consultez la page Quand et pourquoi utiliser les clés API.