Gérer l'application OAuth

Ce guide explique comment gérer les intégrations d'applications basées sur OAuth avec Google Cloud.

De manière générale, pour intégrer une application basée sur OAuth, procédez comme suit:

  1. Créer un client OAuth.
  2. Créez un identifiant de client OAuth.
  3. Dans les identifiants du client OAuth, obtenez le code secret du client. Pour en savoir plus sur les risques associés au stockage et à l'accès au code secret du client, et sur les stratégies qui peuvent vous aider à les atténuer, consultez Risques et solutions pour la sécurité des clients OAuth et des identifiants.

Une fois ces étapes terminées, l'application basée sur OAuth peut accéder aux produits et aux données Google Cloud.

Avant de commencer

  1. Vous devez disposer d'une organisation Google Cloud déjà configurée.

  2. Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init

  3. Vous devez avoir configuré un pool d'identités de personnel et un fournisseur dans l'organisation dans laquelle vous allez enregistrer l'application OAuth. Découvrez comment configurer la fédération d'identité de personnel pour Microsoft Entra ID, Okta et d'autres fournisseurs OIDC et SAML 2.0.

Rôles requis

Pour obtenir les autorisations nécessaires pour enregistrer une application OAuth pour votre organisation, demandez à votre administrateur de vous accorder le rôle IAM Administrateur client OAuth IAM (roles/iam.oauthClientAdmin) sur le projet. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Gérer les clients OAuth

Cette section explique comment gérer les clients OAuth.

Créer un client OAuth

Pour créer un client OAuth, procédez comme suit:

gcloud

gcloud iam oauth-clients create APP_OAUTH_CLIENT_ID \
    --project=PROJECT_ID \
    --location=global \
    --client-type="CONFIDENTIAL_CLIENT" \
    --display-name="My OAuth application" \
    --description="An application registration for MyApp" \
    --allowed-scopes="https://www.googleapis.com/auth/cloud-platform" \
    --allowed-redirect-uris="REDIRECT_URI" \
    --allowed-grant-types="authorization_code_grant"

Remplacez les éléments suivants :

  • APP_OAUTH_CLIENT_ID: un ID client représentant ce client OAuth.
  • PROJECT_ID: ID du projet dans lequel vous avez créé votre pool d'identités des employés et votre fournisseur. Le projet doit être créé dans l'organisation où votre pool de personnel et votre fournisseur ont été créés.
  • REDIRECT_URI: URI de redirection de l'application OAuth (par exemple, https://myapp.com/signin-callback).

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  -d "{ \
        'allowedGrantTypes': ['AUTHORIZATION_CODE_GRANT'], \
        'allowedRedirectUris': ['REDIRECT_URI'], \
        'allowedScopes': ['https://www.googleapis.com/auth/cloud-platform'], \
        'clientType': 'CONFIDENTIAL_CLIENT', \
        'description': 'My OAuth client description', \
        'disabled': false, \
        'displayName': 'My OAuth client'}" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients\?oauthClientId\=APP_OAUTH_CLIENT_ID

Remplacez les éléments suivants :

  • PROJECT_ID: ID du projet dans lequel vous avez créé votre pool d'identités des employés et votre fournisseur. Le projet doit être créé dans l'organisation où votre pool de personnel et votre fournisseur ont été créés.
  • REDIRECT_URI: URI de redirection de l'application OAuth (par exemple, https://myapp.com/signin-callback).
  • APP_OAUTH_CLIENT_ID: un ID client représentant ce client OAuth.

Après avoir enregistré l'application, vous créez les identifiants du client OAuth et obtenez le secret que l'application OAuth utilise pour accéder à Google Cloud.

Répertorier les clients OAuth

Pour lister les clients OAuth enregistrés, exécutez la commande suivante:

gcloud

gcloud iam oauth-clients list \
    --project=PROJECT_ID \
    --location=global

REST

curl \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients

Remplacez PROJECT_ID par l'ID du projet dans lequel vos applications OAuth sont enregistrées.

Décrire un client OAuth

Pour décrire un client OAuth, exécutez la commande suivante:

gcloud

gcloud iam oauth-clients describe APP_OAUTH_CLIENT_ID \
    --project PROJECT_ID \
    --location global

