Amazon Cognito 为 Web 和移动应用的终端用户提供 SSO 身份管理。您可以将 Amazon Cognito 作为 Cloudflare One 的 OIDC 身份提供商进行集成。
- 一个 Amazon Cognito 用户池 ↗
设置集成需要以下 Amazon Cognito 值:
- 应用(客户端)ID
- 客户端密钥
- Auth URL
- Token URL
- Certificate(密钥)URL
获取这些值的步骤:
-
登录您的 Amazon Cognito 管理门户。
-
前往 User pools(用户池),选择您的用户池。
-
选择 App integration(应用集成) 选项卡。
-
在 Domain(域) 下,复制您的用户池域,或配置新域 ↗。
-
记录以下 Amazon Cognito OIDC 端点 ↗:
- Auth URL:
https://<your user pool domain>/oauth2/authorize - Token URL(令牌 URL):
https://<your user pool domain>/oauth2/token - Certificate(密钥)URL:
https://cognito-idp.<region>.amazonaws.com/<your user pool ID>/.well-known/jwks.json(即 User pool overview(用户池概览) 中显示的 Token signing key URL(令牌签名密钥 URL)。)
- Auth URL:
-
在 App clients(应用客户端列表) 下,选择 Create app client(创建应用客户端)。
-
对于 App type(应用类型),选择 Confidential client(机密客户端)。
-
为您的应用输入 App client name(应用客户端名称)。
-
确保已选中 Generate a client secret(生成客户端密钥)。
-
配置以下 Hosted UI settings(托管 UI 设置):
-
在 Allowed callback URLs(允许的回调 URL) 中,添加以下 URL:
https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/callback您可以在 Cloudflare 仪表板 ↗ 的 Settings(设置)> Team name and domain(团队名称和域名)> **Team name(团队名称)**下找到您的团队名称。
-
选择与此应用客户端配合使用的 Identity providers(身份提供商)。至少启用 **Cognito user pool(Cognito 用户池)**作为提供商。
-
对于 OAuth 2.0 grant types(OAuth 2.0 授权类型),选择 Authorization code grant(授权码授权)。
-
对于 OpenID Connect scopes(OpenID Connect 范围),选择 OpenID、**Email(电子邮件)**和 Profile(个人资料)。
-
-
选择 Create app client(创建应用客户端)。
-
接下来,选择您刚创建的应用客户端。
-
复制其 Client ID(客户端 ID) 和 Client secret(客户端密钥)。
-
在 Cloudflare 仪表板 ↗中,前往 Zero Trust > Integrations(集成) > Identity providers(身份提供商)。
-
在 Your identity providers(您的身份提供商) 下,选择 Add new identity provider(添加新的身份提供商)。
-
选择 OpenID Connect。
-
为您的身份提供商命名,并使用从 Amazon Cognito 获取的信息填写必填字段。
-
(可选)如果您的 IdP 支持该协议,请启用密钥交换验证(PKCE) ↗。所有登录尝试都将执行 PKCE。
-
(可选)在 Optional configurations(可选配置) 下,输入您希望添加到用户身份的自定义 OIDC 声明。
-
选择 Save(保存)。
要测试连接是否正常,请选择 Test(测试)。
{
"config": {
"client_id": "<your client id>",
"client_secret": "<your client secret>",
"auth_url": "https://<your user pool domain>/oauth2/authorize",
"token_url": "https://<your user pool domain>/oauth2/token",
"certs_url": "https://cognito-idp.<region>.amazonaws.com/<your user pool ID>/.well-known/jwks.json",
"scopes": ["openid", "email", "profile"],
"claims": ["sub", "cognito:username", "name", "cognito:groups"]
},
"type": "oidc",
"name": "Amazon Cognito example"
}