本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将 Google 设置为身份池 IdP
Amazon Cognito 身份池与 Google 配合使用,以便针对移动应用程序用户提供联合身份验证。本部分介绍如何使用 Google 作为 IdP 来注册和设置应用程序。
Android
注意
如果您的应用程序使用 Google 并且可在多个移动平台上使用,则应将 Google 配置为 OpenID Connect 提供商。将所有创建的客户端 ID 添加为附加受众值,以便更好地集成。要详细了解 Google 的跨客户身份模型,请参阅Cross-client身份
设置 Google
要激活安卓版 Goog Sign-in le,请为您的应用程序创建一个 Google 开发者控制台项目。
-
转到 Google Developers 控制台
并创建一个新项目。 -
选择 APIs & Services(API 和服务),然后选择 OAuth consent screen(OAuth 同意屏幕)。自定义 Google 在征求用户同意以便与您的应用共享个人资料数据时向用户显示的信息。
-
选择 Credentials(凭证),然后选择 Create credentials(创建凭证)。选择 OAuth client ID(OAuth 客户端 ID)。选择 Android 作为 Application type(应用程序类型)。为开发应用程序的每个平台创建单独的客户端 ID。
-
从 Credentials(凭证)中,选择 Manage service accounts(管理服务账户)。选择 Create service account(创建服务账户)。输入服务账户详细信息,然后选择 Create and continue(创建并继续)。
-
授予服务账户对项目的访问权限。根据应用程序的要求授予用户访问服务账户的权限。
-
选择您的新服务账户,选择 Keys(密钥)选项卡,然后选择 Add key(添加密钥)。创建并下载新的 JSON 密钥。
有关如何使用 Google Developers 控制台的更多信息,请参阅 Google Cloud 文档中的创建和管理项目
有关如何将 Google 集成到 Android 应用程序的更多信息,请参阅 Google Identity 文档中的使用 Sign in with Google 验证用户身份
添加 Google 身份提供者(IdP)
-
从 Amazon Cognito 控制台
中选择身份池。选择身份池。 -
选择用户访问选项卡。
-
选择添加身份提供者。
-
选择 Google。
-
输入您在 Google Cloud Platform
上创建的 OAuth 项目的客户端 ID。有关更多信息,请参阅《Google Cloud Platform 控制台帮助》中的设置 OAuth 2.0 。 -
要设置 Amazon Cognito 在向通过该提供者进行身份验证的用户颁发凭证时请求的角色,请配置角色设置。
-
您可以为该 IdP 中的用户分配您在配置经过身份验证的角色时设置的原定设置角色,也可以使用规则选择角色。
-
如果您选择使用规则选择角色,请输入用户身份验证中的来源声明、您要用来与声明进行比较的运算符、导致与该角色选择匹配的值,以及当角色分配匹配时要分配的角色。选择添加其他,以根据不同的条件创建其他规则。
-
选择角色解析。当用户的声明与您的规则不匹配时,您可以拒绝凭证或为经过身份验证的角色颁发凭证。
-
-
-
要更改 Amazon Cognito 在向通过该提供者进行身份验证的用户颁发凭证时分配的主体标签,请配置访问控制属性。
-
如果不应用主体标签,请选择非活动。
-
要基于
sub和aud声明应用主体标签,请选择使用原定设置映射。 -
要为主体标签创建自己的自定义属性模式,请选择使用自定义映射。然后,对于您要在标签中表示的每个声明,输入要从该声明中获取的标签键。
-
-
选择保存更改。
使用 Google
要在应用程序中启用 Login with Google,请按照适用于 Android 的 Google 文档
以下示例代码显示如何从 Google Play 服务检索身份验证令牌:
GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext()); AccountManager am = AccountManager.get(this); Account[] accounts = am.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE); String token = GoogleAuthUtil.getToken(getApplicationContext(), accounts[0].name, "audience:server:client_id:YOUR_GOOGLE_CLIENT_ID"); Map<String, String> logins = new HashMap<String, String>(); logins.put("accounts.google.com", token); credentialsProvider.setLogins(logins);
iOS- Objective-C
注意
如果您的应用程序使用 Google 并且可在多个移动平台上使用,则应将 Google 配置为 OpenID Connect 提供商。将所有创建的客户端 ID 添加为附加受众值,以便更好地集成。要详细了解 Google 的跨客户身份模型,请参阅Cross-client身份
设置 Google
要启用 iOS 版 Goog Sign-in le,请为您的应用创建一个 Google 开发者控制台项目。
-
转到 Google Developers 控制台
并创建一个新项目。 -
选择 APIs & Services(API 和服务),然后选择 OAuth consent screen(OAuth 同意屏幕)。自定义 Google 在征求用户同意以便与您的应用共享个人资料数据时向用户显示的信息。
-
选择 Credentials(凭证),然后选择 Create credentials(创建凭证)。选择 OAuth client ID(OAuth 客户端 ID)。选择 iOS 作为 Application type(应用程序类型)。为开发应用程序的每个平台创建单独的客户端 ID。
-
从 Credentials(凭证)中,选择 Manage service accounts(管理服务账户)。选择 Create service account(创建服务账户)。输入服务账户详细信息,然后选择 Create and continue(创建并继续)。
-
授予服务账户对项目的访问权限。根据应用程序的要求授予用户访问服务账户的权限。
-
选择您的新服务账户。选择 Keys(密钥)选项卡,然后选择 Add key(添加密钥)。创建并下载新的 JSON 密钥。
有关如何使用 Google Developers 控制台的更多信息,请参阅 Google Cloud 文档中的创建和管理项目
要详细了解如何将谷歌集成到你的 iOS 应用中,请参阅 Google Sign-In Identity 文档中的 iOS 版
添加 Google 身份提供者(IdP)
-
从 Amazon Cognito 控制台
中选择身份池。选择身份池。 -
选择用户访问选项卡。
-
选择添加身份提供者。
-
选择 Google。
-
输入您在 Google Cloud Platform
上创建的 OAuth 项目的客户端 ID。有关更多信息,请参阅《Google Cloud Platform 控制台帮助》中的设置 OAuth 2.0 。 -
要设置 Amazon Cognito 在向通过该提供者进行身份验证的用户颁发凭证时请求的角色,请配置角色设置。
-
您可以为该 IdP 中的用户分配您在配置经过身份验证的角色时设置的原定设置角色,也可以使用规则选择角色。
-
如果您选择使用规则选择角色,请输入用户身份验证中的来源声明、您要用来与声明进行比较的运算符、导致与该角色选择匹配的值,以及当角色分配匹配时要分配的角色。选择添加其他,以根据不同的条件创建其他规则。
-
选择角色解析。当用户的声明与您的规则不匹配时,您可以拒绝凭证或为经过身份验证的角色颁发凭证。
-
-
-
要更改 Amazon Cognito 在向通过该提供者进行身份验证的用户颁发凭证时分配的主体标签,请配置访问控制属性。
-
如果不应用主体标签,请选择非活动。
-
要基于
sub和aud声明应用主体标签,请选择使用原定设置映射。 -
要为主体标签创建自己的自定义属性模式,请选择使用自定义映射。然后,对于您要在标签中表示的每个声明,输入要从该声明中获取的标签键。
-
-
选择保存更改。
使用 Google
要在应用程序中启用“用 Google 登录”,请按照适用于 iOS 的 Google 文档
成功通过身份验证后,将生成一个 GTMOAuth2Authentication 对象,其中包含一个 id_token,供 Amazon Cognito 用于对用户进行身份验证并生成一个唯一标识符:
- (void)finishedWithAuth: (GTMOAuth2Authentication *)auth error: (NSError *) error { NSString *idToken = [auth.parameters objectForKey:@"id_token"]; credentialsProvider.logins = @{ @(AWSCognitoLoginProviderKeyGoogle): idToken }; }
iOS - Swift
注意
如果您的应用程序使用 Google 并且可在多个移动平台上使用,则应将 Google 配置为 OpenID Connect 提供商。将所有创建的客户端 ID 添加为附加受众值,以便更好地集成。要详细了解 Google 的跨客户身份模型,请参阅Cross-client身份
设置 Google
要启用 iOS 版 Goog Sign-in le,请为您的应用创建一个 Google 开发者控制台项目。
-
转到 Google Developers 控制台
并创建一个新项目。 -
选择 APIs & Services(API 和服务),然后选择 OAuth consent screen(OAuth 同意屏幕)。自定义 Google 在征求用户同意以便与您的应用共享个人资料数据时向用户显示的信息。
-
选择 Credentials(凭证),然后选择 Create credentials(创建凭证)。选择 OAuth client ID(OAuth 客户端 ID)。选择 iOS 作为 Application type(应用程序类型)。为开发应用程序的每个平台创建单独的客户端 ID。
-
从 Credentials(凭证)中,选择 Manage service accounts(管理服务账户)。选择 Create service account(创建服务账户)。输入服务账户详细信息,然后选择 Create and continue(创建并继续)。
-
授予服务账户对项目的访问权限。根据应用程序的要求授予用户访问服务账户的权限。
-
选择您的新服务账户,选择 Keys(密钥)选项卡,然后选择 Add key(添加密钥)。创建并下载新的 JSON 密钥。
有关如何使用 Google Developers 控制台的更多信息,请参阅 Google Cloud 文档中的创建和管理项目
要详细了解如何将谷歌集成到你的 iOS 应用中,请参阅 Google Sign-In Identity 文档中的 iOS 版
在 Amazon Cognito 控制台主页
在 Amazon Cognito 控制台中配置外部提供商
-
选择想要在其中启用 Google 作为外部提供商的身份池的名称。此时将显示身份池的 Dashboard(控制面板)页。
-
在控制面板页面的右上角,选择 Edit identity pool (编辑身份池)。此时将显示“Edit identity pool”(编辑身份池)页。
-
向下滚动并选择 Authentication providers(身份验证提供商)以展开这一部分。
-
选择 Google 选项卡。
-
选择 Unlock(解锁)。
-
输入从 Google 获取的 Google 客户端 ID,然后选择 Save Changes(保存更改)。
使用 Google
要在应用程序中启用“用 Google 登录”,请按照适用于 iOS 的 Google 文档
成功的身份验证会生成一个包含 id_token 的 GTMOAuth2Authentication 对象。Amazon Cognito 使用此令牌对用户进行身份验证并生成一个唯一标识符:
func finishedWithAuth(auth: GTMOAuth2Authentication!, error: NSError!) { if error != nil { print(error.localizedDescription) } else { let idToken = auth.parameters.objectForKey("id_token") credentialsProvider.logins = [AWSCognitoLoginProviderKey.Google.rawValue: idToken!] } }
JavaScript
注意
如果您的应用程序使用 Google 并且可在多个移动平台上使用,则应将 Google 配置为 OpenID Connect 提供商。将所有创建的客户端 ID 添加为附加受众值,以便更好地集成。要详细了解 Google 的跨客户身份模型,请参阅Cross-client身份
设置 Google
要 Sign-in 为 JavaScript 网络应用程序启用 Google,请为您的应用程序创建一个 Google 开发者控制台项目。
-
转到 Google Developers 控制台
并创建一个新项目。 -
选择 APIs & Services(API 和服务),然后选择 OAuth consent screen(OAuth 同意屏幕)。自定义 Google 在征求用户同意以便与您的应用共享个人资料数据时向用户显示的信息。
-
选择 Credentials(凭证),然后选择 Create credentials(创建凭证)。选择 OAuth client ID(OAuth 客户端 ID)。选择 Web application(Web 应用程序)作为 Application type(应用程序类型)。为开发应用程序的每个平台创建单独的客户端 ID。
-
从 Credentials(凭证)中,选择 Manage service accounts(管理服务账户)。选择 Create service account(创建服务账户)。输入服务账户详细信息,然后选择 Create and continue(创建并继续)。
-
授予服务账户对项目的访问权限。根据应用程序的要求授予用户访问服务账户的权限。
-
选择您的新服务账户,选择 Keys(密钥)选项卡,然后选择 Add key(添加密钥)。创建并下载新的 JSON 密钥。
有关如何使用 Google Developers 控制台的更多信息,请参阅 Google Cloud 文档中的创建和管理项目
有关如何将 Google 集成到 Web 应用程序的更多信息,请参阅 Google Identity 文档中的使用 Google 登录
在 Amazon Cognito 控制台中配置外部提供商
添加 Google 身份提供者(IdP)
-
从 Amazon Cognito 控制台
中选择身份池。选择身份池。 -
选择用户访问选项卡。
-
选择添加身份提供者。
-
选择 Google。
-
输入您在 Google Cloud Platform
上创建的 OAuth 项目的客户端 ID。有关更多信息,请参阅《Google Cloud Platform 控制台帮助》中的设置 OAuth 2.0 。 -
要设置 Amazon Cognito 在向通过该提供者进行身份验证的用户颁发凭证时请求的角色,请配置角色设置。
-
您可以为该 IdP 中的用户分配您在配置经过身份验证的角色时设置的原定设置角色,也可以使用规则选择角色。
-
如果您选择使用规则选择角色,请输入用户身份验证中的来源声明、您要用来与声明进行比较的运算符、导致与该角色选择匹配的值,以及当角色分配匹配时要分配的角色。选择添加其他,以根据不同的条件创建其他规则。
-
选择角色解析。当用户的声明与您的规则不匹配时,您可以拒绝凭证或为经过身份验证的角色颁发凭证。
-
-
-
要更改 Amazon Cognito 在向通过该提供者进行身份验证的用户颁发凭证时分配的主体标签,请配置访问控制属性。
-
如果不应用主体标签,请选择非活动。
-
要基于
sub和aud声明应用主体标签,请选择使用原定设置映射。 -
要为主体标签创建自己的自定义属性模式,请选择使用自定义映射。然后,对于您要在标签中表示的每个声明,输入要从该声明中获取的标签键。
-
-
选择保存更改。
使用 Google
要在应用程序中启用“用 Google 登录”,请按照适用于 Web 的 Google 文档
成功通过身份验证后,将生成一个响应对象,其中包含一个 id_token,供 Amazon Cognito 用于对用户进行身份验证并生成一个唯一标识符:
function signinCallback(authResult) { if (authResult['status']['signed_in']) { // Add the Google ID token to the Amazon Cognito credentials login map. AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', Logins: { 'accounts.google.com': authResult['id_token'] } }); // Obtain AWS credentials AWS.config.credentials.get(function(){ // Access AWS resources here. }); } }