Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
如何设置我的应用程序负载均衡器以通过另一个 AWS 账户中的 Amazon Cognito 用户池对用户进行身份验证?
我想通过 Amazon Cognito 用户池在我的应用程序负载均衡器中使用 Amazon Cognito 身份验证。但是,我的用户池位于另一个 AWS 账户中。
解决方法
在以下解决方法中,账户 B 是应用程序负载均衡器的所属账户,账户 A 是用户池的所属账户。
创建应用程序负载均衡器
如果您已经有应用程序负载均衡器,请继续进行下一部分。
如果您没有应用程序负载均衡器,请[创建一个带有 HTTPS 侦听器的应用程序负载均衡器](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html)。
**注意:**只有 HTTPS 侦听器支持 authenticate-cognito 和 authenticate-oidc 规则操作类型。
获取账户 B 中应用程序负载均衡器的 DNS 名称
在账户 B 中完成以下步骤:
- 打开 Amazon Elastic Compute Cloud (Amazon EC2) 控制台。
- 在导航窗格中,选择 Load Balancers(负载均衡器)。
- 选择您的应用程序负载均衡器。
- 在 Description(描述)选项卡上,记下您的负载均衡器的 DNS 名称,以便在后续步骤中使用。
在账户 A 中创建并配置用户池
如果您在另一个账户中已有用户池,请继续进行下一部分。
如果您没有用户池,请在账户 A 中完成以下步骤:
- [创建具有应用程序客户端的 Amazon Cognito 用户池](https://docs.aws.amazon.com/cognito/latest/developerguide/getting-started-user-pools-application.html)。
**注意:**创建应用程序客户端时,您可以选择以下四个选项之一:传统 Web 应用程序、单页应用程序、移动应用程序和 M2M 身份验证。如果您选择传统 Web 应用程序或 M2M 身份验证,将会生成一个带客户端密钥的应用程序客户端。 - 打开 Amazon Cognito 控制台。
- 在您的用户池的 User pool overview(用户池概览)部分中,记下用户池 ID,以便在后续步骤中使用。
- 在 Branding(品牌)选项卡上,选择 Domain(域)。为您的用户池添加 Amazon Cognito 域名。该域名是 Cognito 托管 UI 所需的唯一域前缀。
- 在 Applications(应用程序)下,选择 App clients(应用程序客户端)。
- 选择要更新的应用程序客户端。
- 在 App client(应用程序客户端)页面上,完成以下步骤:
启用显示客户端密钥。
记下应用程序客户端 ID 和应用程序客户端密钥,以便在后续步骤中使用。 - 在 Hosted UI(托管 UI)下,添加 https://load-balancer-dns-name/oauth2/idpresponse 和 https://custom-domain-name/oauth2/idpresponse 回调 URL。
- 对于 OAuth 2.0 授权类型,选择 Authorization code grant(授权码授权)。
- 对于 OAuth 2.0 范围,选择 openid。
- 选择 Save changes(保存更改)。
获取您的用户池的 OIDC 配置详细信息
要将您的用户池设置为应用程序负载均衡器上的 OpenID Connect (OIDC) 身份提供者 (IdP),您必须获取 OIDC 配置端点的详细信息。
要获取配置详细信息,请完成以下步骤:
- 在您的浏览器中输入以下 URL:https://cognito-idp.region.amazonaws.com/userPoolId/.well-known/openid-configuration。
**注意:**请将 region 替换为您的用户池的 AWS 区域(例如 us-east-1),将 userPoolId 替换为您的用户池 ID。 - 在浏览器中显示的 JSON 响应中,记下以下字段的值:
authorization_endpoint
issuer
scopes_supported
token_endpoint
userinfo_endpoint
在账户 B 中配置您的应用程序负载均衡器
在账户 B 中完成以下步骤:
- 打开 Amazon EC2 控制台。
- 选择您的应用程序负载均衡器。
- 在 Listener and Rules(侦听器和规则)选项卡上,选择 HTTPS:443 rule(HTTPS:443 规则)。
- 在 Manage rules(管理规则)下,选择 Edit rule(编辑规则)。
- 选择默认规则。
- 在 Actions(操作)下,选择 Edit rule(编辑规则)。
- 在 Default(默认)操作下,选择 Authenticate Users(对用户进行身份验证)。
**注意:**默认情况下,OIDC identity provider(OIDC 身份提供者)处于选中状态。 - 在以下字段中输入您记下的值:
对于 Issuer(发布者),输入发布者值。
对于 Authorization endpoint(授权端点),输入 authorization_endpoint 值。
对于 Token endpoint(令牌端点),输入 token_endpoint 值。
对于 User info endpoint(用户信息端点),输入 userinfo_endpoint 值。
对于 Client ID(客户端 ID),输入您的应用程序客户端 ID。
对于 Client secret(客户端密钥),输入您的应用程序客户端密钥。 - 选择 Save(保存)。
测试设置
完成以下步骤:
- 在浏览器中,输入您的应用程序负载均衡器的 URL。
- 验证您是否被重定向到 Cognito 托管 UI。
- 使用有效的用户凭证登录。
**注意:**为避免错误,请确保所有 URL 均使用小写字符。
相关信息
- 语言
- 中文 (简体)
