Ce guide explique comment récupérer les revendications standards OpenID Connect (OIDC), les revendications d'annuaire personnalisées et les appartenances à des groupes pour les utilisateurs authentifiés de l'effectif à l'aide du point de terminaison /userinfo dans l'API Cloud OAuth (cloudoauth.googleapis.com).
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 échangez un code d'autorisation contre un jeton d'accès. Pour en savoir plus, consultez Échanger des jetons avec l'API Cloud OAuth.
- Assurez-vous que votre jeton d'accès inclut le champ d'application
openid. -
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.
Point de terminaison au niveau de l'organisation
L'API Cloud OAuth fournit le point de terminaison à l'échelle de l'organisation (à locataire unique) que vous pouvez utiliser lorsque votre application cliente et vos ressources sont limitées à une organisationGoogle Cloud spécifique :
La méthode organizations.userinfo de l'API Cloud OAuth récupère les revendications standards OpenID Connect (OIDC), les revendications personnalisées et les appartenances à des groupes pour l'utilisateur authentifié dans une organisation spécifique.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
TOKEN: jeton d'accès OAuth 2.0 éphémère obtenu à partir du point de terminaison d'échange de jetons.ORGANIZATION_ID: ID numérique de votre organisation Google Cloud .
Méthode HTTP et URL :
GET https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/userinfo
Pour envoyer votre requête, développez l'une des options suivantes :
Pour les pools d'identités de personnel pour lesquels le provisionnement SCIM n'est pas activé, le point de terminaison renvoie les attributs de profil, les revendications personnalisées et les appartenances à des groupes de manière intégrée :
{
"sub": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
"email": "user@example.com",
"custom_claim1": "engineering",
"custom_claim2": "us-west",
"groups": [
"looker-developers",
"analytics-viewers"
]
}
Revendications utilisateur et groupes distribués SCIM
Lorsqu'une requête aboutit, le point de terminaison /userinfo renvoie un état HTTP 200 OK et un objet JSON contenant les revendications de l'utilisateur authentifié.
Le format des revendications dépend de l'utilisation ou non du provisionnement SCIM par votre fournisseur de pool d'identités d'employés :
Revendications intégrées (pools d'identités non SCIM)
Pour les pools d'identités de personnel pour lesquels le provisionnement SCIM n'est pas activé, le point de terminaison renvoie les attributs de profil, les revendications personnalisées et les appartenances à des groupes de manière intégrée :
{
"sub": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
"email": "user@example.com",
"custom_claim1": "engineering",
"custom_claim2": "us-west",
"groups": [
"looker-developers",
"analytics-viewers"
]
}
Revendications distribuées (pools d'identités compatibles avec SCIM)
Pour les pools d'identités de personnel pour lesquels le provisionnement SCIM est activé, les appartenances aux groupes sont renvoyées en tant que revendications distribuées. La réponse inclut _claim_names et _claim_sources qui font référence au point de terminaison /groups :
{
"sub": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
"name": "Jane Doe",
"email": "user@example.com",
"_claim_names": {
"groups": "src1"
},
"_claim_sources": {
"src1": {
"endpoint": "https://cloudoauth.googleapis.com/v1/common/groups"
}
}
}
Champs de revendication
La réponse contient les champs de revendication standards et distribués suivants :
| Champ | Type | Description |
|---|---|---|
sub |
string |
Identifiant unique de l'entité principale pour l'utilisateur authentifié dans le pool d'identités de personnel. |
name |
string |
Nom complet de l'utilisateur, s'il est disponible auprès du fournisseur d'identité. |
email |
string |
Adresse e-mail de l'utilisateur authentifié. |
groups |
array of strings |
(Non-SCIM uniquement) Liste des appartenances à des groupes d'entreprise pour l'utilisateur. |
_claim_names |
object |
(Uniquement si SCIM est activé) Objet JSON qui mappe les noms de revendications distribuées (comme groups) aux identifiants sources dans _claim_sources. |
_claim_sources |
object |
(Uniquement pour les fournisseurs d'identité compatibles avec SCIM) Objet JSON qui définit le point de terminaison source pour chaque identifiant de revendication distribuée. |
Pour en savoir plus sur les réponses d'erreur renvoyées par le point de terminaison /userinfo, consultez Erreurs liées aux informations utilisateur et aux groupes Cloud OAuth.