Remplacez les éléments suivants :

  • APP_OAUTH_CLIENT_ID: ID du client OAuth que vous souhaitez décrire
  • PROJECT_ID: ID du projet dans lequel vous avez enregistré votre application OAuth.

REST

curl \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID

Remplacez les éléments suivants :

  • PROJECT_ID: ID du projet dans lequel vous avez enregistré votre application OAuth.
  • APP_OAUTH_CLIENT_ID: ID du client OAuth que vous souhaitez décrire

Mettre à jour un client OAuth

Pour mettre à jour un client OAuth, exécutez la commande suivante.

gcloud

gcloud iam oauth-clients update APP_OAUTH_CLIENT_ID \
    --project=PROJECT_ID \
    --location=global \
    --allowed-redirect-uris="REDIRECT_URI"

Remplacez les éléments suivants :

  • APP_OAUTH_CLIENT_ID: ID client OAuth du client OAuth que vous souhaitez mettre à jour
  • PROJECT_ID: ID du projet dans lequel vous avez enregistré votre application OAuth.
  • REDIRECT_URI: URI de redirection de l'application OAuth

Pour mettre à jour d'autres champs, utilisez les options répertoriées dans gcloud iam oauth-clients update.

REST

curl -d'{"allowedRedirectUris":"REDIRECT_URI"}' \
  -H "Content-Type: application/json" -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID?update_mask=allowed_redirect_uris

Remplacez les éléments suivants :

  • PROJECT_ID: ID du projet dans lequel vous avez enregistré votre application OAuth.
  • APP_OAUTH_CLIENT_ID: ID client OAuth du client OAuth que vous souhaitez mettre à jour
  • REDIRECT_URI: URI de redirection du client OAuth

Pour mettre à jour d'autres champs, définissez update_mask sur les noms de champ répertoriés dans gcloud iam oauth-clients update.

Supprimer un client OAuth

Pour supprimer un client OAuth, exécutez la commande suivante:

gcloud

gcloud iam oauth-clients delete APP_OAUTH_CLIENT_ID \
    --project PROJECT_ID \
    --location global

Remplacez les éléments suivants :

  • APP_OAUTH_CLIENT_ID: ID client OAuth à supprimer
  • PROJECT_ID: ID du projet dans lequel vous avez enregistré votre application OAuth.

REST

curl -X DELETE \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID

Remplacez les éléments suivants :

  • PROJECT_ID: ID du projet dans lequel vous avez enregistré votre application OAuth.
  • APP_OAUTH_CLIENT_ID: ID client OAuth à supprimer

Gérer les identifiants client OAuth

Cette section explique comment gérer les identifiants client OAuth pour le client OAuth.

Créer un identifiant client OAuth

Pour créer un identifiant client OAuth, exécutez la commande suivante:

gcloud

gcloud iam oauth-clients credentials create APP_OAUTH_CLIENT_CREDENTIAL_ID \
    --oauth-client=APP_OAUTH_CLIENT_ID \
    --display-name='My OAuth client credential' \
    --location='global'

Remplacez les éléments suivants :

  • APP_OAUTH_CLIENT_CREDENTIAL_ID: ID représentant ces identifiants client.
  • APP_OAUTH_CLIENT_ID: ID client OAuth que vous pouvez obtenir en décrivant l'application cliente OAuth enregistrée

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  -d "{'disabled': false, 'displayName': 'My OAuth client credential'}" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials\?oauthClientCredentialId=APP_OAUTH_CLIENT_CREDENTIAL_ID

Remplacez les éléments suivants :

  • PROJECT_ID: ID du projet dans lequel vous avez enregistré votre application OAuth.
  • APP_OAUTH_CLIENT_ID: ID client OAuth que vous pouvez obtenir en décrivant l'application cliente OAuth enregistrée
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: ID représentant ces identifiants client.

Liste des identifiants client OAuth

Pour lister les identifiants du client OAuth, exécutez la commande suivante:

gcloud

gcloud iam oauth-clients credentials list \
    --oauth-client=APP_OAUTH_CLIENT_ID \
    --project=PROJECT_ID \
    --location=global

Remplacez les éléments suivants :

  • APP_OAUTH_CLIENT_ID: ID client OAuth pour lequel lister les identifiants
  • PROJECT_ID: ID du projet dans lequel vous avez enregistré votre application OAuth.

REST

