向用户池添加社交登录(可选) - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

向用户池添加社交登录(可选)

您可以允许应用程序用户通过社交身份提供商(IdP)(如 Facebook、Google、亚马逊和 Apple)进行登录。无论您的用户是直接登录还是通过第三方登录,所有用户都在用户池中有一个配置文件。如果您不想添加通过社交登录身份提供商进行的登录,请跳过此步骤。

向社交 IdP 注册

在使用 Amazon Cognito 创建社交 IdP 之前,必须向社交 IdP 注册应用程序才能接收客户端 ID 和客户端密钥。

  1. 创建 Facebook 开发人员账户

  2. 使用 Facebook 凭证登录

  3. My Apps(我的应用程序)菜单上,选择 Create New App(创建新的应用程序)。

    如果你没有现有的Facebook应用程序,你会看到一个不同的选项。选择 Create App (创建应用程序)

  4. 创建应用程序页面上,为您的应用程序选择一个用例,然后选择下一步

  5. 输入 Facebook 应用程序的名称,然后选择创建应用程序

  6. 在左侧导航栏上,选择应用程序设置,然后选择基本

  7. 记下 App ID(应用程序 ID)和 App Secret(应用程序密钥)。您将在下一节中使用它们。

  8. 从页面底部选择 + 添加平台

  9. “选择平台” 屏幕上,选择您的平台,然后选择 “下一步”。

  10. 选择 Save changes(保存更改)。

  11. App Domains(应用程序域)输入用户池域。

    https://your_user_pool_domain
  12. 选择 Save changes(保存更改)。

  13. 从导航栏中选择 “产品”,然后选择 “通过 Facebook 登录进行配置”。

  14. Facebook 登录配置菜单中,选择设置

    Valid OAuth Redirect URIs(有效的 OAuth 重定向 URI)中输入重定向 URL。重定向 URL 由您的用户池域和/oauth2/idpresponse终端节点组成。

    https://your_user_pool_domain/oauth2/idpresponse
  15. 选择 Save changes(保存更改)。

  1. 创建 Amazon 开发人员账户

  2. 使用 Amazon 凭证登录

  3. 您需要创建一个 Amazon 安全配置文件才能接收 Amazon 客户端 ID 和客户端密钥。

    从页面顶部的导航栏中选择 “应用程序和服务”,然后选择 Lo gin with Amazon

  4. 选择 Create a Security Profile(创建安全配置文件)。

  5. 输入 Security Profile Name(安全配置文件名称)、Security Profile Description(安全配置文件描述)和 Consent Privacy Notice URL(同意隐私声明 URL)。

  6. 选择 Save(保存)。

  7. 选择 Client ID(客户端 ID)和 Client Secret(客户端密钥)以显示客户端 ID 和密钥。您将在下一节中使用它们。

  8. 将鼠标悬停在齿轮图标上并选择 Web Settings(Web 设置),然后选择 Edit(编辑)。

  9. 将用户池域输入到 Allowed Origins(允许的源)中。

    https://<your-user-pool-domain>
  10. 将具有 /oauth2/idpresponse 端点的用户池域输入到 Allowed Return URLs(允许的返回 URL)中。

    https://<your-user-pool-domain>/oauth2/idpresponse
  11. 选择 Save(保存)。

