web-dev-qa-db-ja.com

gcloudなしでサービスアカウント認証トークンを取得しますか?

gcloudを使用せずにGoogle Cloudサービスアカウントの認証ベアラートークンを取得することはできますか?

つまり、HTTPリクエスト(おそらく、JSONキーファイルによって何らかの方法で署名されたもの)を作成して、

gcloud auth application-default print-access-token

この要求は、gcloudをインストールしたくない場合があり、これを提供する可能性のある内部サーバーメタデータにアクセスできない場合に、自分のサーバーで行われます(Compute Engineの場合など) 。

このようなものを提供するoauthエンドポイントはありますか?

または、gcloudを使用して長寿命トークンを生成する方法はありますか?

私はGoogle Cloudエコシステムを初めて使用するので、無知と用語を言い訳します...

17
Jacob Brown

これはまさにあなたが探しているものだと思います:

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

正直なところ、あなたが達成しようとしていたことは正しいとは思いません。

gcloud auth application-default print-access-token

探していたものを実行することを意図していないトークンを取得します。

「このコマンドは、通常はサービスアカウントを使用するが、ユーザー資格情報を提供しやすいローカル開発環境でコードを実行する必要があるコードを開発する場合に役立ちます。」

これにより、このソリューションの実装についてもう少し説明する必要があります。 https://developers.google.com/identity/protocols/OAuth2ServiceAccount

14
GalloCedrone

2番目の質問「gcloudで長寿命トークンを生成する方法はありますか?」ではありません。ただし、更新トークンを使用して、新しいアクセストークンを生成できます。この質問の最初の回答を確認してください。

OAuth2およびGoogle API:アクセストークンの有効期限?

また、認証メカニズムとして使用できるpythonライブラリの例を次に示します。

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

2
Tudormi