如何使用 Facebook 和 Amazon Cognito 作为身份提供商进行 Application Load Balancer 身份验证设置?

上次更新时间:2020 年 5 月 26 日

如何使用 Facebook 和 Amazon Cognito 作为身份提供商 (IdP) 进行 Application Load Balancer 身份验证设置?

简短描述

借助 Application Load Balancer 身份验证,Application Load Balancer 可确认客户端已经过身份验证,或提示客户端验证身份。后端目标只负责运行其他业务逻辑或服务,如用户配置文件和付款。Application Load Balancer 是负责拒绝和允许客户端访问的守门人。但是,由于 Application Load Balancers 不会存储客户端登录凭证,因此您可以配置 Amazon Cognito 和 Facebook 来管理用户并对用户进行身份验证。

解决方法

设置 Facebook 应用程序

  1. 在 Facebook 网站上,转到 Facebook for Developers
  2. 在右上角,选择我的应用,然后选择添加新应用程序
  3. 指定一个显示名称,然后选择创建应用程序编号
  4. 选择 Facebook 登录
  5. 选择网站 (www)
  6. 指定站点的域名。此域名与您为 Application Load Balancer 的 DNS 设置的别名相同。
  7. 选择下一步
  8. 跳过 JavaScript 开发工具包,然后选择下一步
  9. 选择下一步

进行到向导中的第 5 步时,继续设置 Amazon Cognito。Facebook 应用的设置还剩最后一步(URI 重定向白名单),但您必须先设置 Amazon Cognito。

设置 Application Load Balancer 的身份验证,然后将 Amazon Cognito 设置为 IdP/IdP 聚合器

  1. 打开 Amazon Elastic Compute Cloud (Amazon EC2) 控制台
  2. 创建一个 Application Load Balancer
  3. 在导航窗格中,选择负载均衡下的负载均衡器
  4. 选择您在第 2 步中创建的 Application Load Balancer。
  5. 依次选择侦听器添加侦听器
  6. 选择 HTTPS:443(或使用 HTTPS 协议的任何端口)。
  7. 对于操作,选择身份验证
  8. 保持 Amazon Cognito 选择项。
  9. 对于 Cognito 用户池,选择新建用户池
  10. 对于 社交 IDP,选择 Facebook
  11. 在 Facebook 网站上,转到 Facebook for Developers
  12. 选择您在此流程的设置 Facebook 应用部分所创建的应用。
  13. 选择设置,然后选择基本
  14. 复制应用程序 ID
  15. 选择显示,然后输入您的 Facebook 密码以选择应用程序密钥
  16. 在 Amazon EC2 控制台中回到 Amazon Cognito 设置页面。然后,粘贴应用编号并输入应用密钥
  17. 对于授权范围,输入 public_profile
  18. 域前缀下选择一个唯一名称添加到 Amazon Cognito 区域 DNS 服务。例如,如果您指定“abc”作为域前缀,则您的完全限定域名 (FQDN) 为 https://abc.auth.us-east-2.amazoncognito.com/
  19. 选择创建 Cognito 用户池
  20. 复制第 18 步中指定的域名。
  21. 将其他规则添加您的 HTTPS 侦听器。选择转发到:,然后指定您的 Application Load Balancer 的目标组的名称。
  22. 选择保存

完成 Facebook 应用程序设置

  1. 打开 Facebook 应用程序。
  2. 选择 Facebook 登录,然后选择设置
  3. 对于有效 OAuth 重定向 URI,粘贴 Amazon Cognito FQDN 并添加一个 /oauth2/idpresponse 后缀。例如,https://abc.auth.eu-west-1.amazoncognito.com/oauth2/idpresponse
  4. 选择保存更改
  5. 依次选择设置基本应用域
  6. 添加指向您的 Application Load Balancer 的域名。
  7. 选择保存更改

完成 Amazon Cognito 设置

  1. 打开 Amazon Cognito 控制台
  2. 选择您配置的用户池。
  3. 更改应用程序客户端设置
  4. 对于 回调 URL,指定在 Route53 中创建了别名记录的指向 Application Load Balancer 的域名并添加 /oauth2/idpresponse 后缀。例如,https://myinstanceweb.info/oauth2/idpresponse

重要提示:Facebook 是第三方应用程序,这意味着以上配置步骤可能会随时变化。有关最新更新,请参阅 Facebook 网站上的 Facebook 文档