- 在 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。

- 在出现的字段中指定重定向 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 Web 界面:
http://localhost:8500/ui/dc1/kv/secret/。
- 在打开的 Key/Value 选项卡中,选择合适的 Vantage 部署范围。然后选择 vantage 项目。

- 选择 tokenmanagement 服务。

- 进入 oAuthClientConfiguration 部分。

- 选择要为其指定用户数据的服务(google 或 microsoft)。

- 选择 clientId 键。
- 将之前保存的 Client ID 值复制并粘贴到输入字段中,然后单击 Save。

- 对 clientSecret 键重复步骤 6 和 7。
- 运行以下命令以重新启动 tokenmanagement 服务:
更新 Client Secret
在 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 中更新 Client Secret
- 转到 App registrations 页面,并选择用于通过 IMAP 服务器进行身份验证的应用程序。

- 转到 Certificates & secrets 选项卡,然后单击 New client secret。
- 在打开的对话框中,指定 client secret 的名称和过期日期。
- 单击 Add。这将关闭对话框并显示新 client secret 的相关信息。请务必复制并保存其 Value,因为一旦关闭此页面,将无法再次查看该值。
- 如果当前的 client secret 尚未过期,可以将其删除,以便只能使用新的 client secret 来标识客户端。
