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

2 分钟阅读
0

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

解决方法

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

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

  1. 创建用户群体
    注意:在创建过程中,默认选择标准属性电子邮件。有关详细信息,请参阅用户池属性
  2. 在您的用户群体中创建一个应用程序客户端。有关更多信息,请参阅添加应用程序客户端并设置托管 UI
  3. 为您的用户群体添加域名

创建一个 Google API Console 项目

如果您已经有一个项目,那就创建一个新项目:

  1. 使用您的 Google 账号登录 Google API Console。有关更多信息,请参阅 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 控制台的凭据页面上,选择创建凭证。然后,选择 OAuth 客户端 ID
  2. 创建 OAuth 客户端 ID页面,对于应用程序类型,选择 Web 应用程序
  3. 请执行以下操作:
    输入您的 OAuth 客户端 ID 的名称
    授权的 JavaScript 来源中,请输入您的 Amazon Cognito 域。例如:https://yourDomainPrefix.auth.region.amazoncognito.com
    注意:请将 yourDomainPrefix区域替换为您的用户群体的值。您可以在 Amazon Cognito 控制台域名页面上找到您的用户群体的这些值。
    对于授权的重定向 URI,请输入 https://yourDomainPrefix.auth.region.amazoncognito.com/oauth2/idpresponse
    **注意:**请将 yourDomainPrefix区域替换为您的用户群体的值。有关更多信息,请参阅上一步操作。
  4. OAuth 客户端对话框中,找到客户端 ID 和客户端密钥,然后记下来备用。在 Amazon Cognito 用户群体中配置 Google 时,您需要这些信息。

有关更多信息,请参阅 Google Identity 网站上的 Using OAuth 2.0 to access Google APIs

将 Google 配置为用户群体中的联合 IdP

  1. Amazon Cognito 控制台中,选择用户群体
  2. 选择要使用的用户群体。
  3. 选择登录体验选项卡。
  4. 联合身份提供商登录下,选择添加身份提供商
  5. 选择 Google。然后,在使用此用户群体设置 Google 联合身份验证下:
    对于客户端 ID,请粘贴您在之前步骤中记下的客户端 ID。
    对于客户密钥,请粘贴您在之前步骤中记下的客户端密钥。
    对于授权范围,请输入个人资料电子邮件 OpenID。
  6. Google 和您的用户群体的属性映射下:
    对于电子邮件属性的用户群体属性,请映射到电子邮件Google 属性
    选择添加其他属性,然后将用户名用户群体属性映射到用户名Google 属性
  7. 选择添加身份提供商

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

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

  1. Amazon Cognito 控制台中,选择您的用户群体。
  2. 选择应用程序集成选项卡。
  3. 应用程序客户端列表下,选择创建应用程序客户端
  4. 在“应用程序类型”中,选择公共客户端。然后,为您的应用程序客户端输入一个名称。
    对于身份验证流程,选择 ALLOW_USER_PASSWORD_AUTHALLOW_REFRESH_TOKEN_AUTH
    允许的****回调 URL 中,输入您希望用户在登录后重定向到的 URL。要进行测试,请输入任何一个有效的 URL,例如 https://www.example.com/
    注销 URL 中,输入您希望用户在注销后重定向到的 URL。要进行测试,请输入任何一个有效的 URL,例如 https://www.example.com/
    对于身份供应商,请选择 Cognito 用户群体Google
    对于 OAuth 2.0 授权类型,请选择隐式授权
    对于 OpenID Connect 范围,请选择电子邮件openid 和**个人资料。
    重要信息:**隐式授权 OAuth 流程仅用于测试目的。对于生产系统,最佳实践是使用授权码进行授权。
  5. 选择创建应用程序客户端

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

构造端点 URL

使用用户群体中的值,构造 Amazon Cognito 托管 Web UI 的登录端点 URL:https://yourDomainPrefix.auth.region.amazoncognito.com/login?response_type=token&client_id=yourClientId&redirect_uri=redirectUrl

注意:请将 yourDomainPrefix区域替换为您的用户群体的值。您可以在 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 网络令牌(JWT)将显示在 Web 浏览器地址栏的 URL 中。
**注意:**在现实世界的 Web 应用程序中,登录端点的 URL 由 JavaScript SDK 生成。这还会解析 URL 中的 JWT 令牌。

相关信息

通过第三方添加用户群体登录

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