- Google Cloud Platform および/または Azure portal 上でアプリケーションを登録します。
- これらのアプリケーション用のアカウント認証情報(Client ID と Client secret)を生成します。
- 生成した認証情報を Consul に設定します。
Google にアプリケーションを登録する
Google Cloud Platform でプロジェクトを作成する
- Google Cloud Platform の New Project ページにアクセスします。
- プロジェクト名を指定し、Create をクリックします。

- プロジェクトが作成されたことを示す通知が表示されるまで待ちます。

アプリケーションの設定
- Google Cloud Console に移動し、該当するプロジェクトを選択します。

- 画面左側のメニューで APIs & Services > OAuth consent screen を選択します。

- External ユーザータイプを選択し、Create をクリックします。
- アプリケーション名を指定します。User support email のドロップダウンリストで、自分の Gmail アドレスを選択します。

- ページ下部の Developer contact information セクションで開発者のメールアドレスを指定し、Save and continue をクリックします。

- Add or remove scopes をクリックします。右側に Update selected scopes ダイアログが開きます。
- 次のテキストをコピーして、ダイアログ下部の Manually add scopes フィールドに貼り付け、Add to table をクリックします:
スコープを手動で選択することもできます。次のスコープを選択する必要があります。
openidhttps://mail.google.com/../auth2/userinfo.email../auth2/userinfo.profile
- Update をクリックします。これにより Update selected scopes ダイアログが閉じ、選択したスコープが表示されます。

- 画面下部の Save and continue をクリックします。
- Test users ページの設定をスキップして Summary ページに進むために、再度 Save and continue をクリックします。
アカウントの認証情報の作成
- 画面左側のメニューで Credentials を選択します。
- + Create credentials をクリックし、OAuth client ID を選択します。

- Web application タイプを選択します。

- Authorized redirect URIs セクションで + Add URI をクリックします。

- 表示されるフィールドに、リダイレクト URI を指定します。

- Create をクリックします。

公開と検証

https://mail.google.com/ スコープにより、アプリケーションは機密なユーザーデータにアクセスできるようになります。そのため、アプリケーションの検証が必要であるというメッセージが表示されます。
アプリケーションを検証するには、次の情報を提供する必要があります。
- アプリケーションのプライバシーポリシーへの公式リンク
- アプリケーションを使用して Google ユーザーデータを取得する目的を示した YouTube 動画
- 機密なユーザーデータへのアクセスが必要な理由を説明した、Google 宛ての文書
- Google Search Console で検証済みのすべてのドメインの完全な一覧

アプリケーションが検証されるまでは、最大 100 人のユーザーしか利用できません。ユーザー数カウンタは OAuth consent screen セクションの下部にあり、プロジェクトの有効期間中にリセットすることはできません。

Microsoft Azure でのアプリケーションの登録
アプリケーションの登録
- App registrations ページを開きます。
- New registration をクリックします。
- アプリケーション名を指定し、サポートするアカウントの種類を選択します。

アプリケーションで Multitenant タイプを選択した場合、そのアプリケーションは任意の Azure AD テナントのユーザーが利用できるようになります。このようなアプリケーションには検証が必要であり、この検証は Microsoft Partner Network の参加者のみが利用できます。参加者でない場合は、Single tenant を選択してください。これにより、アプリは自分の Azure AD テナント内のユーザーにのみ利用可能となります。
- Redirect URI セクションで、Web プラットフォームを選択し、リダイレクト URI を指定します。

- Register をクリックします。
アプリケーションのアクセス許可の設定
- API permissions タブに移動します。

- Add permission をクリックします。
- 表示されたダイアログで Microsoft Graph セクションを選択します。

- Delegated permissions を選択します。

- 次のアクセス許可を追加します。
emailIMAP.AccessAsUser.Alloffline_accessopenidprofile
- Add permissions をクリックします。ダイアログが閉じられ、選択したアクセス許可が表示されます。
クライアント シークレットの作成
- Authentication タブに移動します。

- Implicit grant and hybrid flows セクションで、ID tokens (used for implicit and hybrid flows) を選択します。

- 画面上部の Save をクリックします。
- Certificates & secrets タブに移動し、New client secret をクリックします。

- 表示されるダイアログ ボックスで、クライアント シークレットの名前と有効期限を指定します。
有効期限の上限は 24 か月です。
- Add をクリックします。ダイアログが閉じられ、新しいクライアント シークレットに関する情報が表示されます。


アプリケーションの検証
- Branding & properties タブを開きます。

- Publisher domain フィールドにドメインが指定されていることを確認します。必要に応じて、Configure a domain をクリックしてドメインを設定します。

ドメイン名の横に表示される警告アイコンは、指定されたドメインを持つアプリケーションを検証できないことを意味します。Update domain をクリックして、Azure Active Directory テナントに関連する別の有効なドメインを指定します。あるいは、新しいドメインを検証します。
- Publisher verification セクションで MPN ID を指定し、Verify and save をクリックします。
MPN ID を追加するために必要な権限がない場合は、パブリッシャー検証の要件がすべて満たされていることを確認してください。
資格情報を Consul に渡す
セットアップする前に、kubectl コマンドラインツールがインストールされていること、および Kubernetes クラスターに接続されていることを確認してください。
- 次のコマンドを実行して、Consul の Web インターフェースにアクセスします。
http://localhost:8500/ui/dc1/kv/secret/.
- 開いた Key/Value タブで、該当する Vantage デプロイメント スコープを選択します。次に、vantage プロジェクトを選択します。

- tokenmanagement サービスを選択します。

- oAuthClientConfiguration セクションに移動します。

- ユーザー データを指定したいサービス(google または microsoft)を選択します。

- clientId キーを選択します。
- 先ほど保存した Client ID の値を入力フィールドにコピーして貼り付け、Save をクリックします。

- clientSecret キーについても、手順 6 と 7 を繰り返します。
- 次のコマンドを実行して、tokenmanagement サービスを再起動します。
クライアントシークレットの更新
Google でクライアント シークレットを更新する
- Google Cloud Console にアクセスし、対象のプロジェクトを選択します。
- 左側のメニューで APIs & Services > Credentials を選択します。
- OAuth 2.0 Client IDs セクションで、IMAP サーバーへの接続時の認証に使用しているクライアント ID を選択します。
- Reset secret をクリックします。

- ポップアップダイアログボックスで Reset をクリックします。これにより Client secret の値が更新され、以前の値が失効します。
- 認証情報を含む JSON ファイルをダウンロードします。あるいは、画面右側に表示されている Client secret の値をコピーします。

Microsoft Azure でクライアント シークレットを更新する
- App registrations ページを開き、IMAP サーバーによる認証に使用するアプリケーションを選択します。

- Certificates & secrets タブを開き、New client secret をクリックします。
- 表示されるダイアログ ボックスで、クライアント シークレットの名前と有効期限を指定します。
- Add をクリックします。ダイアログが閉じられ、新しいクライアント シークレットに関する情報が表示されます。ページを閉じると再度参照できなくなるため、Value は必ずコピーして保存しておいてください。
- 現在のクライアント シークレットの有効期限がまだ切れていない場合は、それを削除して、新しいクライアント シークレットだけでクライアントを識別できるようにすることができます。
Consul でクライアントシークレットを更新する
clientId 値のコピー)は実行しないでください。