Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 
      中国的 Amazon Web Services 服务入门
         (PDF)。
    本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将社交身份提供者与用户池配合使用
您的 Web 和移动应用程序用户可以通过社交身份提供商 (IdP)(例如 Facebook、Google、Amazon 和 Apple)进行登录。利用内置托管 Web UI,Amazon Cognito 将为所有经过身份验证的用户提供令牌处理和管理。这样,后端系统可以基于一组用户池令牌实现标准化。您必须启用托管登录才能与支持的社交身份提供商集成。当 Amazon Cognito 构建您的托管登录页面时,它会创建  OAuth  2.0 个终端节点,Amazon Cognito 和您的 OIDC 以及 IdPs 社交使用这些终端节点来交换信息。有关更多信息,请参阅 Amazon Cognito 用户池 Auth API 参考。
你可以在中添加社交 IdP Amazon Web Services Management Console,也可以使用 CLI 或 Amazon Cognito AP Amazon I。
通过第三方(联合身份验证)进行登录可在 Amazon Cognito 用户池中实现。此特征不依赖于通过 Amazon Cognito 身份池(联合身份)实现的联合身份验证。
设置社交 IdP 开发者账户和应用程序
            在使用 Amazon Cognito 创建社交 IdP 之前,必须向社交 IdP 注册应用程序才能接收客户端 ID 和客户端密钥。
            
                - Facebook
- 
                        有关 Meta 开发者账户配置和身份验证的最新信息,请参阅 Meta 应用程序开发。 如何在 Facebook/Meta 上注册应用程序- 
                                创建 Facebook 开发人员账户。 
- 
                                使用 Facebook 凭证登录。 
- 
                                在 My Apps(我的应用程序)菜单上,选择 Create New App(创建新的应用程序)。 
- 
                                输入 Facebook 应用程序的名称,然后选择 Create App ID(创建应用程序 ID)。 
- 
                                在左侧导航栏上,选择 Settings(设置),然后选择 Basic(基本)。 
- 
                                记下 App ID(应用程序 ID)和 App Secret(应用程序密钥)。您将在下一节中使用它们。 
- 
                                从页面底部选择 + Add Platform(+ 添加平台)。 
- 
                                选择 Website(网站)。 
- 
                                在 Website(网站)下,请在您的应用程序登录页面上将路径输入到 Site URL(站点 URL)中。 
https://mydomain.auth.us-east-1.amazoncognito.com/login?response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com
 
- 
                                选择 Save changes(保存更改)。 
- 
                                在您的用户池域的根目录中,将路径输入到 App Domains(应用程序域)。 https://mydomain.auth.us-east-1.amazoncognito.com
 
- 
                                选择 Save changes(保存更改)。 
- 
                                从导航栏中,选择 Add Product(添加产品),然后选择 Facebook Login(Facebook 登录)中的 Set up(设置)。 
- 
                                从导航栏中,选择 Facebook Login(Facebook 登录),然后选择 Settings(设置)。 在 “有效 OAuth重定向” 中输入您的用户池域的/oauth2/idpresponse终端节点路径 URIs。
 
https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse
 
- 
                                选择保存更改。 
 
- Login with Amazon
- 
                        有关 Login with Amazon 开发者账户配置和身份验证的最新信息,请参阅 L ogin with Amazon 文档。 如何使用 Login with Amazon 注册应用程序- 
                                创建 Amazon 开发人员账户。 
- 
                                使用 Amazon 凭证登录。 
- 
                                您需要创建一个 Amazon 安全配置文件才能接收 Amazon 客户端 ID 和客户端密钥。 从页面顶部的导航栏中选择 Apps and Services(应用程序和服务),然后选择 Login with Amazon。 
- 
                                选择 Create a Security Profile(创建安全配置文件)。 
- 
                                输入 Security Profile Name(安全配置文件名称)、Security Profile Description(安全配置文件描述)和 Consent Privacy Notice URL(同意隐私声明 URL)。 
- 
                                选择 Save(保存)。 
