跳至内容

如何设置应用程序负载均衡器以通过 Amazon Cognito 用户池对用户进行身份验证?

2 分钟阅读
0

我想将应用程序负载均衡器与 Amazon Cognito 用户池集成以进行用户身份验证。

简短描述

要通过应用程序负载均衡器Amazon Cognito 用户池设置用户身份验证,请完成以下步骤:

  1. 创建应用程序负载均衡器。
  2. 获取应用程序负载均衡器的 DNS 名称。
  3. 创建并配置 Amazon Cognito 用户池。
  4. 配置应用程序负载均衡器。
  5. 测试设置。

解决方法

创建应用程序负载均衡器

**注意:**如果您已配置应用程序负载均衡器,请继续执行“获取应用程序负载均衡器的 DNS 名称”部分。

完成以下步骤:

  1. 创建应用程序负载均衡器
  2. 为您的应用程序负载均衡器创建 HTTPS 侦听器

**注意:**只有 HTTPS 侦听器支持 authenticate-cognitoauthenticate-oidc 规则操作类型

获取应用程序负载均衡器的 DNS 名称

完成以下步骤:

  1. 打开 Amazon Elastic Compute Cloud (Amazon EC2) 控制台
  2. 在导航窗格中的 Load Balancing(负载均衡)下,选择 Load Balancers(负载均衡器)。
  3. 选择您的应用程序负载均衡器。
  4. Details(详细信息)选项卡中,记下您的负载均衡器的 DNS name(DNS 名称),以便在后续步骤中使用。

创建并配置 Amazon Cognito 用户池

完成以下步骤:

  1. 打开 Amazon Cognito 控制台
  2. 在导航窗格中,选择 Create a user pool(创建用户池)。
    **注意:**创建用户池时,请配置生产环境所需的设置。创建用户池后,无法更改某些用户池设置。有关详细信息,请参阅创建 Amazon Cognito 用户池后如何更改其属性?
  3. 为您的用户池配置应用程序客户端
    配置应用程序客户端时,请选择 Generate a client secret(生成客户端密钥)单选按钮。有关详细信息,请参阅准备使用 Amazon Cognito
  4. 在导航窗格中,选择 User pools(用户池),然后选择您的用户池。记下要在后续步骤中使用的用户池 ID。
  5. 选择用户池的 App integration(应用程序集成)选项卡,然后为您的用户池添加域
  6. 在用户池的 App integration(应用程序集成)选项卡上,在 App clients and analytics(应用程序客户端和分析)部分中选择您的应用程序客户端。
  7. App client(应用程序客户端)页面的 App client information(应用程序客户端信息)下,记下客户端 ID,以便在后续步骤中使用。
  8. Hosted UI(托管 UI)部分中,选择 Edit(编辑)。
  9. 选择 Add callback URL(添加回调 URL),然后输入 https://load-balancer-dns-name/oauth2/idpresponse,并替换为您的 DNS 名称。如果您使用 CNAME 记录将自定义域映射到您的应用程序负载均衡器,请输入 https://CNAME/oauth2/idpresponse,并替换为您的自定义域名。
    **注意:**DNS 名称不能包含大写字母。
  10. 选择 Add sign-out URL(添加注销 URL),然后输入要在用户注销后将他们重定向到的 URL。要测试重定向,您可以输入任何有效的 URL,例如 https://example.com/
  11. 对于 Identity providers(身份提供者),选择 Cognito user pool(Cognito 用户池)。
  12. OAuth 2.0 grant types(OAuth 2.0 授权类型)下,选择 Authorization code grant(授权码授权)。针对您的使用案例,选择其他 OAuth 授权类型。
  13. OpenID Connect scopes(OpenID Connect 范围)下,选择 OpenID。OpenID 范围返回 ID 令牌。针对您的使用案例,选择其他 OpenID Connect (OIDC) 范围。
  14. 选择 Save changes(保存更改)。

有关详细信息,请参阅更新用户池和应用程序客户端配置通过第三方身份提供者登录用户池

配置您的应用程序负载均衡器

完成以下步骤:

  1. 打开 Amazon EC2 控制台
  2. 在导航窗格中的 Load Balancing(负载均衡)下,选择 Load Balancers(负载均衡器)。
  3. 选择您的应用程序负载均衡器。
  4. Listeners and rules(侦听器和规则)选项卡上,选择 HTTPS 协议。
  5. 选择 Manage rules(管理规则),然后选择 Edit rules(编辑规则)。
  6. Listeners rules(侦听器规则)部分中,选择要更新的默认规则
  7. 选择 Action(操作),然后选择 Edit rules(编辑规则)。
  8. 为 HTTPS 侦听器默认规则配置以下设置:
    对于 Authentication(身份验证),选择 Use OpenID or Amazon Cognito(使用 OpenID 或 Amazon Cognito)。
    对于 Identity provider(身份提供者),选择 Amazon Cognito
    对于 User pool(用户池),选择您的用户池 ID
    对于 App client(应用程序客户端),选择您的客户端 ID
    展开 Advanced authentication settings(高级身份验证设置)。
    命名会话 cookie。
    设置会话超时。默认值为 7 天。
    Scope(范围)中,输入您为用户池应用程序客户端配置的范围,用空格分隔。您可以在用户池的 OIDC 配置中查找范围。例如,如果 scopes_supported 值为 ["openid","email","phone","profile"],请输入 openid email phone profile(OpenID 电子邮件电话配置文件)。
    对于 Action on unauthenticated request(对未经身份验证的请求执行操作),保留默认值。
    (可选)展开 Extra request parameters - optional(额外请求参数 - 可选),以在身份验证期间向身份提供者(例如 Cognito)添加参数。例如,如果 Cognito 用户池将 Google 作为自己的身份提供者,则您可以添加额外的参数 {Key: identity_provider, Value: Google}。有关请求参数的详细信息,请参阅请求参数
    对于 Routing actions(路由操作),选择 Forward to target group(转发到目标组),然后选择目标组。
    (可选)对于 Target group stickiness(目标组粘性),在使用案例需要时选择 Turn on target group stickiness(启用目标组粘性)。
  9. 配置以下安全侦听器设置:
    对于 Security policy(安全策略),选择适合您的用例的安全策略
    对于 Default SSL/TLS server certificate(默认 SSL/TLS 服务器证书),选择您的证书来源。
  10. 选择 Save changes(保存更改)。

测试设置

在 Web 浏览器中,输入以下 URL 之一:

  • https://load-balancer-dns-name/
  • https://CNAME/

**注意:**请将 load-balancer-dns-name 替换为您的 DNS 名称,将 CNAME 替换为您的自定义域。

当您输入 URL 时,您将被重定向到您的用户池的 Amazon Cognito 托管的 Web 用户界面。在用户登录并由用户池对其进行身份验证后,用户将被重定向到目标。

相关信息

应用程序负载均衡器入门

使用应用程序负载均衡器内置身份验证功能简化登录

应用程序负载均衡器的侦听器规则

OIDC 用户群体 IdP 身份验证流

AWS 官方已更新 8 个月前