Échanger des jetons avec l'API Cloud OAuth

Ce guide explique comment échanger des identifiants externes, des codes d'autorisation ou des jetons d'actualisation contre des jetons d'accès Google Cloud à l'aide de l'API Cloud OAuth (cloudoauth.googleapis.com) dans les intégrations de la fédération d'identité de personnel.

Avant de commencer

  1. Configurez un pool d'identités de personnel et un fournisseur. Pour en savoir plus, consultez Configurer la fédération des identités des employés.
  2. Enregistrez un client OAuth et créez des identifiants client. Pour en savoir plus, consultez Gérer les applications OAuth.
  3. Activez l'API Cloud OAuth.

    Rôles requis pour activer les API

    Pour activer les API, vous devez disposer de l'autorisation serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation grâce au rôle Propriétaire (roles/owner). Sinon, vous pouvez obtenir cette autorisation grâce au rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.

    Activer l'API

Méthodes d'authentification

L'API Cloud OAuth est compatible avec deux méthodes d'authentification du client :

  • Authentification de base HTTP (recommandée) : transmettez l'ID client et le code secret du client encodés en Base64 dans l'en-tête Authorization :

    -H "Authorization: Basic $(echo -n 'CLIENT_ID:CLIENT_SECRET' | base64)"
    
  • Paramètres du corps de la requête : transmettez les paramètres client_id et client_secret dans le corps de la requête.

Échanger un code d'autorisation contre des jetons

Pour échanger un code d'autorisation Google Cloud contre un jeton d'accès et un jeton d'actualisation, envoyez une requête HTTP POST :

  • Point de terminaison au niveau de l'organisation (à locataire unique)

    curl -X POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token \
    -H "Authorization: Basic BASE64_ENCODED_CREDENTIALS" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    --data-urlencode "grant_type=authorization_code" \
    --data-urlencode "code=AUTHORIZATION_CODE" \
    --data-urlencode "redirect_uri=REDIRECT_URI"
    

    Identifiants du corps de la requête

    curl -X POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token \
    -H "Content-Type: application/x-www-form-urlencoded" \
    --data-urlencode "grant_type=authorization_code" \
    --data-urlencode "code=AUTHORIZATION_CODE" \
    --data-urlencode "redirect_uri=REDIRECT_URI" \
    --data-urlencode "client_id=CLIENT_ID" \
    --data-urlencode "client_secret=CLIENT_SECRET"
    

Remplacez les éléments suivants :

  • BASE64_ENCODED_CREDENTIALS : chaîne encodée en Base64 de CLIENT_ID:CLIENT_SECRET.
  • AUTHORIZATION_CODE : code d'autorisation émis parGoogle Cloud.
  • REDIRECT_URI : URI de redirection configuré sur votre client OAuth.
  • ORGANIZATION_ID : ID numérique de votre organisation Google Cloud.
  • CLIENT_ID : ID client OAuth enregistré.
  • CLIENT_SECRET : votre code secret du client OAuth.

Actualiser un jeton d'accès

Lorsqu'un jeton d'accès expire, utilisez le type d'attribution refresh_token pour obtenir un nouveau jeton d'accès à durée de vie limitée :

  • Point de terminaison au niveau de l'organisation (à locataire unique)

    curl -X POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token \
    -H "Authorization: Basic BASE64_ENCODED_CREDENTIALS" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    --data-urlencode "grant_type=refresh_token" \
    --data-urlencode "refresh_token=REFRESH_TOKEN" \
    --data-urlencode "redirect_uri=REDIRECT_URI"
    

Remplacez REFRESH_TOKEN par le jeton d'actualisation renvoyé précédemment par le point de terminaison du jeton.

Champs de réponse du jeton

Lorsqu'un échange de jetons réussit, l'API Cloud OAuth renvoie un état HTTP 200 OK contenant les champs suivants :

Champ Type Description
access_token string Jeton d'accès OAuth 2.0 émis par l'API Cloud OAuth pour appeler les API Google Cloud .
refresh_token string Jeton d'actualisation utilisé pour obtenir de nouveaux jetons d'accès lorsque le jeton actuel expire.
expires_in integer Durée de vie restante du jeton d'accès en secondes (généralement 3599).
token_type string Type de jeton (par exemple, Bearer).
scope string Liste des niveaux d'accès associés au jeton.
id_token string Jeton d'ID OIDC contenant des revendications d'identité authentifiées.

Pour en savoir plus sur les réponses d'erreur renvoyées par l'API Cloud OAuth, consultez Erreurs d'échange de jetons de l'API Cloud OAuth.

Étapes suivantes