Vous pouvez utiliser l'API Cloud OAuth (cloudoauth.googleapis.com) pour échanger des codes d'autorisation ou des jetons d'actualisation contre des jetons d'accès OAuth 2.0 et des jetons d'ID OpenID Connect (OIDC) de courte durée Google Cloud. Dans les intégrations de la fédération des identités des employés, vos applications peuvent ensuite vérifier les jetons d'ID renvoyés à l'aide des clés publiques de votre organisation et utiliser les jetons d'accès pour appeler les APIGoogle Cloud au nom des utilisateurs fédérés.
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 si ce n'est pas déjà fait.
Rôles requis pour activer les API
Pour activer des API, vous devez disposer de l'autorisation
serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation via le rôle Propriétaire (roles/owner). Sinon, vous pouvez l'obtenir via le rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.
Méthodes d'authentification
Pour authentifier votre client OAuth auprès de l'API Cloud OAuth, transmettez votre ID client et votre code secret du client de l'une des manières suivantes :
Authentification HTTP de base (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
Une fois qu'un utilisateur fédéré s'est connecté avec son fournisseur d'identité (IdP) au point de terminaison d'autorisation unifié deGoogle Cloud(https://auth.cloud.google/authorize), le point de terminaison d'autorisation redirige l'utilisateur vers l'URI de redirection de votre application avec un code d'autorisation. Pour échanger ce code d'autorisation contre un jeton d'accès, un jeton d'actualisation et un jeton d'ID OIDC, envoyez une requête HTTP POST au point de terminaison à l'échelle de l'organisation (locataire unique) :
Authentification HTTP de base (recommandée) :
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"
Paramètres 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 :
ORGANIZATION_ID: ID numérique de votre organisation Google Cloud.BASE64_ENCODED_CREDENTIALS: chaîne encodée en base64 deCLIENT_ID:CLIENT_SECRET.AUTHORIZATION_CODE: code d'autorisation renvoyé par le point de terminaison d'autorisation unifié de Google Cloud(https://auth.cloud.google/authorize).REDIRECT_URI: URI de redirection configuré sur votre client OAuth.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'autorisation refresh_token pour obtenir un nouveau jeton d'accès de courte durée à partir du 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 les éléments suivants :
ORGANIZATION_ID: ID numérique de votre organisation Google Cloud.BASE64_ENCODED_CREDENTIALS: chaîne encodée en base64 deCLIENT_ID:CLIENT_SECRET.REFRESH_TOKEN: jeton d'actualisation précédemment renvoyé par le point de terminaison du jeton.REDIRECT_URI: URI de redirection configuré sur votre client OAuth.
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 champs d'application 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.
Vérifier le jeton d'ID OIDC
Pour les intégrations OIDC Looker, vous pouvez vérifier la signature cryptographique du id_token renvoyé par l'API Cloud OAuth à l'aide des clés Web JSON (JWK) publiques de votre organisation.
Récupérez les JWK publics de l'organisation de l'une des manières suivantes :
- Interrogez directement le point de terminaison JWKS (JSON Web Key Set) : envoyez une requête HTTP
GETàhttps://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/.well-known/jwks.json. - Utiliser le document de découverte OIDC : envoyez une requête HTTP
GETau point de terminaison de découverte OIDC (https://auth.cloud.google/oidc/organizations/ORGANIZATION_ID/.well-known/openid-configuration) pour récupérer l'URL du point de terminaison JWKS à partir du champjwks_uri.
Dans les deux URL de point de terminaison, remplacez ORGANIZATION_ID par l'ID numérique de votre organisation Google Cloud .
É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