web-dev-qa-db-fra.com

Obtenir un jeton d'authentification de compte de service sans gcloud?

Est-il possible d'obtenir un jeton porteur d'autorisation pour un compte de service Google Cloud sans utiliser gcloud?

Autrement dit, je voudrais faire une demande HTTP (vraisemblablement signée d'une certaine manière par mon fichier de clé JSON) qui me fournirait l'équivalent de

gcloud auth application-default print-access-token

Cette demande serait effectuée sur mon propre serveur, où je ne souhaite peut-être pas installer gcloud et où je n'ai accès à aucune métadonnée de serveur interne qui pourrait fournir cela (par exemple, comme c'est le cas avec Compute Engine) .

Y a-t-il un point de terminaison oauth qui fournit quelque chose comme ça?

Alternativement, existe-t-il un moyen de générer des jetons à longue durée de vie avec gcloud?

Je suis nouveau dans l'écosystème Google Cloud, alors excusez mon ignorance et ma terminologie ...

17
Jacob Brown

Je pense que c'est exactement ce que vous recherchez:

https://developers.google.com/identity/protocols/OAuth2#serviceaccount

Honnêtement, je ne pense pas que ce que vous tentiez de réaliser était correct,

gcloud auth application-default print-access-token

vous obtenez un jeton qui n'est pas destiné à faire ce que vous cherchiez:

"Cette commande est utile lorsque vous développez du code qui utiliserait normalement un compte de service mais que vous devez exécuter le code dans un environnement de développement local où il est plus facile de fournir des informations d'identification utilisateur."

Cela devrait vous guider un peu plus dans la mise en œuvre de cette solution: https://developers.google.com/identity/protocols/OAuth2ServiceAccount

14
GalloCedrone

Pour votre deuxième question, "existe-t-il un moyen de générer des jetons à longue durée de vie avec gcloud?", Non, il n'y en a pas. Cependant, vous pouvez utiliser un jeton d'actualisation pour générer de nouveaux jetons d'accès. Vérifiez la première réponse à cette question:

OAuth2 et API Google: délai d'expiration du jeton d'accès?

Et aussi, voici un exemple d'une bibliothèque python que vous pouvez utiliser comme mécanisme d'authentification:

https://github.com/GoogleCloudPlatform/google-auth-library-python/blob/master/google/oauth2/credentials.py

2
Tudormi