跳至内容

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

3 分钟阅读
0

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

解决方法

创建 Amazon Cognito 用户池

在 Amazon Cognito 控制台中创建新应用程序

创建 Google API 控制台项目

使用您的 Google 账号登录 Google API 控制台,然后创建 Google Cloud 项目。有关步骤,请参阅 Google Identity 网站上的使用 Google 登录网站和 Google Workspace 网站上的创建 Google Cloud 项目

配置 OAuth 同意屏幕

请完成以下步骤:

  1. 打开 Google API 控制台。
  2. 在导航窗格中,选择 OAuth consent screen(OAuth 同意屏幕)。
  3. 配置同意表单上的以下必填字段:
    对于 Application name(应用程序名称),输入一个名称。
    对于 Authorized domains(已获授权的域),输入 amazoncognito.com
    **重要事项:**必须输入此域才能在创建 OAuth 客户端 ID 时使用 Amazon Cognito 域
  4. 选择 Save(保存)。

获取 OAuth 2.0 客户端凭证

请完成以下步骤:

  1. 打开 Google API 控制台。
  2. Credentials(凭证)页面上,选择 Create credentials(创建凭证)。
  3. 选择 OAuth client ID(OAuth 客户端 ID)。
  4. 对于 Create OAuth client ID(创建 OAuth 客户端 ID)页面上的 Application type(应用程序类型),选择 Web application(Web 应用程序)。
  5. 配置以下设置:
    对于名称,请输入 OAuth 客户端 ID 的名称。
    对于 Authorized JavaScript origins(已获授权的 JavaScript 源),请输入 Amazon Cognito 域,例如:https://yourDomainPrefix.auth.region.amazoncognito.com
    注意:将 yourDomainPrefix 替换为用户池的域,将 region 替换为用户池的 AWS 区域。
    要查找用户池的域名前缀和区域,请完成以下操作:
    打开 Amazon Cognito 控制台
    从左侧导航栏中选择 User Pools(用户池)。
    选择您的用户池。
    在左侧导航菜单中,选择 App integration(应用程序集成)。滚动到 Domain(域)部分以查找您的域前缀和区域。
    对于
    已获授权的重定向 URI
    ,输入 https://yourDomainPrefix.auth.region.amazoncognito.com/oauth2/idpresponse
    **注意:**请将 yourDomainPrefixregion 替换为用户池的值。
  6. OAuth client(OAuth 客户端)对话框中,记下客户端 ID 和客户端密钥。

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

使用 Amazon Cognito 控制台通过社交 IdP 配置您的用户池并配置以下设置:

  • 对于 Add an identity provider(添加身份提供者),选择 Google
  • Map attributes between Google and your user pool(Google 和用户池之间映射属性)下,将 email用户池属性映射到 emailGoogle 属性

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

**注意:**在应用程序客户端设置中,映射的用户池属性必须是可写入的。有关详细信息,请参阅将 IdP 属性映射到配置文件和令牌

请完成以下步骤:

  1. 打开 Amazon Cognito 控制台
  2. 选择 User pools(用户池),然后选择您的用户池。
  3. 选择 App integration(应用程序集成)选项卡。
  4. App client list(应用程序客户端列表)下,选择 Create app client(创建应用程序客户端)。
  5. 配置以下设置:
    对于应用程序类型,选择公共客户端,然后输入应用程序客户端的名称。
    对于身份验证流程,选择 ALLOW_USER_PASSWORD_AUTHALLOW_REFRESH_TOKEN_AUTH
    对于 Allowed Callback URL(s)(允许的回调 URL),输入您希望用户登录后被重定向到的 URL。要进行测试,请输入有效的 URL,如 https://www.example.com/
    对于 Sign out URL(s)(注销 URL),输入您希望用户在注销后被重定向到的 URL。要进行测试,请输入有效的 URL,如 https://www.example.com/
    对于 Identity providers(身份提供者),选择 Cognito user pool(Cognito 用户池)和 Google
    对于 OAuth 2.0 grant type(OAuth 2.0 授权类型),选择 Implicit grant(隐式授权)。
    对于 OpenID Connect 范围,选择 emailopenidprofile
    **重要事项:**隐式授权 OAuth 流程仅用于测试目的。对于生产系统,最佳实践是使用授权码的授权类型。
  6. 选择 Create app client(创建应用程序客户端)。

有关应用程序客户端设置的详细信息,请参阅应用程序客户端术语

构造端点 URL

要为 Amazon Cognito 托管的 Web UI 构造登录端点 URL,请使用以下格式:

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

**注意:**将 yourDomainPrefix 替换为用户池的域,将 region 替换为用户池的区域。将 yourClientId 替换为 Amazon Cognito 应用程序客户端 ID,将 redirectUrl 替换为应用程序客户端的回调 URL。

要查找用户池的域前缀和区域,请完成以下步骤:

  1. 打开 Amazon Cognito 控制台
  2. 从左侧导航栏中选择 User Pools(用户池)。
  3. 选择您的用户池。
  4. 在左侧导航菜单中,选择 App integration(应用程序集成)。
  5. 滚动到 Domain(域)部分,以查找您的域前缀和区域。

要查找您的 ClientID 和 redirectUrl,请完成以下步骤:

  1. 打开 Amazon Cognito 控制台
  2. 从左侧导航栏中选择 User Pools(用户池)。
  3. 选择您的用户池。
  4. 在左侧导航菜单中,选择 App integration(应用程序集成)。
  5. 滚动到 App clients(应用程序客户端),以查找您的 ClientId 和 redirectUrl。
    **注意:**选择应用程序客户端以查看其详细信息,包括配置的重定向 URL。

测试端点 URL

请完成以下步骤:

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

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

相关信息

将社交身份提供者与用户池配合使用

使用第三方身份提供者登录用户池

Google Help 网站上的 Manage APIs in the API console(在 API 控制台中管理 API)