6

私はGoogleクラウドプラットフォームで作業しています。GoogleクラウドストレージJSON APIを使用してGoogleクラウドストレージからオブジェクトを保存および取得しようとしているような、Java以外のアプリケーションを使用してクラウド機能にアクセスする必要があります。Googleのクラウドプラットフォームでの認証

アクセスする前に私は自分のアプリケーションを認証する必要があるので、承認されたアクセス権を持つ認可APIを見つけました。私は

  • APIキー
  • のOAuthクライアントID
  • サービスとしての資格情報の3つの選択肢で終わるGoogleクラウドプラットフォームから資格情報を取得しようとしていた

    は、キーアカウント

私はGCPのドキュメントを見に行きましたが、それらを区別する明確な情報が得られなかったので、私はGCPをかなり新しくしています。これらの資格情報タイプには、サンプルJavaプログラムで、Google Cloud client Library APIの使用方法を示します。

答えて

6

のGoogle Cloud Platformの認証ガイドはここに決定的なリソースです: https://cloud.google.com/docs/authentication

Googleのさまざまな認証メカニズムが異なる目的を果たすため、私はあなたがについて尋ねたもの、そしてあなたがより明確になるはずのための正しい選択を説明しましょう。

APIキーを使用すると、API呼び出しを行うプロジェクトを識別することができます。彼らはクォータを使ってプロジェクトに代わって行われたリクエストを制限するのに適しています。 APIキーは、一般にクライアントアプリケーションやウェブページに埋め込まれているため、一般に安全とはみなされません。このため、APIキーは認証も許可もしません。匿名ユーザーが呼び出しを行えないようにする必要がある場合は、APIキーでは十分ではありません。

次は、OAuthです。 OAuthは、Googleアカウントを持つ実際の人間のユーザーを認証されたAPI呼び出しに変える方法です。 gcloudなどのアプリをローカルで実行しているときや、人間にGoogle Cloudを使用する権限を人に依頼する必要があるWebサイトを構築している場合など、自分自身で何かをしたいときに使用します代わりに。このプロセスには、クライアントIDと秘密が含まれ、リフレッシュトークンとアクセストークンで終わります。いくつかのフレーバーがあります。

最後に、サービスアカウント。あなたのアプリが、特定の人間ではなく、どこかで動いている場合は、アプリケーションのサービスアカウントを作成してモデルをモデル化する必要があります。サービスアカウントは、パスワードを持たない特別なユーザーです。代わりに、彼らは彼ら自身として認証することができるようにアプリで展開することができる秘密鍵ファイルを持っています。これは、アプリが特定のユーザー(たとえば、gcloudgsutilなどのクラウド管理プログラム)のために実行されなければ、通常は必要なものです。

Google Cloud Java libraryには「Application Default Credentials」という機能があり、アプリケーションがApp EngineまたはGCEで実行されている場合にauthを設定する必要はありません。ローカルマシン上で自分でコードを実行し、gcloudをインストールする場合は、authも処理できます。

ここGCSバケットを作成し、Compute Engineのプログラムのan exampleだ:それはすべての認証については何も言っていませんか

Storage storage = StorageOptions.getDefaultInstance().getService(); 
Bucket bucket = storage.create(BucketInfo.of("myBucketName")); 

お知らせ。アプリケーションのデフォルトの資格情報によって、適切なサービスアカウントまたはユーザーが選択されます。それはあなたがそのような環境にいることを前提としています。秘密鍵.jsonファイルをお持ちの場合は、代わりに次のようにしてください:

これだけです!

+0

すぐに返信いただきありがとうございました。 GoogleCredentialsクラスはサービスアカウントキーを使用してユーザーを認証しますので、OAuthクライアントIDとAPIキーの使用方法を示すAPIスニペットを提供してください。これらの3つすべてを使用して認証を実装する必要があるためです。 googleクラウドクライアントライブラリAPIの例を提供してください –

+0

OAuthの様々な味があります。私はあなたのアプリがうまく答えるためにしたいことをもっと知る必要があります。 Google OAuthの一般的なガイドはhttps://developers.google.com/identity/protocols/OAuth2、Javaライブラリとサンプルはこちら:https://developers.google.com/api-client-library/java/ google-oauth-java-client/oauth2 –

+0

seckがGCSからオブジェクトをフェッチしてローカルで処理するための簡単なアプリケーションを開発していますが、OAuthクライアントのように認証に使用する認証情報タイプを使用するオプションを指定する必要があります。 IDまたはサービスアカウントのキーなどです。私は認証にサービスアカウントキーのJSONファイルを使用でき、OAuthクライアントIDから取得したクライアントの秘密のJSONファイルを使用したいと考えています。 「googleクラウドクライアントライブラリAPIの例」をお勧めします。 –

関連する問題