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

2 分钟阅读
0

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

简短描述

要对用户进行管理和身份验证,您可以将应用程序负载均衡器Amazon Cognito 用户群体集成。要使用应用程序负载均衡器和 Amazon Cognito 用户群体设置用户身份验证,请完成以下步骤:

1.    创建应用程序负载均衡器,并获取其 DNS 名称。

2.    创建和配置 Amazon Cognito 用户群体。

3.    配置应用程序负载均衡器。

4.    测试设置。

解决方法

要配置应用程序负载均衡器和 Amazon Cognito 用户群体,以对您的应用程序用户进行身份验证,请完成以下步骤。

创建应用程序负载均衡器

**注意:**如果您已经配置了应用程序负载均衡器,则请继续进行下一部分。

1.    创建面向互联网的应用程序负载均衡器

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

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

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

1.    打开 Amazon Elastic Compute Cloud (Amazon EC2) 控制台

2.    在导航窗格中,选择 Load Balancing(负载均衡)下的 Load Balancers(负载均衡器)。

3.    选择您的应用程序负载均衡器。

4.    在 Description(描述)选项卡上,复制并保存您的负载均衡器的 DNS 名称。使用此 DNS 名称访问您的应用程序负载均衡器的端点 URL 进行测试。

创建和配置 Amazon Cognito 用户群体

1.    创建具有应用程序客户端的 Amazon Cognito 用户群体。在配置应用程序客户端时,请选择 Generate a client secret(生成客户端密匙)单选按钮。

有关更多信息,请参阅准备使用 Amazon Cognito

**注意:**在创建用户群体时,请针对生产配置所需的设置。在创建用户群体后,您将无法更改某些用户群体设置。例如,您无法更改用户注册所需的标准属性

2.    打开 Amazon Cognito 控制台

3.    在导航窗格中,选择 User Pools(用户群体),然后选择您的用户群体。复制并保存用户群体 ID。使用此 ID 配置您的应用程序负载均衡器,以进行用户身份验证。

4.    为您的用户群体选择 App integration(应用程序集成)选项卡,然后为您的用户群体添加域

5.    在您的用户群体的 App integration(应用程序集成)选项卡中,导航到 App clients and analytics(应用程序客户端和分析)部分。然后,选择您的应用程序客户端。

6.    在应用程序客户端页面的 App client information(应用程序客户端信息)下,复制并保存客户端 ID。使用此 ID 配置您的应用程序负载均衡器,以进行用户身份验证。

7.    在 Hosted UI(托管 UI)部分中,选择 Edit(编辑)。

8.    选择 Add callback URL(添加回调 URL),然后输入 https://loadBalancerDNSName/oauth2/idpresponse

-或者-

如果您使用 CNAME 记录将自定义域映射到您的应用程序负载均衡器,则请输入 https://CNAME/oauth2/idpresponse

**注意:**请将 loadBalancerDNSName 替换为您从 Amazon EC2 控制台中复制的 DNS 名称。如果您使用 CNAME 记录,则请将 CNAME 替换为您的自定义域。

9.    选择 Add sign-out URL(添加注销 URL),然后输入您要在用户注销后将其重定向到的 URL。如要进行测试,您可以输入任何有效的 URL,如 https://example.com/

10.    对于 Identity providers(身份提供者),选中 Cognito user pool(Cognito 用户群体)复选框。

11.    在 OAuth 2.0 grant types(OAuth 2.0 授权类型)下,选中 Authorization code grant(授权代码授予)复选框。根据您的要求选择任何其他 OAuth 授权类型。

12.    在 OpenID Connect scopes(OpenID Connect 范围)下,选中 OpenID 复选框。OpenID 范围将返回一个 ID 令牌。根据您的要求选择任何其他 OpenID Connect(OIDC)范围。

13.    选择 Save changes(保存更改)。

有关更多信息,请参阅配置用户群体应用程序客户端通过第三方添加用户群体登录

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

1.    打开 Amazon EC2 控制台

2.    在导航窗格中,选择 Load Balancing(负载均衡)下的 Load Balancers(负载均衡器)。

3.    选择您的应用程序负载均衡器。

4.    在 Listeners(侦听器)选项卡上,选择您要更新的 HTTPS 侦听器默认规则,然后选择 Actions(操作)、Manage rules(管理规则)。

5.    使用以下设置编辑 HTTPS 侦听器默认规则

  • 对于 THEN(然后),选择 Add action(添加操作)。
  • 选择 Authenticate(身份验证)。
  • 对于 Authenticate(身份验证),选择 Amazon Cognito
  • 对于用户群体,输入您从 Amazon Cognito 控制台中复制的用户群体 ID
  • 对于应用程序客户端,输入您从 Amazon Cognito 控制台中复制的客户端 ID
  • 展开 Advanced settings(高级设置)。
  • 对于 Scope(范围),输入您为用户群体应用程序客户端配置的范围,以空格分隔。您可以在用户群体的 OIDC 配置中找到范围。例如,如果配置中的 scopes_supported 值为 ["openid","email","phone","profile"],则请输入 openid email phone profile
  • 选择复选标记图标。

6.    使用以下设置继续编辑 HTTPS 侦听器默认规则:

  • 对于 THEN(然后),选择 Add action(添加操作)。
    **注意:**如果您无法选择 Add action(添加操作),则请使用垃圾桶图标删除现有路由操作,如 Redirect to(重定向到)。然后重试。
  • 选择 Forward to(转发到)。
  • 对于转发到,请选择一个或多个目标组。
  • (可选)配置组级别粘性
  • 选择复选标记图标。

7.    选择 Update(更新),以更新 HTTPS 侦听器默认规则。

测试设置

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

  • https://loadBalancerDNSName/
  • https://CNAME/

**注意:**请将 loadBalancerDNSName 替换为您从 Amazon EC2 控制台中复制的 DNS 名称。或者,将 CNAME 替换为您的自定义域。您将被重定向到用户群体的 Amazon Cognito 托管 Web UI。在用户登录并且用户群体对其进行身份验证后,这些用户将被重定向到目标。


相关信息

Application Load Balancers 入门

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

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

OIDC 用户池 IdP 身份验证流程

AWS 官方
AWS 官方已更新 1 年前