Authentifier les utilisateurs

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 :

Prérequis

Cette page suppose que vous avez déjà :

  • créé un projet Google Cloud ;

  • ajouté la gestion de l'API.

  • 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 :

  1. Importez l'API App Engine Cloud Endpoints dans votre classe d'API :

    import endpoints
    
  2. 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.
  3. 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 erreur error 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.
    
  4. 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 :

  1. Importez l'API App Engine Endpoints dans la classe d'API :

    import endpoints
    
  2. 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.
  3. 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 erreur error 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.
    
  4. 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 :

  1. 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.

  2. Importez l'API App Engine Endpoints dans la classe d'API :

    import endpoints
    
  3. 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 champ audiences 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 remplacez ANDROID_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.

  4. 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 erreur error 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.
    
  5. 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.