使用 OpenID Connect (OIDC) 进行启动
部署时间:大约 30 分钟
先决条件
重要提示
亚马逊云科技点击流分析 控制台是通过 CloudFront 分发提供的,它被视为一项互联网信息服务。
- 域名。您将使用该域名访问 亚马逊云科技点击流分析 控制台。对于 AWS 中国区域,这是必需的,而对于 AWS 区域则是可选的。
- 在 AWS IAM 中的 SSL 证书。SSL 必须与给定的域名关联。按照 此指南 将 SSL 证书上传到 IAM。这仅适用于 AWS 中国区域。
部署概述
按照以下步骤在 AWS 上部署此解决方案。
步骤 1. 创建 OIDC 客户端
您可以使用不同类型的 OpenID Connect 提供程序。本部分介绍了选项 1 到选项 4。
- (选项 1) 使用来自其他区域的 Amazon Cognito 作为 OIDC 提供程序。
- (选项 2) Authing,这是一个第三方身份验证提供程序的示例。
- (选项 3) Keycloak,这是由 AWS 维护的解决方案,可用作身份验证提供程序。
- (选项 4) ADFS,这是 Microsoft 提供的一项服务。
- (选项 5) 其他第三方身份验证平台,如 Auth0。
按照以下步骤创建 OIDC 客户端,并获取 client_id
和 issuer
。
(选项 1) 使用来自其他区域的 Cognito 用户池
您可以将 Cognito 用户池 作为 OIDC 提供者在受支持的 AWS 区域中使用。
- 在 AWS 区域中访问 Amazon Cognito 控制台。
- 根据此 指南 使用 Amazon Cognito 控制台设置托管 UI。请注意以下两个配置:
- 在选择 应用类型 时选择 公共客户端。确保不要更改 客户端密钥 的选择 不生成客户端密钥。
- 在 OpenID Connect 作用域 中添加 Profile。
-
使用您的域名为 亚马逊云科技点击流分析 控制台设置 回调 URL 和 登出 URL。
- 回调 URL:
http[s]://<domain-name>/signin
- 登出 URL:
http[s]://<domain-name>
注意
如果您未为控制台使用自定义域名,则无法获得控制台的域名。您可以输入一个虚假的域名,例如
clickstream.example.com
,然后根据第 3 步中的指南进行更新。 - 回调 URL:
-
如果您的托管 UI 设置完毕,您应该能够看到如下所示的内容。
-
将应用客户端 ID、用户池 ID 和 AWS 区域保存到一个文件中,稍后会用到。
在步骤 2. 启动堆栈中,使用来自您的 Cognito 用户池的以下参数。
- OIDCClientId:
应用客户端 ID
- OIDCProvider:
https://cognito-idp.${REGION}.amazonaws.com/${USER_POOL_ID}
(选项 2) 使用 Authing.cn OIDC 客户端
- 前往 Authing 控制台。
- 如果您还没有用户池,请创建一个用户池。
- 选择用户池。
- 在左侧导航栏中,选择 Applications 下的 Self-built App。
- 点击 Create 按钮。
- 输入 Application Name 和 Subdomain。
-
从 Endpoint Information 将
App ID
(即client_id
)和Issuer
保存到一个文本文件中,稍后会用到。 -
将
Login Callback URL
和Logout Callback URL
更新, 注意,您需要在Login Callback URL
里添加/signin
, 如下:- 回调 URL:
http[s]://<domain-name>/signin
- 登出 URL:
http[s]://<domain-name>
- 回调 URL:
-
设置授权配置。
您已成功创建了 Authing 自建应用。
在步骤 2. 启动堆栈中,使用来自您的 Authing 用户池的以下参数。
- OIDCClientId:
client id
- OIDCProvider:
Issuer
(选项 3) 使用 Keycloak OIDC 客户端
-
根据 此指南 在 AWS 中国区部署 Keycloak 解决方案。
-
登录 Keycloak 控制台。
-
在左侧导航栏中,选择 Add realm。如果您已经拥有一个 realm,请跳过此步骤。
-
转到 realm 设置页面。选择 Endpoints,然后从列表中选择 OpenID Endpoint Configuration。
-
在浏览器中打开的 JSON 文件中,记录将在稍后使用的 issuer 值。
-
返回 Keycloak 控制台,在左侧导航栏中选择 Clients,然后选择 Create。
-
输入一个包含字母(不区分大小写)或数字的 Client ID。记录将在稍后使用的 Client ID。
-
更改客户端设置。在 Valid Redirect URIs 中输入
http[s]://<亚马逊云科技点击流分析 Console domain>/signin
,在 Web Origins 中输入<console domain>
和+
。提示
如果您没有为控制台使用自定义域名,则控制台的域名尚不可用。您可以输入一个虚假的域名,例如
clickstream.example.com
,然后在第 3 步中按照指南进行更新。 -
在高级设置中,将 Access Token Lifespan 设置为至少 5 分钟。
- 在左侧导航栏中选择 Users。
- 点击 Add user 并输入 Username。
- 创建用户后,选择 Credentials,然后输入 Password。
在步骤 2. 启动堆栈中,使用来自您的 Keycloak realm 的以下参数。
- OIDCClientId:
client id
- OIDCProvider:
https://<KEYCLOAK_DOMAIN_NAME>/auth/realms/<REALM_NAME>
(选项 4) ADFS OpenID Connect 客户端
- 确保已安装 ADFS。有关如何安装 ADFS 的信息,请参考 此指南。
- 确保您可以登录到 ADFS 登录页面。URL 应为
https://adfs.domain.com/adfs/ls/idpinitiatedSignOn.aspx
,您需要将 adfs.domain.com 替换为您实际的 ADFS 域。 - 登录到您的 域控制器,并打开 Active Directory Users and Computers。
-
为 亚马逊云科技点击流分析 用户创建一个 安全组,并将计划中的 亚马逊云科技点击流分析 用户添加到此安全组中。
-
登录到 ADFS 服务器,并打开 ADFS Management。
-
右键单击 Application Groups,选择 Application Group,然后输入 Application Group 的名称。在 Client-Server Applications 下选择 Web browser accessing a web application 选项,并选择 Next。
-
在 Redirect URI 下记录 Client Identifier (
client_id
),输入您的 亚马逊云科技点击流分析 域名(例如xx.example.com
),然后选择 Add,再选择 Next。 -
在 Choose Access Control Policy 窗口中,选择 Permit specific group,在 Policy 部分下选择 parameters,将在步骤 4 中创建的安全组添加进去,然后点击 Next。您可以根据需求配置其他访问控制策略。
-
在摘要窗口下,选择 Next,然后选择 Close。
-
在 ADFS 服务器上打开 Windows PowerShell,并运行以下命令以配置 ADFS 允许您计划的 URL 的 CORS。
-
在 ADFS 服务器上的 Windows PowerShell 下,运行以下命令以获取 ADFS 的 Issuer(
issuer
),类似于https://adfs.example.com/adfs
。
在步骤 2. 启动堆栈中,使用来自您的 ADFS 服务器的以下参数。
- OIDCClientId:
client id
- OIDCProvider: 从上述第 11 步中获取发行方(issuer)的服务器
步骤 2. 启动堆栈
-
登录到 AWS 管理控制台,并使用下方按钮启动 AWS CloudFormation 模板。
在 AWS 控制台中启动 在 AWS 区域中启动 在 AWS 区域中使用自定义域名启动 在 AWS 中国区域中启动 -
模板将在您登录到控制台后的默认区域中启动。若要在不同的 AWS 区域中启动 亚马逊云科技点击流分析 解决方案,请使用控制台导航栏中的区域选择器。
- 在创建堆栈页面上,验证Amazon S3 URL文本框中显示的正确模板 URL,然后选择下一步。
- 在指定堆栈详细信息页面上,为解决方案堆栈分配一个名称。有关命名字符限制的信息,请参阅AWS 身份和访问管理用户指南中的 IAM 和 AWS STS 限额。
-
在参数下,查看模板的参数,并根据需要进行修改。
-
此解决方案使用以下参数:
参数 默认值 描述 OpenID Connector Client Id ( OIDCClientId
)<输入>
OpenID Connect 客户端 ID。 OpenID Connector Issuer ( OIDCProvider
)<输入>
OpenID Connect 提供程序发行方。发行方必须以 https://
开头Admin User Email ( Email
)<需要输入>
指定管理员的电子邮件地址。此电子邮件地址将收到一个临时密码,用于访问 亚马逊云科技点击流分析 Web 控制台。您可以在启动解决方案后直接在配置的 Cognito 用户池中创建更多用户。 IAM Role Prefix ( IamRolePrefix
)<可选输入>
指定在解决方案中创建的 IAM 角色名称的前缀。 IAM Role Boundary ARN ( IamRoleBoundaryArn
)<可选输入>
指定在解决方案中创建的IAM 角色的权限边界。 重要提示
默认情况下,此部署在CloudFront中使用TLSv1.0和TLSv1.1。但是,我们建议您手动配置CloudFront以使用更安全的TLSv1.2/TLSv1.3,并申请证书和自定义域来启用此功能。我们强烈建议您根据以下建议更新您的TLS配置和密码套件选择:
- 传输层安全协议:升级到TLSv1.2或更高版本
- 密钥交换:ECDHE
- 块密码操作模式:GCM
- 身份验证:ECDSA
- 加密密码:AES256
- 消息鉴别:SHA(256/384/除SHA1以外的任何哈希函数)
例如,TLSv1.2_2021 可以满足上述建议。
-
如果您在 AWS 区域中使用自定义域名启动解决方案,则还有以下附加参数:
参数 默认值 描述 Host Zone ID ( HostedZoneId
)<需要输入>
选择 Amazon Route 53 的公共托管区域 ID。 Host Zone Name ( HostedZoneName
)<需要输入>
公共托管区域的域名,例如 example.com
。Record Name ( RecordName
)<需要输入>
控制台的域名的子名称(在 R53 中称为记录名称)。例如,如果您要为控制台使用自定义域 clickstream.example.com
,请输入clickstream
。 -
如果您在 AWS 中国区域中启动解决方案,则还有以下附加参数:
参数 默认值 描述 Domain Name ( Domain
)<输入>
亚马逊云科技点击流分析控制台的自定义域名。不要添加 http(s)
前缀。Certificate Id ( IamCertificateID
)<输入>
在 IAM 中 SSL 证书的 ID。ID 由 21 个大写字母和数字组成。使用 list-server-certificates
命令检索 ID。
-
-
选择下一步。
- 在配置堆栈选项页面上,选择下一步。
- 在审核页面上,检查并确认设置。选中确认模板将创建 AWS Identity and Access Management (IAM) 资源的框。
- 选择创建堆栈以部署堆栈。
您可以在 AWS CloudFormation 控制台中查看堆栈的状态列。大约 10 分钟后,您应该会收到CREATE_COMPLETE状态。
步骤 3. 更新 OIDC 客户端的回调 URL
重要提示
如果您没有使用自定义域名部署栈,请完成以下步骤。
- 登录到 AWS CloudFormation 控制台。
- 选择解决方案的栈。
- 选择 Outputs 选项卡。
- 获取 ControlPlaneURL 作为终结点。
- 更新或添加回调 URL 到您的 OIDC。
- 对于 Cognito,请在客户端的 Allowed callback URL 中添加或更新 URL,值为
${ControlPlaneURL}/signin
。注意:URL 必须以https://
开头。 - 对于 Keycloak,请在客户端的 Valid Redirect URIs 中添加或更新 URL,值为
${ControlPlaneURL}/signin
。 - 对于 Authing.cn,请在 Authentication Configuration 的 Login Callback URL 中添加或更新 URL。
- 对于 Cognito,请在客户端的 Allowed callback URL 中添加或更新 URL,值为
步骤 4. 设置 DNS 解析器
重要提示
如果您在 AWS 区域中部署了栈,则可以跳过此步骤。
该解决方案提供了一个 CloudFront 分发,用于访问 亚马逊云科技点击流分析 控制台。
- 登录到 AWS CloudFormation 控制台。
- 选择解决方案的栈。
- 选择 Outputs 选项卡。
- 获取 ControlPlaneURL 和 CloudFrontDomainName。
- 在 DNS 解析器中为 ControlPlaneURL 创建一个 CNAME 记录,该记录指向前面获取到的 CloudFrontDomainName 域名。
步骤 5. 启动Web控制台
重要提示
您的登录凭据由OIDC提供者管理。在登录亚马逊云科技点击流分析控制台之前,请确保在OIDC提供者的用户池中至少创建了一个用户。
- 在Web浏览器中使用之前分配的域名或生成的ControlPlaneURL。
- 选择登录,并导航到OIDC提供者。
- 输入登录凭据。您可能会被要求根据OIDC提供者的策略更改首次登录时的默认密码。
- 验证完成后,系统将打开亚马逊云科技点击流分析的Web控制台。
一旦您成功登录亚马逊云科技点击流分析控制台,您就可以开始为您的应用程序创建一个项目。