將谷歌設置為身份池 IdP - Amazon Cognito

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將谷歌設置為身份池 IdP

Amazon Cognito 可整合 Google,為您的行動應用程式使用者提供聯合身分驗證。本節說明如何使用 Google 做為 IdP 來註冊及設定您的應用程式。

Android

注意

如果您的應用程式使用 Google 並且將可在多個行動平台上使用,則應將其設定為 OpenID Connect 供應商。將所有建立的用戶端 ID 新增為其他對象值,以便達到更佳的整合。若要進一步了解 Google 的跨用戶端身分模型,請參閱跨用戶端身分

設定 Google

若要啟用適用於 Android 的 Google 登入,請為應用程式建立 Google 開發人員主控台專案。

  1. 前往 Google 開發人員主控台,並建立新的專案。

  2. 選擇 APIs & Services (API 與服務),然後選擇 OAuth consent screen (OAuth 同意畫面)。自訂當 Google 要求使用者同意將其設定檔資料與您的應用程式共享時,Google 要向使用者顯示的資訊。

  3. 選擇 Credentials (憑證),然後選擇 Create credentials (建立憑證)。選擇 OAuth client ID (OAuth 用戶端 ID)。選取 Android 做為 Application type (應用程式類型)。為開發應用程式所在的每個平台建立單獨的用戶端 ID。

  4. Credentials (憑證),選擇 Manage service accounts (管理服務帳戶)。選擇 Create service account (建立服務帳戶)。輸入您的服務帳戶詳細資訊,然後選擇 Create and continue (建立並繼續)。

  5. 將服務帳戶存取權授與您的專案。根據您應用程式的需求將服務帳戶的存取權授與使用者。

  6. 選擇您的新服務帳戶,選擇 Keys (金鑰) 索引標籤,然後選擇 Add key (新增金鑰)。建立並下載新的 JSON 金鑰。

如需使用 Google 開發人員主控台的詳細資訊,請參閱 Google Cloud 文件中的建立與管理專案

有關如何將 Google 集成到您的 Android 應用程序中的更多信息,請參閱 Google 身份說明文檔中的使用 Google 登錄對用戶進行身份驗證。

若要新增 Google 身分提供者 (IdP)
  1. Amazon Cognito 主控台選擇 身分池。選取身分池。

  2. 選擇 使用者存取權 索引標籤。

  3. 選取 新增身分供應商

  4. 選擇 Google

  5. 輸入您在 Google Cloud Platform 建立的 OAuth 專案 用戶端 ID。如需詳細資訊,請參閱《Google Cloud Platform 主控台幫助》中的設定 OAuth 2.0

  6. 若要設定 Amazon Cognito 向已通過此提供者進行身分驗證的使用者發布憑證時的角色,請設定 角色設定

    1. 您可以為該 IdP 使用者指派設定 已驗證角色 時的 預設角色,或您可以 選擇具有規則的角色

      1. 如果您選擇 使用規則選擇角色,請輸入使用者身分驗證的 宣告 來源、比較宣告的 操作員、導致符合角色選擇的 ,以及當符合 角色指派 時您要指派的 角色。選取 新增另一項 以根據不同的條件建立其他規則。

      2. 選擇 角色解析。當您的使用者宣告與您的規則不符時,您可以拒絕憑證或向 已驗證角色 發出憑證。

  7. 若要變更透過此提供者驗證使用者,Amazon Cognito 發布憑證時指派的主要索引標籤,請設定 存取控制的屬性

    1. 若不套用主要索引標籤,請選擇 非作用中

    2. 若要根據 subaud 宣告套用主要索引標籤,請選擇 使用預設對應

    3. 若要建立您自己的自訂屬性結構描述至主要索引標籤,請選擇 使用自訂對應。然後,輸入您要從每個 宣告 中獲取的 標籤金鑰,顯示於索引標籤當中。

  8. 選取儲存變更

使用 Google

若要在您的應用程式中啟用以 Google 登入,請遵循適用於 Android 的 Google 說明文件中的指示。當使用者登入時,他們會向 Google 請求 OpenID Connect 身分驗證權杖。然後 Amazon Cognito 會使用該權杖來驗證使用者身分,並產生唯一識別符。

