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

上次更新时间:2020 年 8 月 7 日

如何使用 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 文档。