- 在 Google Cloud Platform 和/或 Azure 入口網站中註冊應用程式。
- 為這些應用程式產生帳戶憑證(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:
您也可以手動選取 scope。需要選取下列 scope:
openidhttps://mail.google.com/../auth2/userinfo.email../auth2/userinfo.profile
- 按一下 Update。這會關閉 Update selected scopes 對話方塊,並顯示已選取的 scope。

- 按一下畫面底部的 Save and continue。
- 再次按一下 Save and continue,以略過 Test users 頁面的設定並前往 Summary 頁面。
建立帳戶憑證
- 在畫面左側的功能表中選擇 Credentials。
- 按一下 + Create credentials,並選擇 OAuth client ID。

- 選取 Web application 類型。

- 在 Authorized redirect URIs 區段中,按一下 + Add URI。

- 在隨即出現的欄位中,指定 redirect URI:

- 按一下 Create。

發佈與驗證

https://mail.google.com/ 存取範圍允許應用程式存取機密的使用者資料,因此會顯示一則訊息,指出應用程式需要通過驗證。
若要驗證應用程式,您需要提供:
- 應用程式隱私權政策的正式連結
- 一段 YouTube 影片,示範您使用此應用程式取得 Google 使用者資料之聲明用途
- 一份給 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 網頁介面的存取權:
http://localhost:8500/ui/dc1/kv/secret/。
- 在開啟的 Key/Value 分頁中,選取適當的 Vantage 部署範圍。然後選取 vantage 專案。

- 選取 tokenmanagement 服務。

- 前往 oAuthClientConfiguration 區段。

- 選取您要為其指定使用者資料的服務(google 或 microsoft)。

- 選取 clientId 金鑰。
- 將先前儲存的 Client ID 值複製並貼到輸入欄位中,然後按一下 Save。

- 針對 clientSecret 金鑰重複步驟 6 和 7。
- 執行下列命令以重新啟動 tokenmanagement 服務:
更新用戶端密鑰
在 Google 中更新 Client Secret
- 前往 Google Cloud Console,並選取對應的專案。
- 在左側功能表中,選取 APIs & Services > Credentials。
- 在 OAuth 2.0 Client IDs 區段中,選取用於連線至 IMAP 伺服器時進行驗證的識別碼。
- 按一下 Reset secret。

- 在跳出對話方塊中按一下 Reset。這會更新 Client secret 的值,並使先前的值失效。
- 下載包含認證資訊的 JSON 檔案。或者,從畫面右側複製 Client secret 的值。

在 Microsoft Azure 中更新用戶端密鑰
- 前往 App registrations 頁面,選取用於透過 IMAP 伺服器進行驗證的應用程式。

- 前往 Certificates & secrets 索引標籤,然後按一下 New client secret。
- 在隨即開啟的對話方塊中,指定用戶端密鑰的名稱及到期日。
- 按一下 Add。對話方塊會關閉,並顯示新用戶端密鑰的相關資訊。請務必複製並儲存其 Value,因為關閉此頁面後,您將無法再存取該值。
- 如果現有的用戶端密鑰尚未過期,您可以將其刪除,以確保只有新的用戶端密鑰可用於識別用戶端。