下列範例程式碼說明如何從 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 的跨用戶端身分模型,請參閱跨用戶端身分

設定 Google

若要啟用適用於 iOS 的 Google 登入,請為應用程式建立 Google 開發人員主控台專案。

  1. 前往 Google 開發人員主控台,並建立新的專案。

  2. 選擇 APIs & Services (API 與服務),然後選擇 OAuth consent screen (OAuth 同意畫面)。自訂當 Google 要求使用者同意將其設定檔資料與您的應用程式共享時,Google 要向使用者顯示的資訊。

  3. 選擇 Credentials (憑證),然後選擇 Create credentials (建立憑證)。選擇 OAuth client ID (OAuth 用戶端 ID)。選取 iOS 做為 Application type (應用程式類型)。為開發應用程式所在的每個平台建立單獨的用戶端 ID。

  4. Credentials (憑證),選擇 Manage service accounts (管理服務帳戶)。選擇 Create service account (建立服務帳戶)。輸入您的服務帳戶詳細資訊,然後選擇 Create and continue (建立並繼續)。

  5. 將您專案的存取權授與服務帳戶。根據您應用程式的需求將服務帳戶的存取權授與使用者。

  6. 選擇您的新服務帳戶。選擇 Keys (金鑰) 索引標籤,然後選擇 Add key (新增金鑰)。建立並下載新的 JSON 金鑰。

如需使用 Google 開發人員主控台的詳細資訊,請參閱 Google Cloud 文件中的建立與管理專案

如需如何將 Google 整合到您 iOS 應用程式的詳細資訊,請參閱 Google Identity 文件中的適用於 iOS 的 Google 登入

若要新增 Google 身分提供者 (IdP)
  1. Amazon Cognito 主控台選擇 身分池。選取身分池。

  2. 選擇 使用者存取權 索引標籤。

  3. 選取 新增身分供應商

  4. 選擇 Google

  5. 輸入您在 Google Cloud Platform 建立的 OAuth 專案 用戶端 ID。如需詳細資訊,請參閱《Google Cloud Platform 主控台幫助》中的設定 OAuth 2.0

  6. 若要設定 Amazon Cognito 向已通過此提供者進行身分驗證的使用者發布憑證時的角色,請設定 角色設定

    1. 您可以為該 IdP 使用者指派設定 已驗證角色 時的 預設角色,或您可以 選擇具有規則的角色

      1. 如果您選擇 使用規則選擇角色,請輸入使用者身分驗證的 宣告 來源、比較宣告的 操作員、導致符合角色選擇的 ,以及當符合 角色指派 時您要指派的 角色。選取 新增另一項 以根據不同的條件建立其他規則。

      2. 選擇 角色解析。當您的使用者宣告與您的規則不符時,您可以拒絕憑證或向 已驗證角色 發出憑證。

  7. 若要變更透過此提供者驗證使用者,Amazon Cognito 發布憑證時指派的主要索引標籤,請設定 存取控制的屬性

    1. 若不套用主要索引標籤,請選擇 非作用中

    2. 若要根據 subaud 宣告套用主要索引標籤,請選擇 使用預設對應

    3. 若要建立您自己的自訂屬性結構描述至主要索引標籤,請選擇 使用自訂對應。然後,輸入您要從每個 宣告 中獲取的 標籤金鑰,顯示於索引標籤當中。

  8. 選取儲存變更

使用 Google

若要在您的應用程式中啟用以 Google 登入,請遵循適用於 iOS 的 Google 說明文件。身分驗證成功會產生 OpenID Connect 身分驗證權杖,Amazon Cognito 會用它來驗證使用者,並產生唯一識別符。

身分驗證成功會產生包含 id_tokenGTMOAuth2Authentication 物件,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 的跨用戶端身分模型,請參閱跨用戶端身分

設定 Google

