- 在 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:
您也可以手动选择作用域。需要选择以下作用域:
openidhttps://mail.google.com/../auth2/userinfo.email../auth2/userinfo.profile
- 单击 Update(更新)。这将关闭 Update selected scopes(更新选定作用域) 对话框并显示选定的作用域。

- 单击屏幕底部的 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 同意界面部分的底部,在项目整个生命周期内无法重置。

在 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 服务器进行身份验证的标识符。
- 单击 Reset secret。

- 在弹出的对话框中单击 Reset。这将更新 Client secret 的值,并使之前的值失效。
- 下载包含凭据的 JSON 文件。或者,从屏幕右侧复制 Client secret 的值。

在 Microsoft Azure 中更新客户端机密
- 转到 App registrations 页面,并选择用于通过 IMAP 服务器进行身份验证的应用程序。

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