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

2 分钟阅读
0

我想在 Amazon Cognito 用户池中使用 Google 作为联合身份提供者(IdP)。

解决方法

创建一个包含应用程序客户端和域名的 Amazon Cognito 用户群体

请完成以下步骤:

  1. 创建新的用户池
    **注意:**创建用户群体时,系统会默认选择标准属性 email
  2. 在用户池中创建一个应用程序客户端
  3. 为用户池添加域名

创建 Google API 控制台项目

请完成以下步骤:

  1. 使用 Google 账户登录 Google API 控制台。有关更多信息,请参阅 Google Help 网站上的 Manage APIs in the API console
  2. 控制面板(API 和服务)上,选择创建
  3. 新建项目中,输入项目名称
  4. 位置中,选择浏览,然后选择一个位置。
  5. 选择创建

有关更多信息,请参阅 Google Identity 网站上的 Sign in with Google for web 文档。

配置 OAuth 同意屏幕

请完成以下步骤:

  1. 打开 Google API 控制台,然后在左侧导航窗格中选择 OAuth 同意屏幕
  2. 填写同意表单上的以下必填字段:
    对于应用名称,请输入一个名称。
    对于已获授权的域,输入 amazoncognito.com
    **重要事项:**必须输入此域,这样在创建 OAuth 客户端 ID 时才能使用Amazon Cognito 域
  3. 选择保存

有关更多信息,请参阅 Google Workspace 网站上的 Complete the OAuth consent screen

获取 OAuth 2.0 客户端凭证

请完成以下步骤:

  1. 打开 Google API 控制台,然后在凭证页面上选择创建凭证
  2. 选择 OAuth 客户端 ID
  3. 对于创建 OAuth 客户端 ID 页面上的应用类型,选择 Web 应用
  4. 输入以下信息:
    对于名称,请输入 OAuth 客户端 ID 的名称。
    对于已获授权的 JavaScript 来源,请输入 Amazon Cognito 域,例如:
    注意:请将 yourDomainPrefixregion 替换为用户池的值。要查找这些值,请打开 Amazon Cognito 控制台并导航到用户池的域名页面。
    对于
    已获授权的重定向 URI**,输入 **
    **注意:**请将 yourDomainPrefixregion 替换为用户池的值。
  5. OAuth 客户端对话框中,记下客户端 ID 和客户端密钥,以便在后续步骤中使用。

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

在用户池中将 Google 配置为联合 IdP

请完成以下步骤:

  1. 打开 Amazon Cognito 控制台,然后选择用户池
  2. 选择您的用户池。
  3. 选择登录体验选项卡。
  4. 联合身份提供者登录下,选择添加身份提供者
  5. 选择 Google
  6. 使用此用户池设置 Google 联合身份验证下,输入以下信息:
    对于客户端 ID,输入您记下的客户端 ID。
    对于客户端密钥,输入记下的客户端密钥。
    对于授权范围,输入个人资料电子邮件 OpenID。
  7. Google 和用户池之间映射属性下,将 email用户池属性映射到 emailGoogle 属性
  8. 选择添加其他属性,然后将 username用户池属性映射到 usernameGoogle 属性
  9. 选择添加身份提供者

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

**注意:**在应用程序客户端设置中,映射的用户池属性必须是可写入的。有关更多信息,请参阅 Specifying identity provider attribute mappings for your user pool

请完成以下步骤:

  1. 打开 Amazon Cognito 控制台,然后选择您的用户池。
  2. 选择应用程序集成选项卡。
  3. 应用程序客户端列表下,选择创建应用程序客户端
  4. 输入以下信息:
    对于应用程序类型,选择公共客户端,然后输入应用程序客户端的名称。
    对于身份验证流程,选择 ALLOW_USER_PASSWORD_AUTHALLOW_REFRESH_TOKEN_AUTH
    允许的****回调 URL 中,输入您希望用户在登录后重定向到的 URL。要进行测试,请输入有效的 URL,如
    注销 URL** 中,输入您希望用户在注销后被重定向到的 URL。要进行测试,请输入有效 URL,例如
    对于
    身份提供者**,选择 Cognito 用户池Google
    对于 OAuth 2.0 授权类型,选择隐式授权
    对于 OpenID Connect 范围,选择 emailopenidprofile
    **重要事项:**隐式授权 OAuth 流程仅用于测试目的。对于生产系统,最佳实践是使用授权码的授权类型。
  5. 选择创建应用程序客户端

有关更多信息,请参阅应用程序客户端术语

构造端点 URL

要为 Amazon Cognito 托管的 Web UI 构建登录端点 URL,请使用用户池的值。

示例 URL:

注意:请将 yourDomainPrefixregion 替换为用户池的值。要查找这些值,请打开 Amazon Cognito 控制台,导航到用户池的域名页面。将 yourClientId 替换为 Amazon Cognito 应用程序客户端 ID,将 redirectUrl 替换为应用程序客户端的回调 URL。在用户池的应用程序客户端设置页面上找到这些值。

有关详细信息,请参阅如何为 Amazon Cognito 配置托管 Web UI?Login endpoint

测试端点 URL

请完成以下步骤:

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

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

**注意:**JavaScript 开发工具包会生成登录端点的 URL。还会解析 URL 中的 JWT 令牌。

相关信息

Using social identity providers with a user pool

Adding user pool sign-in through a third party

AWS 官方
AWS 官方已更新 9 个月前