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
- 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.
- Enregistrez un client OAuth et créez des identifiants client. Pour en savoir plus, consultez Gérer les applications OAuth.
-
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.
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_idetclient_secretdans 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 deCLIENT_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
- Récupérer des informations utilisateur avec l'API Cloud OAuth
- Récupérer des groupes d'entreprise avec l'API Cloud OAuth
- Présentation de l'API Cloud OAuth
- Gérer les applications OAuth pour la fédération d'identité de personnel
- Documentation de référence de l'API REST Cloud OAuth