若要啟用適用於 iOS 的 Google 登入,請為應用程式建立 Google 開發人員主控台專案。

  1. 前往 Google 開發人員主控台,並建立新的專案。

  2. 選擇 APIs & Services (API 與服務),然後選擇 OAuth consent screen (OAuth 同意畫面)。自訂當 Google 要求使用者同意將其設定檔資料與您的應用程式共享時,Google 要向使用者顯示的資訊。

  3. 選擇 Credentials (憑證),然後選擇 Create credentials (建立憑證)。選擇 OAuth client ID (OAuth 用戶端 ID)。選取 iOS 做為 Application type (應用程式類型)。為開發應用程式所在的每個平台建立單獨的用戶端 ID。

  4. Credentials (憑證),選擇 Manage service accounts (管理服務帳戶)。選擇 Create service account (建立服務帳戶)。輸入您的服務帳戶詳細資訊,然後選擇 Create and continue (建立並繼續)。

  5. 將您專案的存取權授與服務帳戶。根據您應用程式的需求將服務帳戶的存取權授與使用者。

  6. 選擇您的新服務帳戶,選擇 Keys (金鑰) 索引標籤,然後選擇 Add key (新增金鑰)。建立並下載新的 JSON 金鑰。

如需使用 Google 開發人員主控台的詳細資訊,請參閱 Google Cloud 文件中的建立與管理專案

如需如何將 Google 整合到您 iOS 應用程式的詳細資訊,請參閱 Google Identity 文件中的適用於 iOS 的 Google 登入

Amazon Cognito 主控台首頁選擇 Manage Identity Pools (管理身分集區)

在 Amazon Cognito 主控台中設定外部供應商
  1. 針對要啟用 Google 做為外部供應商的身分集區,選擇其名稱。該身分集區的 Dashboard (儀表板) 頁面隨即出現。

  2. Dashboard (儀表板) 頁面右上角,選擇 Edit identity pool (編輯身分集區)。Edit identity pool (編輯身分集區) 頁面隨即出現。

  3. 向下捲動,然後選擇 Authentication providers (身分驗證供應商) 以展開該區段。

  4. 選擇 Google 索引標籤。

  5. 選擇 Unlock (解除鎖定)

  6. 輸入您從 Google 取得的 Google 用戶端 ID,然後選擇 Save Changes (儲存變更)。

使用 Google

若要在您的應用程式中啟用以 Google 登入,請遵循適用於 iOS 的 Google 說明文件。身分驗證成功會產生 OpenID Connect 身分驗證權杖,Amazon Cognito 會用它來驗證使用者,並產生唯一識別符。

成功的身分驗證會產生 GTMOAuth2Authentication 物件,該物件包含 id_token。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 的跨用戶端身分模型,請參閱跨用戶端身分

設定 Google

要為 JavaScript Web 應用程序啟用 Google 登錄,請為您的應用程序創建一個 Google 開發人員控制台項目。

  1. 前往 Google 開發人員主控台,並建立新的專案。

  2. 選擇 APIs & Services (API 與服務),然後選擇 OAuth consent screen (OAuth 同意畫面)。自訂當 Google 要求使用者同意將其設定檔資料與您的應用程式共享時,Google 要向使用者顯示的資訊。

  3. 選擇 Credentials (憑證),然後選擇 Create credentials (建立憑證)。選擇 OAuth client ID (OAuth 用戶端 ID)。選取 Web application (Web 應用程式) 做為 Application type (應用程式類型)。為開發應用程式所在的每個平台建立單獨的用戶端 ID。

  4. Credentials (憑證),選擇 Manage service accounts (管理服務帳戶)。選擇 Create service account (建立服務帳戶)。輸入您的服務帳戶詳細資訊,然後選擇 Create and continue (建立並繼續)。

  5. 將您專案的存取權授與服務帳戶。根據您應用程式的需求將服務帳戶的存取權授與使用者。

  6. 選擇您的新服務帳戶,選擇 Keys (金鑰) 索引標籤,然後選擇 Add key (新增金鑰)。建立並下載新的 JSON 金鑰。

如需使用 Google 開發人員主控台的詳細資訊,請參閱 Google Cloud 文件中的建立與管理專案

如需如何將 Google 整合到您 Web 應用程式的詳細資訊,請參閱 Google Identity 文件中的使用 Google 登入