有关 Google Cloud 平台中的 OAuth 2.0 的更多信息,请参阅 Google Workspace for Developers 文档中的了解身份验证和授权

  1. 创建 Google 开发人员账户

  2. 登录到 Google Cloud Platform 控制台

  3. 从顶部导航栏中,选择 Select a project(选择项目)。如果您在 Google 平台中已经有项目,则此菜单会改为显示您的默认项目。

  4. 选择 NEW PROJECT(新建项目)。

  5. 输入产品的名称,然后选择 CREATE(创建)。

  6. 在左侧导航栏上,选择 API 和服务,然后选择 Oauth 同意屏幕。

  7. 输入应用程序信息、应用程序域、授权域开发者联系信息。您的授权域名必须包含您的自定义域名amazoncognito.com和根域。例如:example.com。选择 SAVE AND CONTINUE(保存并继续)。

  8. 1. 在 “范围” 下,选择 “添加或移除范围”,然后至少选择以下 OAuth 范围。

    1. .../auth/userinfo.email

    2. .../auth/userinfo.profile

    3. openid

  9. Test users(测试用户)下,选择 Add users(添加用户)。输入您的电子邮件地址和任何其他授权测试用户,然后选择 “保存并继续”。

  10. 再次展开左侧导航栏,选择 API 和服务,然后选择凭据

  11. 选择 “创建凭据”,然后选择 OAuth 客户端 ID。

  12. 选择 Application type(应用程序类型)并为客户端提供 Name(名称)。

  13. 授权 JavaScript 来源下,选择添加 URI。输入用户群体域。

    https://<your-user-pool-domain>
  14. Authorized redirect URIs(已授权的重新导向 URI)下,选择 ADD URI(添加 URI)。输入指向用户群体域的 /oauth2/idpresponse 端点的路径。

    https://<your-user-pool-domain>/oauth2/idpresponse
  15. 选择 CREATE(创建)。

  16. 安全地存储 Google 在您的客户端 ID您的客户端密钥下显示的值。当您添加 Google IdP 时,请向 Amazon Cognito 提供这些值。

有关设置“通过 Apple 登录”的更多信息,请参阅 Apple 开发人员文档中的配置环境以通过 Apple 登录

  1. 创建 Apple 开发人员账户

  2. 使用 Apple 凭证登录

  3. 在左侧导航栏上,选择 Certificates, Identifiers & Profiles(证书、标识符和配置文件)。

  4. 在左侧导航栏上,选择 Identifiers (标识符)

  5. Identifiers (标识符) 页面上,选择 + 图标。

  6. Register a New Identifier (注册新标识符) 页面上,选择 App IDs (应用程序 ID),然后选择 Continue (继续)

  7. “选择类型” 页面上,选择 “应用程序”,然后选择 “继续”。

  8. Register an App ID(注册应用程序 ID)页面上,执行以下操作:

    1. Description(说明)下,输入说明。

    2. App ID Prefix(应用程序 ID 前缀)下,输入 Bundle ID(捆绑包 ID)。记下 App ID Prefix(应用程序 ID 前缀)下的值。在步骤 2:将社交 IdP 添加到用户池中选择 Apple 作为身份提供商后,您将使用此值。

    3. Capabilities(功能)下,选择 Sign In with Apple,然后选择 Edit(编辑)。

    4. Sign in with Apple: App ID Configuration(通过 Apple 登录:应用程序 ID 配置)页面上,选择将应用程序设置为主应用程序或与其他应用程序 ID 分组在一起,然后选择 Save(保存)。

    5. 选择 Continue(继续)。

  9. Confirm your App ID(确认您的应用程序 ID)页面上,选择 Register(注册)。

  10. Identifiers (标识符) 页面上,选择 + 图标。

  11. Register a New Identifier(注册新标识符)页面上,选择 Services IDs(服务 ID),然后选择 Continue(继续)。

  12. Register an Services ID(注册服务 ID)页面上,执行以下操作:

    1. Description(说明)下,输入说明。

    2. Identifier(标识符)下,输入标识符。请记下此服务 ID,因为在中选择 Apple 作为身份提供商后,您将需要此值步骤 2:将社交 IdP 添加到用户池

    3. 选择 Continue (继续),然后选择 Register (注册)

  13. 从 “标识符” 页面选择您刚刚创建的服务 ID。

    1. 选择 Sign In with Apple(使用苹果账号登录),然后选择 Configure(配置)。

    2. Web Authentication Configuration(Web 身份验证配置)页上,选择您先前创建的应用程序 ID 作为 Primary App ID(主应用程序 ID)。

    3. Website URLs(网站 URL)旁边选择 + 图标。

    4. Domains and subdomains(域名和子域)下,输入不带 https:// 前缀的用户群体域。

      <your-user-pool-domain>
    5. Return URLs(返回 URL)下,输入指向用户群体域的 /oauth2/idpresponse 端点的路径。

      https://<your-user-pool-domain>/oauth2/idpresponse
    6. 选择 “下一步”,然后选择 “完成”。您不需要验证域。

    7. 选择 Continue(继续),然后选择 Save(保存)。

  14. 在左侧导航栏上,选择 Keys (密钥)

  15. Keys(密钥)页面上,选择 + 图标。

  16. Register a New Key(注册新密钥)页面上,执行以下操作:

    1. Key Name(密钥名称)下,输入密钥名称。

    2. 选择 Sign In with Apple,然后选择 Configure(配置)。

    3. 配置密钥页面上,选择您之前创建的应用程序 ID 作为主应用程序 ID。选择保存

    4. 选择 Continue(继续),然后选择 Register(注册)。

  17. 在 “下载您的密钥” 页面上,选择 “下载” 以下载私钥,记下显示的密钥 ID,然后选择 “完成”。在步骤 2:将社交 IdP 添加到用户池中选择 Apple 作为身份提供商后,您将需要此私有密钥和在此页面上显示的 Key ID(密钥 ID)值。

