Ce document explique comment s'authentifier auprès d'une ressource sécurisée par IAP avec un compte utilisateur ou un compte de service.
L'accès programmatique fait référence à l'appel d'applications sécurisées par IAP à partir de clients autres que des navigateurs, tels que des outils en ligne de commande, des appels de service à service et des applications mobiles. Selon votre cas d'utilisation, vous pouvez vous authentifier auprès d'IAP à l'aide d'identifiants utilisateur ou de service.
Un compte utilisateur appartient à un utilisateur individuel. Vous authentifiez un compte utilisateur lorsque votre application doit accéder à des ressources sécurisées par IAP au nom d'un utilisateur. Pour en savoir plus, consultez Comptes utilisateur.
Un compte de service représente une application et non un utilisateur individuel. Vous authentifiez un compte de service lorsque vous souhaitez autoriser une application à accéder à vos ressources sécurisées par IAP. Pour en savoir plus, consultez Comptes de service.
IAP est compatible avec les types d'identifiants suivants pour l'accès programmatique :
- Jeton d'identité OAuth 2.0 : jeton émis par Google pour un utilisateur humain ou un compte de service dont la revendication d'audience est définie sur l'ID de ressource de l'application IAP.
- JWT signé avec un compte de service : jeton JWT autosigné ou émis par Google pour un compte de service.
Incluez ces identifiants à IAP dans l'en-tête HTTP Authorization ou Proxy-Authorization de la requête.
Avant de commencer
Assurez-vous de disposer d'une application à laquelle vous souhaitez accéder de manière programmatique à l'aide d'un compte de développeur, d'un compte de service ou d'identifiants d'application mobile.
Pour créer un ou plusieurs clients OAuth 2.0, consultez Accès programmatique.
Authentifier un compte utilisateur
Vous pouvez activer l'accès des utilisateurs à votre application depuis une application mobile ou de bureau afin de permettre à un programme d'interagir avec une ressource sécurisée par IAP.
S'authentifier à partir d'une application mobile
- Créez ou utilisez un ID client OAuth 2.0 existant pour votre application mobile. Pour utiliser un ID client OAuth 2.0 existant, suivez les étapes décrites dans Partager des clients OAuth. Ajoutez l'ID client OAuth à la liste d'autorisation pour l'accès programmatique à l'application.
- Obtenez un jeton d'identité pour l'ID client OAuth 2.0 de la ressource sécurisée par IAP.
- Android : demandez un jeton OpenID Connect (OIDC) à l'aide de l'API Google Sign-In. Définissez l'ID client
requestIdTokensur celui de la ressource à laquelle vous vous connectez. - iOS : utilisez Google Sign-In pour obtenir un jeton d'ID.
- Android : demandez un jeton OpenID Connect (OIDC) à l'aide de l'API Google Sign-In. Définissez l'ID client
- Incluez le jeton d'ID dans un en-tête
Authorization: Bearerpour envoyer la requête authentifiée à la ressource sécurisée par IAP.
S'authentifier à partir d'une application de bureau
Cette section décrit comment authentifier un compte utilisateur à partir d'une ligne de commande d'ordinateur de bureau.
- Pour permettre aux développeurs d'accéder à votre application à partir de la ligne de commande, créez un ID client OAuth 2.0 pour ordinateur ou partagez un ID client OAuth pour ordinateur existant.
- Ajoutez l'ID OAuth à la liste d'autorisation pour l'accès programmatique à l'application.
Se connecter à l'application
Chaque développeur doit se connecter pour accéder à une application sécurisée par IAP. Vous pouvez regrouper le processus dans un script, par exemple en utilisant gcloud CLI. L'exemple suivant utilise curl pour se connecter et générer un jeton permettant d'accéder à l'application :
- Connectez-vous à votre compte ayant accès à la ressource Google Cloud .
Démarrez un serveur local qui peut renvoyer les requêtes entrantes.
# Example using Netcat (http://netcat.sourceforge.net/) nc -k -l 4444Accédez à l'URI suivant, où
DESKTOP_CLIENT_IDcorrespond à l'ID client de type Application de bureau :https://accounts.google.com/o/oauth2/v2/auth?client_id=DESKTOP_CLIENT_ID&response_type=code&scope=openid%20email&access_type=offline&redirect_uri=http://localhost:4444&cred_ref=trueDans le résultat du serveur local, recherchez les paramètres de la requête :
GET /?code=CODE&scope=email%20openid%20https://www.googleapis.com/auth/userinfo.email&hd=google.com&prompt=consent HTTP/1.1Copiez la valeur CODE pour remplacer CODE dans la commande suivante, ainsi que l'ID client et le secret de l'application de bureau :
curl --verbose \ --data client_id=DESKTOP_CLIENT_ID \ --data client_secret=DESKTOP_CLIENT_SECRET \ --data code=CODE \ --data redirect_uri=http://localhost:4444 \ --data grant_type=authorization_code \ https://oauth2.googleapis.com/tokenCette commande renvoie un objet JSON avec un champ
id_tokenque vous pouvez utiliser pour accéder à l'application.
Accéder à l'application
Pour accéder à l'application, utilisez le champ id_token :
curl --verbose --header 'Authorization: Bearer ID_TOKEN' URL
Jeton d'actualisation
Vous pouvez utiliser le jeton d'actualisation généré lors du flux de connexion pour obtenir de nouveaux jetons d'ID. Cela s'avère utile lorsque le jeton d'identité d'origine expire. Chaque jeton d'identité est valide pendant environ une heure, période au cours de laquelle vous pouvez envoyer plusieurs requêtes à une application spécifique.
L'exemple suivant utilise curl pour obtenir un nouveau jeton d'identité à l'aide du jeton d'actualisation.
Dans cet exemple, REFRESH_TOKEN est le jeton du flux de connexion.
DESKTOP_CLIENT_ID et DESKTOP_CLIENT_SECRET sont les mêmes que ceux utilisés dans le flux de connexion :
curl --verbose \
--data client_id=DESKTOP_CLIENT_ID \
--data client_secret=DESKTOP_CLIENT_SECRET \
--data refresh_token=REFRESH_TOKEN \
--data grant_type=refresh_token \
https://oauth2.googleapis.com/token
Cette commande renvoie un objet JSON avec un nouveau champ id_token que vous pouvez utiliser pour accéder à l'application.
Authentifier un compte de service
Vous pouvez utiliser un jeton JWT de compte de service ou un jeton OpenID Connect (OIDC) pour authentifier un compte de service auprès d'une ressource sécurisée par IAP. Le tableau suivant décrit certaines des différences entre les différents jetons d'authentification et leurs fonctionnalités.
| Fonctionnalités d'authentification | JWT du compte de service | Jeton OpenID Connect |
|---|---|---|
| Compatibilité avec l'accès contextuel | ||
| Exigence concernant l'ID client OAuth 2.0 |