カスタムOAuth アプリの作成
各ユーザーやドメインの代わりに、connector がGoogle API にアクセスすることを許可できます。OAuth 認証標準を使って、Google API に接続しましょう。
ユーザーアカウントを使ってGoogle Contacts に接続
OAuth フローでは認証するユーザーにブラウザでGoogle Contacts との通信を要求します。下記で説明するとおり、connector はさまざまな方法でこれをサポートします。
Google Contacts へ認証
InitiateOAuth を"GETANDREFRESH" に設定して、OAuthAccessToken 接続プロパティの生成やOAuth 交換の繰り返しを避けられます。 接続すると、&prodtype; はデフォルトブラウザでOAuth エンドポイントを開きます。ログインして、アプリケーションにアクセス許可を与えます。
connector がOAuth プロセスを完了します。
- コールバックURL からアクセストークンを取得し、リクエストを認証します。
- アクセストークンの期限が切れたときにはリフレッシュしてください。
- 接続にわたり、OAuth 値が維持されるようにします。OAuthSettingsLocation でこのファイルを設定することができます。
サービスアカウントを使って、Domain-Wide データに接続
このOAuth フローのサービスアカウントを使って、ユーザーもしくはドメインの代わりにGoogle API にアクセスすることができます。ドメイン管理者はドメイン全体のアクセスをサービスアカウントに委任する必要があります。サービスアカウントフローを完了させるには、Google API Console で秘密キーを生成する必要があります。サービスアカウントフローでは、connector はOAuthAccessToken を取得し、サービスアカウントと同じGoogle API へのアクセススコープを持つことを可能にします。 connector はJSON Web token (JWT) を交換して、アクセストークンを取得します。秘密キーはJWT の署名に必要です。
秘密キーの生成
サービスアカウントから接続する場合は、次のステップに従います。
- Google API コンソールにログインしてプロジェクトを開きます。 メインメニューから[API マネージャー]を選択します。
- [認証情報]->[認証情報を作成]->[サービスアカウントキー]をクリックします。
- サービスアカウントメニューで[新しいサービスアカウント]か既存のサービスアカウントを選択します。
- 新しいサービスアカウントを作成している時には、追加で一つもしくは複数のロールを選択します。IAM およびAdmin セクションのプロジェクトレベルでプリミティブロールをアサインすることが可能です。他のロールでは、Google API へのカスタムアクセスを有効にできます。
- [キーのタイプ]で[P12 キー]を選択します。
- キーペアをダウンロードします。秘密キーのパスワードが表示されます。これは、OAuthJWTCertPassword 内にあります。
- クレデンシャルページのサービスアカウントキーセクションでは[Manage Service Accounts]をクリックして、OAuthJWTIssuer をサービスアカウントID で表示されたE メールアドレスに設定します。
- [ライブラリ]をクリックして、Drive、Calendar、Contacts API を有効にします。API を有効にするには、API をクリックし、[API を有効にする]をクリックします。
サービスアカウントで認証する
次の接続プロパティを設定して、接続してください。
- InitiateOAuth:GETANDREFRESH に設定。InitiateOAuth を使って、OAuth 交換や、手動でのOAuthAccessToken 接続プロパティの設定の繰り返しを避けられます。
- OAuthJWTCertType:"PFXFILE" に設定。
- OAuthJWTCertPassword:.p12ファイルのパスワードに設定。
- OAuthJWTCertSubject:"*" に設定すると、証明書ストアの1番目の証明書が選択されます。
- OAuthJWTIssuer:サービスアカウントのE メールアドレスに設定。
- OAuthJWTCert:.p12ファイルのパスに設定。
- OAuthJWTSubject:アクセスの委譲を要求しているアプリケーションのユーザーのE メールアドレスを設定。
- connector に要求されるclaim set でJWT を作成し、サインします。
- JWT はアクセストークンと交換されます。
- トークンの期限が切れたときは、JWT を送り、新しいアクセストークンと交換します。