如何在 Amazon Cognito 用户池中将 Google 设置为联合身份提供商?

上次更新时间:2019 年 12 月 20 日

我想将 Google 用作 Amazon Cognito 用户池中的联合身份提供商 (IdP)。该如何进行设置?

解决方法

Amazon Cognito 用户池允许通过第三方 (联合身份验证) 登录,包括 Google 和 Facebook 等社交 IdP。有关更多信息,请参阅向用户池添加社交身份提供商

创建具有应用程序客户端和域名的 Amazon Cognito 用户池

  1. 创建用户池
    注意:在创建过程中,默认选择标准属性电子邮件。有关更多信息,请参阅配置用户池属性
  2. 在用户池中创建应用程序客户端。有关更多信息,请参阅添加应用程序以启用托管 Web UI
  3. 为用户池添加域名

创建 Google API 控制台项目

如果还没有项目,请创建一个新的。

  1. 使用您的 Google 账户登录到 Google API 控制台。有关更多信息,请参阅 Google 帮助网站上的 API 控制台帮助
  2. 控制面板API 与服务)上,选择创建
  3. 新建项目下,输入项目名称
  4. 对于位置,选择浏览,然后选择一个位置。
  5. 选择创建

有关更多信息,请参阅“将 Google Sign-In 用于网站”网站上的将 Google Sign-In 集成到您的网络应用程序中部分。

配置 OAuth 同意屏幕

  1. 在 Google API 控制台的左侧导航窗格中,选择 OAuth 同意屏幕
  2. 填写同意屏幕表单。请至少执行以下操作:
    对于应用程序名称,输入名称。
    对于授权域,输入 amazoncognito.com
    重要提示:您必须输入此域,否则以后在创建 OAuth 客户端 ID 时将无法使用 Amazon Cognito 域
  3. 选择保存。您将重定向到凭证页面。

有关更多信息,请参阅 Google Apps Script 网站上的完成 OAuth 同意屏幕部分。

获取 OAuth 2.0 客户端凭证

  1. 在 Google API 控制台的凭证页上,选择创建凭证,然后选择 OAuth 客户端 ID
  2. 创建 OAuth 客户端 ID 页面上,对于应用程序类型,选择 Web 应用程序
  3. 执行以下操作:
    输入 OAuth 客户端 ID 的名称
    对于授权的 JavaScript 来源,输入您的 Amazon Cognito 域 (https://yourDomainPrefix.auth.region.amazoncognito.com)。
    注意:请将 yourDomainPrefixregion 替换为您的用户池的值。在 Amazon Cognito 控制台中的域名页面上,您可以找到您的用户池的这些值。
    对于授权的重定向 URL,输入 https://yourDomainPrefix.auth.region.amazoncognito.com/oauth2/idpresponse
    注意:请将 yourDomainPrefixregion 替换为您的用户池的值。有关更多信息,请参阅上一步。
  4. OAuth 客户端对话框中,找到客户端 ID 和客户端密钥,然后记下它们以备后用。在 Amazon Cognito 用户池中配置 Google 时,将需要这些信息。

有关更多信息,请参阅 Google Identity Platform 网站上的使用 OAuth 2.0 访问 Google API 部分。

在您的用户池中将 Google 配置为联合 IDP

  1. Amazon Cognito 控制台中,选择管理用户池,然后选择您的用户池。
  2. 在左侧导航窗格的联合身份下,选择身份提供商
  3. 选择 Google
  4. 执行以下操作:
    对于 Google App ID,粘贴您记下的客户端 ID。
    对于 App 密钥,粘贴记下的客户端密钥。
    对于授权范围,输入配置文件电子邮件 openid
  5. 选择启用 Google

有关更多信息,请参阅将社交 IdP 添加到您的用户池

将电子邮件从 Google 属性映射到用户池属性

注意:在属性映射中,映射的用户池属性必须是可变的。有关更多信息,请参阅指定适用于用户池的身份提供商属性映射

  1. Amazon Cognito 控制台中,选择管理用户池,然后选择您的用户池。
  2. 在左侧导航窗格的联合下,选择属性映射
  3. 在“属性映射”页面上,选择 Google 选项卡。
  4. 选中名为电子邮件 Google 属性旁边的捕获复选框。
  5. 电子邮件旁边,对于用户池属性,从列表中选择电子邮件
  6. 选择保存更改

更改您的用户池的应用程序客户端设置

注意:在应用程序客户端设置中,映射的用户池属性必须可写。有关更多信息,请参阅指定适用于用户池的身份提供商属性映射

  1. Amazon Cognito 控制台中,选择管理用户池,然后选择您的用户池。
  2. 在左侧导航窗格中,在应用程序集成中,选择应用程序客户端设置
  3. 在应用程序客户端页面上,执行以下操作:
    启用身份提供商下,选中 Google 复选框。
    对于回调 URL,输入您希望用户在登录后被重定向至的 URL。如要进行测试,您可以输入任何有效的 URL,如 https://www.example.com/
    对于注销 URL,输入您希望用户在退出登录后被重定向至的 URL。如要进行测试,您可以输入任何有效的 URL,如 https://www.example.com/
    允许的 OAuth 流程下,至少选中隐式授予复选框。
    允许的 OAuth 范围下,至少选中电子邮件openid配置文件复选框。
  4. 选择保存更改

有关更多信息,请参阅应用程序客户端设置概览

构建终端节点 URL

使用用户池中的值,为 Amazon Cognito 托管的 Web UI 构造此登录终端节点 URL:

https://yourDomainPrefix.auth.region.amazoncognito.com/login?response_type=token&client_id=yourClientId&redirect_uri=redirectUrl

确保执行以下操作:

  • 请将 yourDomainPrefixregion 替换为您的用户池的值。在 Amazon Cognito 控制台中的域名页面上,您可以找到您的用户池的这些值。
  • yourClientId 替换为您的 Amazon Cognito 应用程序客户端的 ID,并将 redirectUrl 替换为您的应用程序客户端的回调 URL。在 Amazon Cognito 控制台中,进入您的用户池的应用程序客户端设置页面可以找到这些信息。

有关更多信息,请参阅如何为 Amazon Cognito 配置托管 Web UI?以及登录终端节点

测试终端节点 URL

  1. 在您的 Web 浏览器中输入构建的登录终端节点 URL。
  2. 在您的登录终端节点网页上,选择使用 Google 继续
    注意:如果您被重定向至您的 Amazon Cognito 应用程序客户端的回调 URL,则表示您已经在浏览器中登录您的 Google 账户。用户池令牌显示在 Web 浏览器地址栏的 URL 中。
  3. 使用 Google 登录下,选择您的 Google 账户并登录。

成功验证身份后,您将被重定向到您的 Amazon Cognito 应用程序客户端的回调 URL。用户池发出的 JSON Web 令牌 (JWT) 显示在 Web 浏览器地址栏的 URL 中。

注意:在实际的 Web 应用程序中,登录终端节点的 URL 是由 JavaScript 开发工具包生成的,该 JavaScript 开发工具包还负责解析 URL 中的 JWT 令牌。


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?