カスタムOAuth アプリの作成
本製品 は次のOAuth 認証フローを行います。
- ユーザー同意フローにより、個々のユーザーが自分のデータに接続できます。
- サービスアカウントフローを使用すると、ドメイン全体のデータにアクセスできます。
ユーザーアカウントを使ってGoogle に接続
OAuth フローでは認証するユーザーにブラウザでGoogle との通信を要求します。下記で説明するとおり、本製品 はさまざまな方法でこれをサポートします。
デスクトップアプリケーションからGoogle へ認証
InitiateOAuth をGETANDREFRESH に設定して、接続してください。 InitiateOAuth を使って、OAuth 交換や、手動でのOAuthAccessToken接続プロパティの設定の繰り返しを避けられます。 接続すると、本製品 はデフォルトブラウザでOAuth エンドポイントを開きます。ログインして、アプリケーションにアクセス許可を与えます。本製品 がOAuth プロセスを完了します。
- コールバックURL からアクセストークンを取得し、リクエストを認証します。
- アクセストークンの期限が切れたときにはリフレッシュしてください。
- OAuth 値を保存し、接続間で永続化されるようにします。このファイルはOAuthSettingsLocation で設定されます。
Web アプリケーションからの認証
Web アプリケーションから接続する場合、または本製品 にブラウザウィンドウを開く権限がない場合は、verifier code とアクセストークンを交換する必要があります。
始めるには、Google にOAuth アプリを登録して次の接続プロパティを設定します。
- OAuthClientId:アプリケーション設定のクライアントID に設定。
- OAuthClientSecret:アプリケーション設定のクライアントシークレットに設定。
アプリを登録してOAuthClientId およびOAuthClientSecret を設定したら、verifier code をアクセストークンと交換できます。
- GetOAuthAuthorizationURL を呼び出します。ストアドプロシージャがOAuth エンドポイントのURL を返します。
-
OAuth エンドポイントにログインして、アプリケーションを認可します。コールバックURL 経由でリダイレクトされます。
verifier code は"Code" と名付けられたクエリ文字列パラメータとして、コールバックURL に追加されます。verifier code を取り出します。
- GetOAuthAccessToken を呼び出します。
サービスアカウントを使って、Domain-Wide データに接続
このOAuth フローのサービスアカウントを使って、ユーザーもしくはドメインの代わりにGoogle API にアクセスすることができます。ドメイン管理者はドメイン全体のアクセスをサービスアカウントに委任することができます。
サービスアカウントフローを完了させるには、Google API Console で秘密キーを生成します。サービスアカウントフローにおいて、本製品 はOAuthAccessToken へのJSON Web Token (JWT) を交換します。秘密キーはJWT の署名に必要です。OAuthAccessToken が認証し、本製品 はサービスアカウントと同じアクセス許可が与えられます。
秘密キーの生成
下記の手順に従って、秘密キーを生成しアプリケーションのクレデンシャルを取得します。
- Google API コンソールにログインします。
- [プロジェクトの作成]をクリック、または既存のプロジェクトを選択します。
- API Manager で、[認証情報]->[認証情報を作成]->[サービスアカウントキー]をクリックします。サービスアカウントメニューで[新しいサービスアカウント]か既存のサービスアカウントを選択します。[キーのタイプ]で[P12 キー]を選択します。
- [作成]をクリックして、キーペアをダウンロードします。秘密キーのパスワードが表示されます。これは、OAuthJWTCertPassword 内にあります。
- クレデンシャルページのサービスアカウントキーセクションでは[Manage Service Accounts]をクリックして、OAuthJWTIssuer をサービスアカウントID で表示されたE メールアドレスに設定します。
- [ライブラリ]->[Google Drive API]->[有効にする]をクリックします。
サービスアカウント
次の接続プロパティを設定して、接続してください。
- InitiateOAuth:GETANDREFRESH に設定。InitiateOAuth を使って、OAuth 交換や、手動でのOAuthAccessToken 接続プロパティの設定の繰り返しを避けられます。
- OAuthJWTCertType:"PFXFILE" に設定。
- OAuthJWTCertPassword:.p12ファイルのパスワードに設定。
- OAuthJWTCertSubject:"*" に設定すると、証明書ストアの1番目の証明書が選択されます。
- OAuthJWTIssuer:サービスアカウントのE メールアドレスに設定。
- OAuthJWTCert:.p12ファイルのパスに設定。
- OAuthJWTSubject:アクセスの委譲を要求しているアプリケーションのユーザーのE メールアドレスを設定。
- 本製品 に要求されるclaim set でJWT を作成し、サインします。
- JWT はアクセストークンと交換されます。
- トークンの期限が切れたときは、JWT を送り、新しいアクセストークンと交換します。