- 
                                选择 Client ID(客户端 ID)和 Client Secret(客户端密钥)以显示客户端 ID 和密钥。您将在下一节中使用它们。 
- 
                                将鼠标悬停在齿轮图标上并选择 Web Settings(Web 设置),然后选择 Edit(编辑)。 
- 
                                将用户池域输入到 Allowed Origins(允许的源)中。 https://mydomain.auth.us-east-1.amazoncognito.com
 
- 
                                在 “允许的返回” 中输入您的用户池域和/oauth2/idpresponse终端节点 URLs。
 https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse
 
- 
                                选择保存。 
 
- Google
- 
                        有关 Google Cloud 平台中  OAuth  2.0 的更多信息,请参阅 Google Workspace 开发者版文档中的了解身份验证和授权。 如何向谷歌注册应用程序- 
                                创建 Google 开发人员账户。 
- 
                                登录到 Google Cloud Platform 控制台。 
- 
                                从顶部导航栏中,选择 Select a project(选择项目)。如果您在 Google 平台中已经有项目,则此菜单会改为显示您的默认项目。 
- 
                                选择 NEW PROJECT(新建项目)。 
- 
                                输入产品的名称,然后选择 CREATE(创建)。 
- 
                                在左侧导航栏上,选择APIs 和服务,然后选择 Oauth 同意屏幕。 
- 
                                输入应用程序信息,App domain(应用程序域)、Authorized domains(已授权的域)和 Developer contact information(开发人员联系信息)。例如,您的 Authorized domains(已授权的域)必须包括 amazoncognito.com和自定义域的根,例如example.com。选择 SAVE AND CONTINUE(保存并继续)。
 
- 
                                1. 在 “范围” 下,选择 “添加或移除范围”,然后至少选择以下 OAuth 范围。 
                                     
                                     
                                     
                                - 
                                        .../auth/userinfo.email
 
- 
                                        .../auth/userinfo.profile
 
- 
                                        openid 
 
 
- 
                                在 Test users(测试用户)下,选择 Add users(添加用户)。输入您的电子邮件地址和任何其他授权测试用户,然后选择 SAVE AND CONTINUE(保存并继续)。 
- 
                                再次展开左侧导航栏,选择APIs 和服务,然后选择凭证。 
- 
                                选择创建凭据,然后选择OAuth 客户端 ID。 
- 
                                选择 Application type(应用程序类型)并为客户端提供 Name(名称)。 
- 
                                在 “授权 JavaScript 来源” 下,选择 “添加 URI”。输入用户群体域。 https://mydomain.auth.us-east-1.amazoncognito.com
 
- 
                                在 “授权重定向” 下 URIs,选择 “添加 URI”。输入指向用户群体域的 /oauth2/idpresponse端点的路径。
 https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse
 
- 
                                选择 CREATE(创建)。 
- 
                                安全地存储 Google 在 Your client ID(您的客户端 ID)和 Your client secret(您的客户端密钥)下显示的值。当您添加 Google IdP 时,请向 Amazon Cognito 提供这些值。 
 
- Sign in with Apple
- 
                        有关设置 “使用 Apple 登录” 的 up-to-date更多信息,请参阅 Apple 开发者文档中的配置环境以使用 Apple 登录。 如何通过 “用 Apple 登录” (SIWA) 注册应用程序- 
                                创建 Apple 开发人员账户。 
- 
                                使用 Apple 凭证登录。 
- 
                                在左侧导航栏上,选择 Certificates, Identifiers & Profiles(证书、标识符和配置文件)。 
- 
                                在左侧导航栏上,选择 Identifiers (标识符)。 
- 
                                在 Identifiers (标识符) 页面上,选择 + 图标。 
- 
                                在 “注册新标识符” 页面上,选择 “应用程序” IDs,然后选择 “继续”。 
- 
                                在 Select a type(选择类型)页面上,选择 App(应用程序),然后选择 Continue(继续)。 
