如何在 Amazon Cognito 用户池中将 Google 设置为联合身份提供者?
我想在 Amazon Cognito 用户池中使用 Google 作为联合身份提供者(IdP)。
解决方法
Amazon Cognito 用户池允许通过第三方(联合身份验证)登录,包括 Google 或 Facebook 等社交 IdP。有关更多信息,请参阅 Adding social identity providers to a user pool。
创建一个包含应用程序客户端和域名的 Amazon Cognito 用户池
- 创建用户池。
**注意:**在创建过程中,默认选择标准属性 email。有关详细信息,请参阅 User pool attributes。 - 在您的用户池中创建一个应用程序客户端。有关更多信息,请参阅 Add an app to turn on the hosted web UI。
- 为您的用户池添加域名。
创建 Google API 控制台项目
如果您已有项目,请创建一个新项目:
- 使用您的 Google 账户登录 Google API 控制台。有关更多信息,请参阅 Google Help 网站上的 Manage APIs in the API console。
- 在控制面板(API 和服务)上,选择创建。
- 在新建项目中,输入项目名称。
- 在位置中,选择浏览,然后选择一个位置。
- 选择创建。
有关更多信息,请参阅 Google Identity 网站上的 Sign In with Google for Web 文档。
配置 OAuth 同意屏幕
- 在 Google API 控制台的左侧导航窗格中,选择 OAuth 同意屏幕。
- 填写同意屏幕表单。请至少执行以下操作:
对于应用名称,输入一个名称。
对于已获授权的网域,输入 amazoncognito.com。
**重要提示:**您必须输入此域,否则以后在创建 OAuth 客户端 ID 时将无法使用 Amazon Cognito 域。 - 选择保存。您将被重定向到凭据页面。
有关更多信息,请参阅 Google Workspace 网站上的 Complete the OAuth consent screen。
获取 OAuth 2.0 客户端凭据
- 在 Google API 控制台的凭据页面上,选择**创建凭据。**然后,选择 OAuth 客户端 ID。
- 在创建 OAuth 客户端 ID 页面上,对于应用类型,选择 Web 应用。
- 请执行以下操作:
对于 OAuth 客户端 ID 输入名称。
对于已获授权的 JavaScript 来源,输入您的 Amazon Cognito 域。例如:https://yourDomainPrefix.auth.region.amazoncognito.com。
注意:请将 yourDomainPrefix 和 region 替换为您的用户池的值。在 Amazon Cognito 控制台的域名页面上找到您的用户池的这些值。
对于已获授权的重定向 URI,输入 https://yourDomainPrefix.auth.region.amazoncognito.com/oauth2/idpresponse。
**注意:**请将 yourDomainPrefix 和 region 替换为您的用户池的值。有关更多信息,请参阅上一步。 - 在 OAuth 客户端对话框中,找到客户端 ID 和客户端密钥,然后记下来备用。在 Amazon Cognito 用户池中配置 Google 时,将需要这些信息。
有关更多信息,请参阅 Google Identity 网站上的使用 OAuth 2.0 访问 Google API。
在您的用户池中将 Google 配置为联合 IdP
- 在 Amazon Cognito 控制台中,选择用户池。
- 选择要使用的用户池。
- 选择登录体验选项卡。
- 在联合身份提供者登录下,选择添加身份提供者。
- 选择 Google。然后,在使用此用户池设置 Google 联合身份验证下:
对于客户端 ID,粘贴您在之前步骤中记下的客户端 ID。
对于客户端密钥,粘贴您在之前步骤中记下的客户端密钥。
对于授权范围,输入个人资料电子邮件 OpenID。 - 在在 Google 和您的用户池之间映射属性下:
对于用户池属性 email,将其映射到 Google 属性 email。
选择添加其他属性,然后将用户池属性 username 映射到 Google 属性 username。 - 选择添加身份提供者。
更改用户池的应用程序客户端设置
**注意:**在应用程序客户端设置中,映射的用户池属性必须是可编辑的。有关更多信息,请参阅 Specifying identity provider attribute mappings for your user pool。
- 在 Amazon Cognito 控制台中,选择您的用户池。
- 选择应用程序集成选项卡。
- 在应用程序客户端列表下,选择创建应用程序客户端。
- 对于“应用程序类型”,选择公共客户端。然后,为您的应用程序客户端输入名称。
对于身份验证流程,选择 ALLOW_USER_PASSWORD_AUTH 和 ALLOW_REFRESH_TOKEN_AUTH。
在允许的****回调 URL 中,输入您希望用户在登录后重定向到的 URL。要进行测试,输入任何有效的 URL,例如 https://www.example.com/。
对于注销 URL,输入您希望用户在退出登录后重定向到的 URL。要进行测试,输入任何有效的 URL,例如 https://www.example.com/。
对于身份提供者,选择 Cognito 用户池和 Google。
对于 OAuth 2.0 授权类型,选择隐式授权。
对于 OpenID Connect 范围,选择 email、openid 和 **profile。
重要提示:**隐式授权 OAuth 流程仅用于测试目的。对于生产系统,最佳实践是使用授权码进行授权。 - 选择创建应用程序客户端。
有关更多信息,请参阅 App client settings terminology。
构造端点 URL
使用用户池中的值,为 Amazon Cognito 托管的 Web UI 构造此登录端点 URL:https://yourDomainPrefix.auth.region.amazoncognito.com/login?response_type=token&client_id=yourClientId&redirect_uri=redirectUrl
注意:请将 yourDomainPrefix 和 region 替换为您的用户池的值。在 Amazon Cognito 控制台的域名页面上找到您的用户池的这些值。将 yourClientId 替换为您的 Amazon Cognito 应用程序客户端 ID,并将 redirectUrl 替换为您的应用程序客户端的回调 URL。在 Amazon Cognito 控制台的应用程序客户端设置页面上找到您的用户池的这些值。
有关详细信息,请参阅如何为 Amazon Cognito 配置托管 Web UI?和 Login endpoint。
测试端点 URL
- 在 Web 浏览器中输入构造的登录端点 URL。
- 在您的登录端点网页上,选择使用 Google 继续。
**注意:**如果您被重定向到 Amazon Cognito 应用程序客户端的回调 URL,则表示您已经在浏览器中登录了 Google 账户。用户池令牌会显示在 Web 浏览器地址栏的 URL 中。 - 在使用 Google 登录下,选择您的 Google 账户并登录。
成功进行身份验证后,您将被重定向到 Amazon Cognito 应用程序客户端的回调 URL。用户池发出的 JSON Web 令牌(JWT)将显示在 Web 浏览器地址栏的 URL 中。
**注意:**在现实世界的 Web 应用程序中,登录端点的 URL 由 JavaScript SDK 生成。这还会解析 URL 中的 JWT 令牌。
相关信息
相关内容
- AWS 官方已更新 1 年前
- AWS 官方已更新 6 个月前
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 年前