サービス アカウントの Google の Java IAP 認証の例を試しました: https://cloud.google.com/iap/docs/authentication-howto#iap_make_request-java
これは、env var に記載されているローカル サービス アカウントの json 資格情報ファイルがある場合にうまく機能しますGOOGLE_APPLICATION_CREDENTIALS=<path-to-file>
。
別のドキュメント ページhttps://cloud.google.com/docs/authentication/production#auth-cloud-implicit-javaには、次のように記載されています。
環境変数が設定されていない場合、ADC は、Compute Engine、Kubernetes Engine、App Engine、および Cloud Functions が提供するデフォルトのサービス アカウントを、これらのサービスで実行されるアプリケーションに使用します。
ただし、env var を提供しない場合、例の auth ライブラリは とは異なるタイプの資格情報を生成するように見えServiceAccountCredentials
、エラーがスローされます。作成された資格情報をログに記録し、それらが解決されてComputeEngineCredentials
、エラーがスローされる Google の例のこの部分につながります。
if (credentials == null || !(credentials instanceof ServiceAccountCredentials)) {
throw new Exception("Google credentials : service accounts credentials expected");
}
私が取り組んでいるシナリオでは、json 資格情報ファイルをアップロードしてその環境変数を使用して実行するオプションが常にあるとは限りません。いずれにせよ、コンピューティング エンジンがその構成でサービス アカウントとして識別できることを期待します。不足しているものはありますか?