- 
                                在 Register an App ID(注册应用程序 ID)页面上,执行以下操作: 
                                     
                                     
                                     
                                     
                                     
                                - 
                                        在 Description(说明)下,输入说明。 
- 
                                        在 App ID Prefix(应用程序 ID 前缀)下,输入 Bundle ID(捆绑包 ID)。记下 App ID Prefix(应用程序 ID 前缀)下的值。在使用社交 IdP 配置您的用户池中选择 Apple 作为身份提供商后,您将使用此值。 
- 
                                        在 Capabilities(功能)下,选择 Sign In with Apple,然后选择 Edit(编辑)。 
- 
                                        在 “使用 Apple 登录:应用程序 ID 配置” 页面上,选择将应用程序设置为主应用程序或与其他应用程序分组 IDs,然后选择 “保存”。 
- 
                                        选择 Continue(继续)。 
 
 
- 
                                在 Confirm your App ID(确认您的应用程序 ID)页面上,选择 Register(注册)。 
- 
                                在 Identifiers (标识符) 页面上,选择 + 图标。 
- 
                                在 “注册新标识符” 页上,选择 “服务” IDs,然后选择 “继续”。 
- 
                                在 Register an Services ID(注册服务 ID)页面上,执行以下操作: 
                                     
                                     
                                     
                                - 
                                        在 Description(描述)下方,键入描述。 
- 
                                        在 Identifier(标识符)下方,键入标识符。记下此服务 ID,因为在使用社交 IdP 配置您的用户池中选择 Apple 作为身份提供商后需要此值。 
- 
                                        选择 Continue(继续),然后选择 Register(注册)。 
 
 
- 
                                从 Identifiers(标识符)页中选择您刚创建的 Services ID(服务 ID)。 
                                     
                                     
                                     
                                     
                                     
                                     
                                     
                                - 
                                        选择 Sign In with Apple(使用苹果账号登录),然后选择 Configure(配置)。 
- 
                                        在 Web Authentication Configuration(Web 身份验证配置)页上,选择您先前创建的应用程序 ID 作为 Primary App ID(主应用程序 ID)。 
- 
                                        选择 “网站” 旁边的 “+” 图标 URLs。 
- 
                                        在 Domains and subdomains(域名和子域)下,输入不带 https://前缀的用户群体域。
 mydomain.auth.us-east-1.amazoncognito.com
 
- 
                                        在 Return 下 URLs,输入您的用户池域/oauth2/idpresponse终端节点的路径。
 https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse
 
- 
                                        选择 Next(下一步),然后选择 Done(完成)。您不需要验证域。 
- 
                                        选择 Continue(继续),然后选择 Save(保存)。 
 
 
- 
                                在左侧导航栏上,选择 Keys (密钥)。 
- 
                                在 Keys(密钥)页面上,选择 + 图标。 
- 
                                在 Register a New Key(注册新密钥)页面上,执行以下操作: 
                                     
                                     
                                     
                                     
                                - 
                                        在 Key Name(密钥名称)下,输入密钥名称。 
- 
                                        选择 Sign In with Apple,然后选择 Configure(配置)。 
- 
                                        在 Configure Key(配置密钥)页上,选择您先前创建的应用程序 ID 作为 Primary App ID(主应用程序 ID)。选择保存。 
- 
                                        选择 Continue(继续),然后选择 Register(注册)。 
 
 
- 
                                在 Download Your Key(下载您的密钥)页面上,选择 Download(下载)以下载私有密钥并记下显示的 Key ID(密钥 ID),然后选择 Done(完成)。在使用社交 IdP 配置您的用户池中选择 Apple 作为身份提供商后,您将需要此私有密钥和在此页面上显示的 Key ID(密钥 ID)值。 
 
使用社交 IdP 配置您的用户池
            要配置用户池社交 IdP,请使用 Amazon Web Services Management Console
- 
                    转到 Amazon Cognito 控制台。如果出现提示,请输入您的 Amazon 凭据。 
- 
                    选择用户池。 
- 
                    从列表中选择现有用户池或创建用户池。 
