S'authentifier en tant qu'utilisateur final

Dans la plupart des cas, nous vous recommandons d'utiliser un compte de service pour vous authentifier auprès d'une API Google Cloud Platform (GCP). Dans certaines situations, vous voudrez peut-être que vos utilisateurs s'authentifient directement. Exemple :

  • Vous devez accéder à des ressources pour le compte d'un utilisateur final de votre application. Par exemple, votre application doit accéder aux ensembles de données Google BigQuery appartenant aux utilisateurs de votre application.

  • Vous devez vous authentifier vous-même au lieu d'utiliser votre application pour le faire. Par exemple, étant donné que l'API Cloud Resource Manager peut créer et gérer des projets appartenant à un utilisateur spécifique, vous devez vous authentifier en tant qu'utilisateur pour créer des projets en son nom.

Ce guide traite des identifiants de l'utilisateur final. Il ne traite pas de l'authentification d'un utilisateur sur votre application. Pour ce cas d'utilisation, nous recommandons l'authentification Firebase.

Processus d'authentification

Lorsqu'une application doit accéder à des ressources pour le compte d'un utilisateur, un écran d'autorisation s'affiche. Une fois que l'utilisateur a autorisé cet accès, votre application demande des identifiants auprès d'un serveur d'autorisation. Avec les identifiants, l'application peut accéder aux ressources pour le compte de l'utilisateur.

Ce processus est un protocole appelé OAuth 2.0.

Flux OAuth 2.0
Votre application
Autorisation de l'utilisateur
Données utilisateur

Pour en savoir plus sur OAuth 2.0, consultez la page OAuth 2.0.

Spécifier des champs d'application d'API

Lorsque vous utilisez un compte de service pour vous authentifier auprès d'une API GCP, GCP authentifie automatiquement le compte de service avec un accès complet à l'API. Lors de l'authentification en tant qu'utilisateur final, vous devez spécifier manuellement les champs d'application OAuth. Les champs d'application OAuth limitent les actions que votre application peut effectuer pour le compte de l'utilisateur final. Par exemple, ces actions peuvent inclure la lecture de fichiers de Cloud Storage ou la gestion de projets GCP.

Consultez la page API spécifique pour en savoir plus sur les champs d'application OAuth disponibles. Par exemple, si vous envisagez d'utiliser la méthode disks.get() pour l'API Compute Engine, vous devez définir un des champs d'applications OAuth. Définissez le champ d'application minimal requis en fonction de votre cas d'utilisation.

Accorder et limiter l'accès aux ressources du projet

Si vous utilisez les identifiants de l'utilisateur final pour accéder aux ressources de votre projet, vous devez lui accorder l'accès aux ressources de votre projet. Faites cela sur GCP en définissant un rôle dans Google Cloud Identity and Access Management (Cloud IAM).

Vous voudrez peut-être limiter les ressources auxquelles l'utilisateur a accès, en particulier lorsque vous autorisez l'utilisateur à accéder aux ressources d'un projet vous appartenant. Définissez les rôles selon le principe du moindre privilège s'appliquant à l'utilisateur.

Chaque service dispose d'un ensemble de rôles Cloud IAM, mais vous pouvez choisir de créer des rôles personnalisés à la place. Pour plus d'informations, consultez les pages Comprendre les rôles et Créer et gérer des rôles personnalisés.

Exemple d'authentification d'un utilisateur final

Renseignez les sections suivantes pour obtenir les identifiants d'un utilisateur final. Les étapes suivantes nécessitent l'utilisation de l'API BigQuery, mais vous pouvez reproduire ce processus avec n'importe quelle API GCP disposant d'une bibliothèque cliente.

Configurer votre projet

  1. Connectez-vous à votre compte Google.

    Si vous n'en possédez pas déjà un, vous devez en créer un.

  2. Sélectionnez ou créez un projet Google Cloud Platform.

    Accéder à la page "Gérer les ressources"

  3. Assurez-vous que la facturation est activée pour votre projet Google Cloud Platform.

    Découvrir comment activer la facturation

  4. Activez BigQuery API.

    Activez API

  5. Installez les bibliothèques clientes BigQuery.
  6. Si vous utilisez Python ou Node.js, vous devez installer une bibliothèque d'authentification supplémentaire.

    Python

    Installez la bibliothèque d'intégration oauthlib pour Google Auth.

    pip install --upgrade google-auth-oauthlib

Créer vos identifiants client

Créez vos identifiants client dans la console Google Cloud Platform.

  1. Consultez la page API et services → Identifiants de la console GCP.

  2. Remplissez les champs obligatoires sur l'écran d'autorisation OAuth.

  3. Cliquez sur le bouton Créer des identifiants, puis sélectionnez l'ID client OAuth.

  4. Sélectionnez Autre, puis cliquez sur le bouton Créer.

  5. Pour télécharger les identifiants, cliquez sur le bouton Télécharger le fichier JSON.

    Bouton Télécharger JSON

  6. Enregistrez le fichier d'identifiants dans client_secrets.json. Ce fichier doit être distribué avec votre application.

S'authentifier et appeler l'API

  1. Utilisez les identifiants du client pour exécuter le flux OAuth 2.0.

    Python

    from google_auth_oauthlib import flow
    
    # TODO: Uncomment the line below to set the `launch_browser` variable.
    # launch_browser = True
    #
    # The `launch_browser` boolean variable indicates if a local server is used
    # as the callback URL in the auth flow. A value of `True` is recommended,
    # but a local server does not work if accessing the application remotely,
    # such as over SSH or from a remote Jupyter notebook.
    
    appflow = flow.InstalledAppFlow.from_client_secrets_file(
        'client_secrets.json',
        scopes=['https://www.googleapis.com/auth/bigquery'])
    
    if launch_browser:
        appflow.run_local_server()
    else:
        appflow.run_console()
    
    credentials = appflow.credentials

  2. Utilisez les identifiants authentifiés pour vous connecter à l'API BigQuery.

    Python

    from google.cloud import bigquery
    
    # TODO: Uncomment the line below to set the `project` variable.
    # project = 'user-project-id'
    #
    # The `project` variable defines the project to be billed for query
    # processing. The user must have the bigquery.jobs.create permission on
    # this project to run a query. See:
    # https://cloud.google.com/bigquery/docs/access-control#permissions
    
    client = bigquery.Client(project=project, credentials=credentials)
    
    query_string = """SELECT name, SUM(number) as total
    FROM `bigquery-public-data.usa_names.usa_1910_current`
    WHERE name = 'William'
    GROUP BY name;
    """
    query_job = client.query(query_string)
    
    # Print the results.
    for row in query_job.result():  # Wait for the job to complete.
        print("{}: {}".format(row['name'], row['total']))

L'exécution de l'exemple de code ouvre un navigateur qui demande l'accès au projet associé aux codes secrets du client. Les identifiants correspondants peuvent ensuite être utilisés pour accéder aux ressources BigQuery de l'utilisateur, car l'exemple a demandé le champ d'application BigQuery.

Dans un cas d'utilisation différent, vous souhaiterez peut-être ajouter des rôles IAM pour déterminer ce à quoi l'utilisateur peut accéder.

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…