如何使用 Facebook 和 Amazon Cognito 作为身份提供商 (IdP) 进行 Application Load Balancer 身份验证设置?
简短描述
借助 Application Load Balancer 身份验证,Application Load Balancer 可确认客户端已经过身份验证,或提示客户端验证身份。后端目标只负责运行其他业务逻辑或服务,如用户配置文件和付款。Application Load Balancer 是负责拒绝和允许客户端访问的守门人。但是,由于 Application Load Balancers 不会存储客户端登录凭证,因此您可以配置 Amazon Cognito 和 Facebook 来管理用户并对用户进行身份验证。
解决方法
设置 Facebook 应用程序
- 在 Facebook 网站上,转到 Facebook for developers(适用于开发人员的 Facebook)。
- 在右上角,选择 My Apps(我的应用程序),然后选择 Add New App(添加新应用程序)。
- 指定一个显示名称,然后选择创建应用程序编号。
- 选择 Facebook 登录。
- 选择网站 (www)。
- 指定站点的域名。此域名与您为 Application Load Balancer 的 DNS 使用的别名相同。
- 选择 Next(下一步)。
- 跳过 JavaScript 开发工具包,然后选择下一步。
- 选择下一步。
进行到向导中的第 5 步时,继续设置 Amazon Cognito。Facebook 应用程序的设置还剩最后一步没有完成,但您必须先设置 Amazon Cognito。
设置 Application Load Balancer 的身份验证,然后将 Amazon Cognito 设置为 IdP/IdP 聚合器
- 打开 Amazon Elastic Compute Cloud (Amazon EC2) 控制台。
- 创建一个 Application Load Balancer。
- 在导航窗格中,选择负载均衡下的负载均衡器。
- 选择您在第 2 步中创建的 Application Load Balancer。
- 依次选择侦听器、添加侦听器。
- 选择 HTTPS:443(或使用 HTTPS 协议的任何端口)。
- 对于操作,选择身份验证。
- 保持 Amazon Cognito选择项。
- 对于 Cognito 用户池,选择新建用户池。
- 对于 Social IDP(社交 IDP),选择 Facebook。
- 在 Facebook 网站上,转到 Facebook for developers(适用于开发人员的 Facebook)。
- 选择您在此流程的 Set up the Facebook application(设置 Facebook 应用程序)部分中创建的应用程序。
- 选择设置,然后选择基本。
- 复制应用程序 ID。
- 选择显示,然后输入您的 Facebook 密码以选择应用程序密钥。
- 在 Amazon EC2 控制台中回到 Amazon Cognito 设置页面。然后,粘贴应用编号并输入应用密钥。
- 对于授权范围,输入 public_profile。
- 在域前缀下选择一个唯一名称添加到 Amazon Cognito 区域 DNS 服务。例如,如果您指定“abc”作为域前缀,则您的完全限定域名 (FQDN) 为 https://abc.auth.us-east-2.amazoncognito.com/。
- 选择创建 Cognito 用户池。
- 复制第 18 步中指定的域名。
- 将其他规则添加您的 HTTPS 侦听器。选择转发到:,然后指定您的 Application Load Balancer 的目标组的名称。
- 选择保存。
完成 Facebook 应用程序设置
- 打开 Facebook 应用程序。
- 选择 Facebook 登录,然后选择设置。
- 对于有效 OAuth 重定向 URI,粘贴 Amazon Cognito FQDN 并添加一个 /oauth2/idpresponse 后缀。例如,https://abc.auth.eu-west-1.amazoncognito.com/oauth2/idpresponse。
- 选择保存更改。
- 依次选择设置、基本、应用域。
- 添加指向您的 Application Load Balancer 的域名。
- 选择保存更改。
完成 Amazon Cognito 设置
- 打开 Amazon Cognito 控制台。
- 选择您配置的用户池。
- 更改应用程序客户端设置。
- 对于 Callback URL(s)(回调 URL),指定在 Route 53 中创建了别名记录的指向 Application Load Balancer 的域名,然后添加 /oauth2/idpresponse后缀。例如 https://www.example.com/oauth2/idpresponse.
**重要提示:**Facebook 是第三方应用程序,这意味着以上配置步骤可能会随时变化。有关最新更新,请参阅 Facebook 网站上的 Facebook 文档。
相关信息
使用 Application Load Balancer 验证用户身份
使用 Application Load Balancer 内置的身份验证简化登录过程
Facebook(身份池)
使用社交 IdP 注册