在 Amazon Cognito 主控台中設定外部供應商

若要新增 Google 身分提供者 (IdP)
  1. Amazon Cognito 主控台選擇 身分池。選取身分池。

  2. 選擇 使用者存取權 索引標籤。

  3. 選取 新增身分供應商

  4. 選擇 Google

  5. 輸入您在 Google Cloud Platform 建立的 OAuth 專案 用戶端 ID。如需詳細資訊,請參閱《Google Cloud Platform 主控台幫助》中的設定 OAuth 2.0

  6. 若要設定 Amazon Cognito 向已通過此提供者進行身分驗證的使用者發布憑證時的角色,請設定 角色設定

    1. 您可以為該 IdP 使用者指派設定 已驗證角色 時的 預設角色,或您可以 選擇具有規則的角色

      1. 如果您選擇 使用規則選擇角色,請輸入使用者身分驗證的 宣告 來源、比較宣告的 操作員、導致符合角色選擇的 ,以及當符合 角色指派 時您要指派的 角色。選取 新增另一項 以根據不同的條件建立其他規則。

      2. 選擇 角色解析。當您的使用者宣告與您的規則不符時,您可以拒絕憑證或向 已驗證角色 發出憑證。

  7. 若要變更透過此提供者驗證使用者,Amazon Cognito 發布憑證時指派的主要索引標籤,請設定 存取控制的屬性

    1. 若不套用主要索引標籤,請選擇 非作用中

    2. 若要根據 subaud 宣告套用主要索引標籤,請選擇 使用預設對應

    3. 若要建立您自己的自訂屬性結構描述至主要索引標籤,請選擇 使用自訂對應。然後,輸入您要從每個 宣告 中獲取的 標籤金鑰,顯示於索引標籤當中。

  8. 選取儲存變更

使用 Google

若要在您的應用程式中啟用以 Google 登入,請遵循適用於 Web 的 Google 說明文件

身分驗證成功會產生包含 id_token 的回應物件,Amazon Cognito 會用其來驗證使用者,並產生唯一識別符:

function signinCallback(authResult) { if (authResult['status']['signed_in']) { // Add the Google access 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. }); } }

Unity

設定 Google

若要啟用適用於 Unity 應用程式的 Google 登入,您必須為應用程式建立 Google 開發人員主控台專案。

  1. 前往 Google 開發人員主控台,並建立新的專案。

  2. 選擇 APIs & Services (API 與服務),然後選擇 OAuth consent screen (OAuth 同意畫面)。自訂當 Google 要求使用者同意將其設定檔資料與您的應用程式共享時,Google 要向使用者顯示的資訊。

  3. 選擇 Credentials (憑證),然後選擇 Create credentials (建立憑證)。選擇 OAuth client ID (OAuth 用戶端 ID)。選取 Web application (Web 應用程式) 做為 Application type (應用程式類型)。為開發應用程式所在的每個平台建立單獨的用戶端 ID。

  4. 若為 Unity,則針對 Android 建立一個額外的 OAuth client ID (OAuth 用戶端 ID),並針對 iOS 建立另外一個。

  5. Credentials (憑證),選擇 Manage service accounts (管理服務帳戶)。選擇 Create service account (建立服務帳戶)。輸入您的服務帳戶詳細資訊,然後選擇 Create and continue (建立並繼續)。

  6. 將您專案的存取權授與服務帳戶。根據您應用程式的需求將服務帳戶的存取權授與使用者。

  7. 選擇您的新服務帳戶,選擇 Keys (金鑰) 索引標籤,然後選擇 Add key (新增金鑰)。建立並下載新的 JSON 金鑰。

如需使用 Google 開發人員主控台的詳細資訊,請參閱 Google Cloud 文件中的建立與管理專案

在 IAM 主控台中建立 OpenID 供應商

  1. 在 IAM 主控台中建立 OpenID 供應商 如需有關如何設定 OpenID 供應商的資訊,請參閱使用 OpenID Connect 身分提供者

  2. 當提示您輸入供應商 URL 時,請輸入 "https://accounts.google.com"

  3. 當提示您在 Audience (對象) 欄位中輸入值時,請輸入您在前面步驟中建立的三個用戶端 ID 之一。

  4. 選擇供應商名稱,並使用其他兩個用戶端 ID 再新增其他兩個對象。

在 Amazon Cognito 主控台中設定外部供應商

Amazon Cognito 主控台首頁選擇 Manage Identity Pools (管理身分集區)

若要新增 Google 身分提供者 (IdP)
  1. Amazon Cognito 主控台選擇 身分池。選取身分池。

  2. 選擇 使用者存取權 索引標籤。

  3. 選取 新增身分供應商

  4. 選擇 Google

  5. 輸入您在 Google Cloud Platform 建立的 OAuth 專案 用戶端 ID。如需詳細資訊,請參閱《Google Cloud Platform 主控台幫助》中的設定 OAuth 2.0

  6. 若要設定 Amazon Cognito 向已通過此提供者進行身分驗證的使用者發布憑證時的角色,請設定 角色設定

    1. 您可以為該 IdP 使用者指派設定 已驗證角色 時的 預設角色,或您可以 選擇具有規則的角色

      1. 如果您選擇 使用規則選擇角色,請輸入使用者身分驗證的 宣告 來源、比較宣告的 操作員、導致符合角色選擇的 ,以及當符合 角色指派 時您要指派的 角色。選取 新增另一項 以根據不同的條件建立其他規則。

      2. 選擇 角色解析。當您的使用者宣告與您的規則不符時,您可以拒絕憑證或向 已驗證角色 發出憑證。

  7. 若要變更透過此提供者驗證使用者,Amazon Cognito 發布憑證時指派的主要索引標籤,請設定 存取控制的屬性

    1. 若不套用主要索引標籤,請選擇 非作用中

    2. 若要根據 subaud 宣告套用主要索引標籤,請選擇 使用預設對應

    3. 若要建立您自己的自訂屬性結構描述至主要索引標籤,請選擇 使用自訂對應。然後,輸入您要從每個 宣告 中獲取的 標籤金鑰,顯示於索引標籤當中。

  8. 選取儲存變更

安裝 Unity Google 外掛程式

  1. Google Play Games plugin for Unity 新增至您的 Unity 專案。

  2. 在 Unity 中,從 Windows 選單使用適用於 Android 和 iOS 平台的三個 ID 來設定外掛程式。

使用 Google

下列範例程式碼說明如何從 Google Play 服務擷取身分驗證權杖:

void Start() { PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder().Build(); PlayGamesPlatform.InitializeInstance(config); PlayGamesPlatform.DebugLogEnabled = true; PlayGamesPlatform.Activate(); Social.localUser.Authenticate(GoogleLoginCallback); } void GoogleLoginCallback(bool success) { if (success) { string token = PlayGamesPlatform.Instance.GetIdToken(); credentials.AddLogin("accounts.google.com", token); } else { Debug.LogError("Google login failed. If you are not running in an actual Android/iOS device, this is expected."); } }

Xamarin

注意

Amazon Cognito 不是原本就在 Xamarin 平台上支援 Google。整合目前需要使用 Web 檢視畫面來進行瀏覽器登入流程。若要了解 Google 整合如何與其他軟體開發套件搭配使用,請選取其他平台。

若要在您的應用程式中啟用以 Google 登入,請驗證您的使用者,並從其取得 OpenID Connec 權杖。Amazon Cognito 會使用此權杖來產生與 Amazon Cognito 身分相關聯的唯一使用者識別符。很可惜,適用於 Xamarin 的 Google 開發套件不能讓您擷取 OpenID Connect 權杖,因此請使用替代用戶端,或是使用 Web 檢視中的 Web 流程。

取得權杖之後,您可以將其設定在您的 CognitoAWSCredentials 中:

credentials.AddLogin("accounts.google.com", token);
注意

如果您的應用程式使用 Google 並可在多個行動平台上使用,則應將 Google 設定為 OpenID Connect 供應商。將所有建立的用戶端 ID 新增為其他對象值,以便達到更佳的整合。若要進一步了解 Google 的跨用戶端身分模型,請參閱跨用戶端身分