curl \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/$PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials

Remplacez les éléments suivants :

  • PROJECT_ID: ID du projet dans lequel vous avez enregistré votre application OAuth.
  • APP_OAUTH_CLIENT_ID: ID client OAuth pour lequel lister les identifiants

Décrire un identifiant client OAuth

Pour décrire un identifiant client OAuth, exécutez la commande suivante. Vous pouvez obtenir le code secret du client en inspectant la sortie.

gcloud

gcloud iam oauth-clients credentials describe APP_OAUTH_CLIENT_CREDENTIAL_ID \
    --oauth-client=APP_OAUTH_CLIENT_ID \
    --location='global'

Remplacez les éléments suivants :

  • APP_OAUTH_CLIENT_CREDENTIAL_ID: URI de redirection pour le client OAuth
  • APP_OAUTH_CLIENT_ID: ID client OAuth que vous pouvez obtenir en décrivant l'enregistrement de l'application cliente

REST

curl \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID

Remplacez les éléments suivants :

  • PROJECT_ID: ID du projet dans lequel vous avez enregistré votre application OAuth.
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: URI de redirection pour le client OAuth
  • APP_OAUTH_CLIENT_ID: ID client OAuth que vous pouvez obtenir en décrivant l'enregistrement de l'application cliente

Dans la sortie, clientSecret correspond au code secret du client. Il s'agit du secret utilisé par l'application OAuth pour accéder à Google Cloud.

Mettre à jour un identifiant de client OAuth

Pour mettre à jour un identifiant de client OAuth, exécutez la commande suivante:

gcloud

gcloud iam oauth-clients credentials update APP_OAUTH_CLIENT_CREDENTIAL_ID \
    --client-id=APP_OAUTH_CLIENT_ID \
    --display-name="My new credential name" \
    --location=global

REST

curl -d'{"displayName":"My new credential name"}' -X PATCH \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://staging-iam.sandbox.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID?update_mask=display_name

Remplacez les éléments suivants :

  • PROJECT_ID: ID du projet dans lequel vous avez enregistré votre application OAuth.
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: URI de redirection pour le client OAuth
  • APP_OAUTH_CLIENT_ID: ID client OAuth que vous pouvez obtenir en décrivant l'enregistrement de l'application cliente

Désactiver un identifiant client OAuth

Avant de pouvoir supprimer un identifiant de client OAuth, vous devez le désactiver. Pour désactiver les identifiants du client OAuth, exécutez la commande suivante:

gcloud

gcloud iam oauth-clients credentials update APP_OAUTH_CLIENT_CREDENTIAL_ID \
    --oauth-client=APP_OAUTH_CLIENT_ID \
    --disabled \
    --project=PROJECT_ID \
    --location=global

Remplacez les éléments suivants :

  • PROJECT_ID: ID du projet dans lequel vous avez enregistré votre application OAuth.
  • APP_OAUTH_CLIENT_ID: ID client OAuth
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: ID des identifiants du client à désactiver

REST

curl -d'{"disabled":"true"}' \
  -H "Content-Type: application/json" -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID?update_mask=disabled

Remplacez les éléments suivants :

  • PROJECT_ID: ID du projet dans lequel vous avez enregistré votre application OAuth.
  • APP_OAUTH_CLIENT_ID: ID client OAuth
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: ID des identifiants du client à désactiver

Supprimer un identifiant de client OAuth

Pour supprimer un identifiant de client OAuth, exécutez la commande suivante:

gcloud

gcloud iam oauth-clients credentials delete APP_OAUTH_CLIENT_CREDENTIAL_ID \
    --project=PROJECT_ID \
    --oauth-client=APP_OAUTH_CLIENT_ID \
    --location=global

Remplacez les éléments suivants :

  • APP_OAUTH_CLIENT_CREDENTIAL_ID: ID client OAuth
  • PROJECT_ID: ID du projet dans lequel vous avez enregistré votre application OAuth.
  • APP_OAUTH_CLIENT_ID: ID des identifiants du client

REST

curl -X DELETE \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID

Remplacez les éléments suivants :

  • PROJECT_ID: ID du projet dans lequel vous avez enregistré votre application OAuth.
  • APP_OAUTH_CLIENT_ID: ID des identifiants du client
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: ID client OAuth

Étape suivante