Cette page décrit plusieurs façons d'obtenir un jeton d'identification OpenID Connect (OIDC) signé par Google.
Pour en savoir plus sur le contenu et la durée de vie des jetons d'ID, consultez la section Jetons d'ID.
Les jetons d'ID ont un service ou une application spécifique pour lesquels ils peuvent être utilisés, spécifiés par la valeur de leur revendication aud
. Cette page utilise le terme service cible pour désigner le service ou l'application auxquels le jeton d'ID peut être utilisé pour s'authentifier.
Lorsque vous obtenez le jeton d'ID, vous pouvez l'inclure dans un en-tête Authorization
de la requête adressée au service cible.
Méthodes permettant d'obtenir un jeton d'ID
Il existe différentes manières d'obtenir un jeton d'ID. Cette page décrit les méthodes suivantes :
- Obtenir un jeton d'ID à partir du serveur de métadonnées
- Utiliser un service de connexion pour générer un jeton d'ID
- Générer un jeton d'ID en empruntant l'identité d'un compte de service
Si vous avez besoin qu'un jeton d'ID soit accepté par une application non hébergée surTrusted Cloud, vous pouvez probablement utiliser ces méthodes. Toutefois, vous devez déterminer quelles sont les revendications de jeton d'ID requises par l'application.
Obtenir un jeton d'ID à partir du serveur de métadonnées
Lorsque votre code est exécuté sur une ressource à laquelle un compte de service est associé, le serveur de métadonnées du service associé peut généralement fournir un jeton d'ID. Le serveur de métadonnées génère des jetons d'ID pour le compte de service associé. Vous ne pouvez pas obtenir de jeton d'ID en fonction des identifiants utilisateur à partir du serveur de métadonnées.
Vous pouvez obtenir un jeton d'ID à partir du serveur de métadonnées lorsque votre code s'exécute sur les services Trusted Cloud suivants :
Pour récupérer un jeton d'ID à partir du serveur de métadonnées, vous interrogez le point de terminaison de l'identité du compte de service, comme indiqué dans cet exemple.
curl
Remplacez AUDIENCE
par l'URI du service cible, par exemple http://www.example.com
.
curl -H "Metadata-Flavor: Google" \ 'http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE'
PowerShell
Remplacez AUDIENCE
par l'URI du service cible, par exemple http://www.example.com
.
$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE") $value
Java
Pour exécuter cet exemple de code, vous devez d'abord effectuer les étapes suivantes :
- Installer la bibliothèque cliente Auth pour Java
- Définir la variable d'environnement
GOOGLE_CLOUD_UNIVERSE_DOMAIN
surs3nsapis.fr
Go
Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN
sur s3nsapis.fr
.
Node.js
Pour exécuter cet exemple de code, vous devez d'abord effectuer les étapes suivantes :
- Installer la bibliothèque Google Auth pour Node.js
- Définir la variable d'environnement
GOOGLE_CLOUD_UNIVERSE_DOMAIN
surs3nsapis.fr
Python
Pour exécuter cet exemple de code, vous devez d'abord effectuer les étapes suivantes :
- Installer la bibliothèque Google Auth pour Python
- Définir la variable d'environnement
GOOGLE_CLOUD_UNIVERSE_DOMAIN
surs3nsapis.fr
Ruby
Pour exécuter cet exemple de code, vous devez d'abord effectuer les étapes suivantes :
- Installer la bibliothèque Google Auth pour Ruby
- Définir la variable d'environnement
GOOGLE_CLOUD_UNIVERSE_DOMAIN
surs3nsapis.fr
Utiliser un service de connexion pour générer un jeton d'ID
Certains Trusted Cloud services vous aident à appeler d'autres services. Ces services de connexion peuvent vous aider à déterminer quand l'appel est effectué ou à gérer un workflow incluant l'appel du service. Les services suivants peuvent automatiquement inclure un jeton d'ID, avec la valeur appropriée pour la revendication aud
, lorsqu'ils appellent un service nécessitant un jeton d'ID :
- Pub/Sub
- Pub/Sub permet la communication asynchrone entre les services. Vous pouvez configurer Pub/Sub de façon à inclure un jeton d'ID avec un message. Pour en savoir plus, consultez la section Authentification pour les abonnements push.
Générer un jeton d'ID en empruntant l'identité d'un compte de service
Emprunter l'identité d'un compte de service permet à un compte principal de générer des identifiants éphémères pour un compte de service approuvé. Le compte principal peut ensuite utiliser ces identifiants pour s'authentifier en tant que compte de service.
Pour qu'un compte principal puisse emprunter l'identité d'un compte de service, il doit disposer d'un rôle IAM permettant d'emprunter une identité sur ce compte de service. Si le compte principal est lui-même un autre compte de service, il peut sembler plus simple de fournir les autorisations requises directement à ce compte de service et de lui permettre d'emprunter une identité. Cette configuration, appelée "auto-emprunt d'identité", crée une faille de sécurité, car elle permet au compte de service de créer un jeton d'accès pouvant être actualisé à l'infini.
L'emprunt d'identité d'un compte de service doit toujours impliquer deux comptes principaux : le compte principal qui représente l'appelant, et le compte de service dont l'identité est empruntée, appelé compte de service porteur de privilèges.
Vous pouvez appliquer le processus général suivant pour générer un jeton d'ID en empruntant l'identité d'un compte de service.
Pour obtenir des instructions détaillées, consultez la section Créer un jeton d'ID.
Identifiez ou créez un compte de service en tant que compte de service avec privilège.
- Consultez la documentation du produit afin d'identifier les rôles requis pour appeler le service cible. Attribuez ces rôles au compte de service sur le service cible.
Identifiez le compte principal qui effectuera l'emprunt d'identité et configurez les ADC (Identifiants par défaut de l'application) pour utiliser les identifiants de ce compte principal.
Pour les environnements de développement, le compte principal est généralement le compte utilisateur que vous avez fourni aux ADC en utilisant gcloud CLI. Toutefois, si l'exécution se déroule sur une ressource à laquelle un compte de service est associé, le compte de service associé est le compte principal.
Attribuez au compte principal le rôle "Créateur de jetons d'identité OpenID Connect du compte de service" (
roles/iam.serviceAccountOpenIdTokenCreator
).Utilisez l'API IAM Credentials pour générer le jeton d'ID pour le compte de service autorisé.
Remplacez les éléments suivants :
- AUDIENCE : URI du service cible (par exemple,
http://www.example.com
). - SERVICE_ACCOUNT_EMAIL : adresse e-mail du compte de service avec privilège.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{"audience": "AUDIENCE", "includeEmail": "true"}' \ https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/SERVICE_ACCOUNT_EMAIL:generateIdToken
- AUDIENCE : URI du service cible (par exemple,
Étapes suivantes
- Consultez la documentation sur les jetons d'ID.
- Utilisez les commandes shell pour interroger le serveur de métadonnées Compute Engine.
- Obtenez davantage d'informations sur les méthodes d'authentification.