如何设置我的应用程序负载均衡器以通过其他 AWS 账户中的 Amazon Cognito 用户群体对用户进行身份验证?

2 分钟阅读
0

我想在应用程序负载均衡器上使用 Amazon Cognito 身份验证,但我的用户群体位于另一个 AWS 账户中。因此,我想使用跨账户用户群体进行身份验证。

简短描述

当您配置应用程序负载均衡器进行用户身份验证时,系统默认仅支持同一账户的 Amazon Cognito 用户群体。要解决这个问题,您可以将自己的跨账户用户群体设置为 OpenID Connect(OIDC)身份提供者(IdP)

按照以下说明在一个账户(“账户 B”)中配置应用程序负载均衡器,以便通过另一个账户(“账户 A”)中的用户群体进行身份验证。

解决方法

创建应用程序负载均衡器

如果您尚未这样做,请在账户 B 中创建带有 HTTPS 侦听器应用程序负载均衡器
**注意:**只有 HTTPS 侦听器支持 authenticate-cognitoauthenticate-oidc 规则操作类型

获取账户 B 中应用程序负载均衡器的 DNS 名称

  1. 在账户 B 中,打开 Amazon Elastic Compute Cloud(Amazon EC2)控制台的负载均衡器页面。
  2. 选择您的应用程序负载均衡器。
  3. 描述选项卡上,复制您的负载均衡器的 DNS 名称。稍后您需要使用它来访问和测试负载均衡器的端点 URL。

在账户 A 中创建和配置用户群体

  1. 在账户 A 中,使用应用程序客户端创建一个 Amazon Cognito 用户群体。对于应用程序客户端,请务必选择生成客户端密钥选项。有关更多信息,请参阅准备使用 Amazon Cognito
    **注意:**在创建用户群体期间,配置您想要用于生产的设置。创建用户群体后,某些用户群体设置将无法更改。例如,您无法更改用户注册所需的标准属性
  2. Amazon Cognito 控制台用户群体一览部分,记下用户群体 ID。稍后您需要使用它来收集用户群体的 OIDC 配置详细信息。
  3. 应用程序集成选项卡下,导航到为您的用户群体添加 Amazon Cognito 域名。它是 Cognito 托管 UI 所需的唯一域名前缀
  4. 应用程序集成选项卡下,导航到应用程序客户端列表
  5. 选择要更新的应用程序客户端。在应用程序客户端页面上,完成以下步骤:
    启用显示客户端密钥
    复制应用程序客户端 ID应用程序客户端密钥。您需要这些值来配置应用程序负载均衡器以进行用户身份验证。
  6. 应用程序客户端页面上,导航到托管 UI 部分**,单击编辑**。
  7. 编辑托管 UI 页面上,完成以下步骤:
    对于身份提供者,请选择 Cognito 用户群体
    添加回调 URL 中,请输入 https://loadBalancerDNSName/oauth2/idpresponse。或者,如果您使用 CNAME 记录将自定义域映射到您的负载均衡器,请输入 https://CNAME/oauth2/idpresponse
    注意:loadBalancerDNSName 替换为您从 Amazon EC2 控制台复制的 DNS 名称。如果您使用的是 CNAME 记录,请将 CNAME 替换为您的自定义域名。请确保 URL 中的值为小写,否则您会收到错误消息。
    添加注销 URL
    中,输入您希望用户在注销后重定向到的 URL。要进行测试,请输入任何有效的 URL,例如 https://example.com/
    对于 OAuth 2.0 授权类型,请选择授权码授权
    对于 OpenID Connect 范围,请选择 Openidopenid 范围返回一个 ID 令牌。
    根据您的用例的要求输入任何其他 OAuth 范围。
  8. 选择保存更改

有关更多信息,请参阅配置用户群体应用程序客户端向用户群体添加 OIDC 身份提供者

获取您的用户群体的 OIDC 配置详细信息

访问您的用户群体的 OIDC 配置端点。您需要配置详细信息才能在应用程序负载均衡器上将用户群体设置为 OIDC IdP。

  1. 在浏览器中输入以下 URL:https://cognito-idp.region.amazonaws.com/userPoolId/.well-known/openid-configuration
    **注意:**将 region 替换为您的用户群体的 AWS 区域。(例如,us-east-1。) 将 userPoolId 替换为您之前记下的用户群体的 ID。
  2. 复制浏览器中显示的 JSON 回复。请记下以下字段的值:
    authorization_endpoint
    issuer
    scopes_supported
    token_endpoint
    userinfo_endpoint

在账户 B 中配置您的应用程序负载均衡器

  1. 在账户 B 中,在 Amazon EC2 控制台的负载均衡器页面上,选择您的应用程序负载均衡器。
  2. 侦听器选项卡的规则下,为您的 HTTPS 侦听器选择查看/编辑规则
  3. 在菜单栏中,选择铅笔图标(编辑规则)。
  4. 在 HTTPS 侦听器的默认规则旁边,选择铅笔图标(编辑规则)。
  5. 然后下,选择添加操作,然后完成以下步骤:
    选择身份验证
    对于身份验证,请选择 OIDC
    对于颁发者,输入用户群体的 OIDC 配置中的颁发者值。
    对于授权端点,输入 authorization_endpoint 值。
    对于令牌端点,输入 token_endpoint 值。
    对于用户信息端点,输入 userinfo_endpoint 值。
    对于客户端 ID,请输入您之前从 Amazon Cognito 控制台复制的应用程序客户端 ID
    对于客户端密钥,输入您之前复制的应用程序客户端密钥
    展开高级设置
    对于范围,输入您为用户群体应用程序客户端配置的范围,用空格分隔。在用户群体的 OIDC 配置中查找范围。例如,如果配置中的 scopes_supported 值为 ["openid","email","phone","profile"],请输入 openid email phone profile
    然后,选择复选标记图标。
  6. 然后下,选择添加操作,然后完成以下步骤:
    注意:如果您无法选择添加操作,请删除现有的路由操作(例如重定向到)。然后,再试一次。
    选择转发至
    对于转发至,选择一个或多个目标组。
    (可选)配置组级粘性
    然后,选择复选标记图标。
  7. 选择更新。HTTPS 侦听器的默认规则已更新。

有关更多信息,请参阅编辑规则

测试设置

在浏览器中,输入以下任一网址:

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

**注意:**将 loadBalancerDNSName 替换为您之前从 Amazon EC2 控制台复制的 DNS 名称。或者,用您的自定义域名替换 CNAME

您将被重定向到您的用户群体的 Amazon Cognito 托管的网页 UI。当用户在此登录并通过用户群体进行身份验证时,他们将被重定向到目标。

相关信息

应用程序负载均衡器入门

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

使用应用程序负载均衡器对用户进行身份验证

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

OIDC 用户群体 IdP 身份验证流

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