将社交 IdP 添加到用户池

在本节中,您使用上一节中的客户端 ID 和客户端密钥在用户池中配置社交 IdP。

使用配置用户池社交身份提供商 Amazon Web Services Management Console
  1. 转到 Amazon Cognito 控制台。系统可能会提示您输入 Amazon 凭证。

  2. 选择用户池

  3. 从列表中选择一个现有用户池,或创建一个用户池

  4. 选择 Sign-in experience(登录体验)选项卡。找到 Federated sign-in(联合登录),然后选择 Add an identity provider(添加身份提供商)。

  5. 选择一个社交身份提供商:FacebookGoogleLogin with AmazonSign in with Apple

  6. 根据您选择的社交身份提供商,从以下步骤中进行选择:

    • Google 和 L ogin with Amazon — 输入在上一节中生成的应用程序客户端 ID 和应用程序客户端密钥

    • Facebook — 输入在上一节中生成的应用程序客户端 ID 和应用程序客户端密钥,然后选择 API 版本(例如,版本 2.12)。我们建议选择可能的最新版本——每个 Facebook API 都有生命周期和弃用日期。Facebook 的范围和属性可能因 API 版本而异。我们建议您使用 Facebook 测试您的社交身份登录,以确保联合会按预期运行。

    • 使用 Apple 登录 — 输入在上一节中生成的服务 ID团队 ID、密钥 ID 和私钥

  7. 输入要使用的授权范围的名称。范围定义了您要通过应用程序访问的用户属性(如 nameemail)。对于 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 标识符用于用户池和/或其他身份验证服务。

    • 开发人员在用户登录后添加额外的范围。用户仅在进行身份验证和刷新令牌时检索新信息。

    • 开发者删除了该用户,然后用户重新登录,而无需从其 Apple ID 个人资料中删除该应用程序。

  8. 请将身份提供商的属性映射到您的用户池。有关更多信息,请参阅 有关映射的需知信息

  9. 选择创建

  10. App client integration(应用程序客户端集成)选项卡上的列表中选择一个 App clients(应用程序客户端),然后选择 Edit hosted UI settings(编辑托管 UI 设置)。将新的社交身份提供商添加到 Identity providers(身份提供商)下的应用程序客户端。

  11. 选择 Save changes(保存更改)。

测试社交 IdP 配置

可以通过使用前两节中的元素来创建登录 URL。使用此 URL 测试社交 IdP 配置。

https://mydomain.us-east-1.amazoncognito.com/login?response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com

您可以在用户池 Domain name(域名)控制台页上找到您的域。client_id 位于 App client settings(应用程序客户端设置)页上。对于 redirect_uri 参数,使用您的回调 URL。这是页面的 URL,在页面中,您的用户在身份验证成功后将被重定向。

注意

Amazon Cognito 会取消未在 5 分钟内完成的身份验证请求,并将用户重定向到托管 UI。页面随即显示 Something went wrong 错误消息。