Amazon Cognito
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

步骤 3.向用户池添加社交登录 (可选)

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

步骤 1:向社交 IdP 注册

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

向 Facebook 注册应用程序
  1. 创建 Facebook 开发人员账户

  2. 使用 Facebook 凭证登录

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

  4. 为 Facebook 应用程序提供一个名称,然后选择 Create App ID (创建应用程序 ID)

  5. 在左侧导航栏上,选择 Settings (设置),然后选择 Basic (基本)

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

  7. 从页面底部选择 + Add Platform (+ 添加平台)

  8. 选择 Website (网站)

  9. Website (网站) 下,将具有 /oauth2/idpresponse 终端节点的用户池域键入到 Site URL (站点 URL) 中。

    https://<your-user-pool-domain>/oauth2/idpresponse
  10. 选择 Save changes

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

    https://<your-user-pool-domain>
  12. 选择 Save changes

  13. 从导航栏中,选择 Products (产品),然后选择 Facebook Login (Facebook 登录) 中的 Set up (设置)

  14. 从导航栏中,选择 Facebook Login (Facebook 登录),然后选择 Settings (设置)

    Valid OAuth Redirect URIs (有效的 OAuth 重定向 URI) 中键入重定向 URL。它将包含具有 /oauth2/idpresponse 终端节点的用户池域。

    https://<your-user-pool-domain>/oauth2/idpresponse
  15. 选择 Save changes

向 Amazon 注册应用程序
  1. 创建 Amazon 开发人员账户

  2. 使用 Amazon 凭证登录

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

    从页面顶部的导航栏中选择 Apps and Services (应用程序和服务),然后选择 Login with Amazon (以 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. Allowed Return URLs (允许的返回 URL) 中键入具有 /oauth2/idpresponse 终端节点的用户池域。

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

向 Google 注册应用程序
  1. 创建 Google 开发人员账户

  2. 使用 Google 凭证登录

  3. 选择 CONFIGURE A PROJECT (配置项目)

  4. 键入项目名称,然后选择 NEXT (下一步)

  5. 键入产品名称并选择 NEXT (下一步)

  6. 选择 Web browser (Web 浏览器) (位于 Where are you calling from? (从何处调用) 下拉列表中)。

  7. Authorized JavaScript origins (授权的 JavaScript 源) 中键入用户池域。

    https://<your-user-pool-domain>
  8. 选择 CREATE。此步骤中将不使用 Client ID (客户端 ID)Client Secret (客户端密钥)

  9. 选择 DONE

  10. 登录 Google 控制台。

  11. 在左侧导航栏上,选择 Credentials (凭证)

  12. 通过从 Create credentials (创建凭证) 下拉列表中选择 OAuth client ID (OAuth 客户端 ID) 来创建 OAuth 2.0 凭证。

  13. 选择 Web application (Web 应用程序)

  14. Authorized JavaScript origins (授权的 JavaScript 源) 中键入用户池域。

    https://<your-user-pool-domain>
  15. Authorized Redirect URIs (授权的重定向 URI) 中键入具有 /oauth2/idpresponse 终端节点的用户池域。

    https://<your-user-pool-domain>/oauth2/idpresponse
  16. 选择 Create (创建) 两次。

  17. 记下 OAuth client ID (OAuth 客户端 ID)client secret (客户端密钥)。您需要在下一节中使用它们。

  18. 选择 OK

步骤 2:将社交 IdP 添加到用户池

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

使用 AWS 管理控制台配置用户池社交身份提供商

  1. 转到 Amazon Cognito 控制台。系统可能会提示您输入 AWS 凭证。

  2. 选择 Manage your User Pools

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

  4. 在左侧导航栏上,选择身份提供商

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

  6. 键入在上一节中从社交身份提供商处收到的应用程序客户端 ID 和应用程序客户端密钥。

  7. 键入要授权的范围的名称。范围定义了您要通过应用程序访问的用户属性 (如 nameemail)。对于 Facebook,这些属性应用逗号分隔。对于 Google 和 Login with Amazon,则应采用空格分隔。

    社交身份提供商 示例范围
    Facebook public_profile, email
    Google profile email openid
    以 Login with Amazon 登录 profile postal_code

    您的应用程序用户需要同意向您的应用程序提供这些属性。关于范围的更多信息,请参阅 Google、Facebook 和 Login with Amazon 的文档。

  8. 为您要配置的社交身份提供商选择启用

  9. 从导航栏中选择应用程序客户端设置

  10. 选择社交身份提供商作为用户池应用程序的启用身份提供商之一。

  11. 在用户池应用程序的回调 URL 中键入回调 URL。这是页面的 URL 后,您的用户将被重定向的成功登录。

    https://www.example.com
  12. 选择 Save changes

  13. Attribute mapping 选项卡上,至少为必需属性添加映射,通常是 email,如下所示:

    1. 选中此复选框以选择 Facebook、Google 或 Amazon 属性名称。您还可以键入未在 Amazon Cognito 控制台中列出的其他属性的名称。

    2. 从下拉列表中选择目标用户池属性。

    3. 选择 Save changes

    4. 选择转到摘要页面

步骤 3:测试社交 IdP 配置

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

https://your_user_pool_domain/login?response_type=code&client_id=your_client_id&redirect_uri=https://www.example.com

您可以在用户池域名控制台页上找到您的域。client_id 位于应用程序客户端设置页上。对于 redirect_uri 参数,使用您的回调 URL。回调 URL 地址与您的用户池域不同。

下一步

步骤 4。将使用 SAML 身份提供商的登录添加到用户池 (可选)