- 
                    选择 “社交和外部提供商” 菜单,然后选择 “添加身份提供商”。 
- 
                    选择一个社交 IdP:Facebook、Google(谷歌)、Login with Amazon(使用亚马逊账号登录)或 Sign in with Apple(使用苹果账号登录)。 
- 
                    根据您选择的社交 IdP,从以下步骤中进行选择: 
                         
                         
                         
                    - 
                            Google 和 Login with Amazon – 输入在上一部分中生成的 app client ID(应用程序客户端 ID)和 app client secret(应用程序客户端密钥)。 
- 
                            Facebook – 输入在上一部分中生成的 app client ID(应用程序客户端 ID)和 app client secret(应用程序客户端密钥),然后选择 API 版本(例如,版本 2.12)。我们建议选择最新的可用版本,因为每个 Facebook API 版本都有一个生命周期和一个弃用日期。Facebook 的范围和属性可能因 API 版本而异。我们建议您使用 Facebook 测试您的社交身份登录,以确保联合身份认证会按预期运行。 
- 
                            Sign In with Apple – 输入在上一部分中生成的 Services ID(服务 ID)、Team ID(团队 ID)、Key ID(密钥 ID)和 private key(私有密钥)。 
 
 
- 
                    输入要使用的 Authorized scopes(授权范围)的名称。范围定义了您要通过应用程序访问的用户属性(如 name和email)。对于 Facebook,这些属性应用逗号分隔。对于 Google 和 Login with Amazon,则应采用空格分隔。对于 Sign in with Apple,选中要访问的范围的复选框。
 
                                
                                    | 社交身份提供商 | 示例范围 |  
                                    | Facebook | public_profile, email |  
                                    | Google | profile email openid |  
                                    | Login with Amazon | profile postal_code |  
                                    | Sign in with Apple | email name |  
 
您的应用程序用户需要同意向您的应用程序提供这些属性。关于社交服务提供商范围的更多信息,请参阅 Google、Facebook 和 Login with Amazon 或 Sign in with Apple 的文档。 对于 Sign in with Apple,下面提供了可能不会返回范围的用户场景: 
                         
                         
                         
                         
                    - 
                            终端用户离开 Apple 登录页面后出现故障(可能来自 Amazon Cognito 内部的故障或开发人员编写的任何内容) 
- 
                            服务 ID 标识符用于用户池、 and/or 其他身份验证服务 
- 
                            在最终用户登录之前,开发人员添加了其他范围(未检索到新信息) 
- 
                            开发人员删除用户,然后用户再次登录,而没有从其 Apple ID 配置文件中删除该应用程序 
 
 
- 
                    请将 IdP 的属性映射到您的用户池。有关更多信息,请参阅指定适用于用户池的身份提供程序属性映射。 
- 
                    选择创建。 
- 
                    从 “应用程序客户端” 菜单中,从列表中选择一个应用程序客户端。要将新的社交身份提供者添加到应用程序客户端,请导航到登录页面选项卡,然后选择在托管登录页面配置上编辑。 
- 
                    选择保存更改。 
测试社交 IdP 配置
            在您的应用程序中,您必须在用户的客户端中调用浏览器,这样他们才能使用社交服务提供商登录。完成前几节中的设置过程后,请使用社交服务提供商测试登录情况。以下示例网址会加载带有前缀域名的用户池的登录页面。
            
https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com
            当您进入应用程序客户端菜单,选择应用程序客户端,导航到登录页面选项卡,然后选择查看登录页面时,Amazon Cognito 会引导您进入该页面。有关用户池域的更多信息,请参阅 配置用户池域。有关应用程序客户端(包括客户端 IDs 和回调)的更多信息 URLs,请参阅特定于应用程序的应用程序客户端设置。
            以下示例链接对端点授权使用identity_provider查询参数设置了从中静默重定向到社交提供商。此 URL 绕过使用托管登录的交互式用户池登录,直接转到 IdP 登录页面。
            
https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?identity_provider=Facebook|Google|LoginWithAmazon|SignInWithApple&response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com