將社交登入新增至您的使用者集區 - Amazon Cognito

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

將社交登入新增至您的使用者集區

為使用者提供透過現有公有或社交登入應用程式的能力,身分提供者可以改善其身分驗證體驗。Amazon Cognito 使用者集區與 Facebook、Google、Amazon 和 Apple 等常用的社交身分提供者 (IdPs) 整合,為您的使用者提供他們已經熟悉的便捷登入選項。

當您設定社交登入時,您會為使用者提供建立專用帳戶的替代方案,但僅限為應用程式建立專用帳戶。這可以提高轉換率,並讓註冊程序更順暢。從使用者的角度來看,他們可以套用現有的社交登入資料來快速驗證,而不需要記住另一個使用者名稱和密碼。

在使用者集區中設定社交 IdP 需要幾個關鍵步驟。您必須向社交提供者註冊應用程式,才能取得用戶端 ID 和秘密。然後,您可以將社交 IdP 組態新增至使用者集區,指定您要請求的範圍,以及您要從 IdP 屬性映射的使用者集區屬性。在執行階段,Amazon Cognito 會處理與提供者的權杖交換、映射使用者屬性,並以共用使用者集區格式將權杖發佈至您的應用程式。

使用社交 IdP 註冊

與 Amazon Cognito 建立社交 IdP 之前,您必須將您的應用程式註冊至社交 IdP 以接收用戶端 ID 和用戶端密碼。

  1. 向 Facebook 建立開發人員帳戶

  2. 使用您的 Facebook 憑證登入

  3. My Apps (我的應用程式) 選單中,選擇 Create New App (建立新的應用程式)。

    如果您沒有現有的 Facebook 應用程式,您會看到不同的選項。選擇 Create App (建立應用程式)

  4. 建立應用程式頁面上,選擇應用程式的使用案例,然後選擇下一步

  5. 輸入您 Facebook 應用程式的名稱,然後選擇建立應用程式 ID

  6. 在左側導覽列中,選擇應用程式設定,然後選擇基本

  7. 記下 App ID (應用程式 ID)App Secret (應用程式秘密)。您會在下一節中用到它們。

  8. 從頁面底部選擇 + 新增平台

  9. 選取平台畫面上,選取您的平台,然後選擇下一步。

  10. 選擇 Save changes (儲存變更)。

  11. 對於 App Domains (應用程式網域),輸入您的使用者集區網域。

    https://your_user_pool_domain
  12. 選擇 Save changes (儲存變更)。

  13. 從導覽列中,選擇產品 ,然後選擇從 Facebook 登入 設定

  14. Facebook 登入設定選單中,選擇設定

    將重新導向輸入URL有效的OAuth重新導向 URIs。重新導向URL由使用者集區網域與/oauth2/idpresponse端點組成。

    https://your_user_pool_domain/oauth2/idpresponse
  15. 選擇 Save changes (儲存變更)。

  1. 向 Amazon 建立開發人員帳戶

  2. 使用您的 Amazon 憑證登入

  3. 您需要建立 Amazon 安全性設定檔以便接收 Amazon 用戶端 ID 和用戶端秘密。

    從頁面頂端的導覽列中選擇應用程式和服務,然後選擇使用 Amazon 登入

  4. 選擇 Create a Security Profile (建立安全性設定檔)。

  5. 輸入安全設定檔名稱 安全設定檔描述 同意隱私權聲明 URL

  6. 選擇 Save (儲存)。

  7. 選擇 Client ID (用戶端 ID) 和 Client Secret (用戶端秘密),以顯示用戶端 ID 和秘密。您會在下一節中用到它們。

  8. 將滑鼠移到齒輪圖示上方並選擇 Web Settings (Web 設定),然後選擇 Edit (編輯)。

  9. Allowed Origins (允許的來源) 中輸入您的使用者集區網域。

    https://<your-user-pool-domain>
  10. 將使用者集區網域與/oauth2/idpresponse端點輸入至允許傳回 URLs

    https://<your-user-pool-domain>/oauth2/idpresponse
  11. 選擇 Save (儲存)。

如需 Google Cloud OAuth 平台中 2.0 的詳細資訊,請參閱 Google Workspace for Developers 文件中的了解身分驗證和授權

  1. 向 Google 建立開發人員帳戶

  2. 登入 Google Cloud Platform 主控台

  3. 在頂端導覽列中,選擇 Select a project (選取專案)。如果您在 Google 平台中已經有專案,則此功能表將改為顯示您的預設專案。

  4. 選取 NEW PROJECT

  5. 輸入產品的名稱,然後選擇 CREATE

  6. 在左側導覽列中,選擇 APIs 和服務 ,然後選擇 Oauth 同意畫面

  7. 輸入應用程式資訊、應用程式網域 授權網域 開發人員聯絡資訊 。您的授權網域必須包含 amazoncognito.com和自訂網域的根。例如:example.com。選擇 SAVE AND CONTINUE

  8. 1. 在範圍 下,選擇新增或移除範圍 ,然後至少選擇下列OAuth範圍。

    1. .../auth/userinfo.email

    2. .../auth/userinfo.profile

    3. openid

  9. Test users (測試使用者) 下方,選擇 Add users (新增使用者)。輸入您的電子郵件地址和任何其他授權的測試使用者,然後選擇 SAVE AND CONTINUE

  10. 再次展開左側導覽列,選擇 APIs 和服務 ,然後選擇憑證

  11. 選擇 CREATE CREDENTIALS,然後選擇OAuth用戶端 ID

  12. 選擇 Application type (應用程式類型),並為您的用戶端取一個 Name (名稱)。

  13. 授權 JavaScript 原始伺服器 下,選擇 ADD URI。輸入您的使用者集區網域。

    https://<your-user-pool-domain>
  14. 授權重新導向 URIs下,選擇 ADD URI。輸入您使用者集區網域的 /oauth2/idpresponse 端點路徑。

    https://<your-user-pool-domain>/oauth2/idpresponse
  15. 選擇 CREATE

  16. 安全地儲存 Google 在您的用戶端 ID您的用戶端密碼下顯示的值。當您新增 Google IdP 時,請將這些值提供給 Amazon Cognito。

如需設定 Sign of Apple 的詳細資訊,請參閱 Apple Developer 文件中的設定 Sign in with Apple 的環境

  1. 向 Apple 建立開發人員帳戶

  2. 使用您的 Apple 憑證登入

  3. 在左側導覽列上,選擇 Certificates, Identifiers & Profiles (憑證、識別碼與設定檔)

  4. 在左側導覽列上,選擇 Identifiers (識別碼)。

  5. Identifiers (識別碼) 頁面上,選擇 + 圖示。

  6. 註冊新識別碼頁面上,選擇應用程式 IDs,然後選擇繼續

  7. 選取類型頁面上,選擇應用程式 ,然後選擇繼續

  8. Register an App ID (註冊應用程式 ID) 頁面上,執行下列操作:

    1. Description (描述) 下方輸入描述。

    2. App ID Prefix (應用程式 ID 字首) 下方,輸入 Bundle ID (套件 ID)。記下 App ID Prefix (應用程式 ID 字首) 下的值。在 步驟 2:新增社交 IdP 到您的使用者集區 中選擇 Apple 作為您的身分提供者之後,您將會使用此值。

    3. Capabilities (功能) 下方,選擇 Sign In with Apple,然後選擇 Edit (編輯)。

    4. 使用 Apple 登入:應用程式 ID 組態頁面上,選擇將應用程式設定為主要應用程式或與其他應用程式 分組IDs,然後選擇儲存

    5. 選擇繼續

  9. Confirm your App ID (確認您的應用程式 ID) 頁面上,選擇 Register (註冊)。

  10. Identifiers (識別碼) 頁面上,選擇 + 圖示。

  11. 註冊新識別符頁面上,選擇服務 IDs,然後選擇繼續

  12. Register a Services ID (註冊服務 ID) 頁面上,執行下列操作:

    1. Description (描述) 下方輸入描述。

    2. Identifier (識別符) 中,輸入識別符。請記下此服務 ID,因為在 中選擇 Apple 做為身分提供者之後,您需要此值步驟 2:新增社交 IdP 到您的使用者集區

    3. 選擇 Continue (繼續),然後選擇 Register (註冊)

  13. 選擇您剛從識別符頁面建立的服務 ID。

    1. 選取 Sign In with Apple,然後選擇 Configure (設定)。

    2. Web Authentication Configuration (Web 身分驗證組態) 頁面上,選取您稍早建立的應用程式 ID 作為 Primary App ID (主要應用程式 ID)。

    3. 選擇網站 URLs旁的 圖示。

    4. Domains and subdomains (網域與子網域) 下方,輸入不含 https:// 字首的使用者集區網域。

      <your-user-pool-domain>
    5. 傳回 URLs下,輸入使用者集區網域/oauth2/idpresponse端點的路徑。

      https://<your-user-pool-domain>/oauth2/idpresponse
    6. 選擇下一個 ,然後選擇完成 。您不須驗證網域。

    7. 選擇 Continue (繼續),然後選擇 Save (儲存)

  14. 在左側導覽列上,選擇 Keys (金鑰)。

  15. Keys (金鑰) 頁面上,選擇 + 圖示。

  16. Register a New Key (註冊新的金鑰) 頁面上,執行下列操作:

    1. Key Name (金鑰名稱) 下,輸入金鑰名稱。

    2. 選擇 Sign In with Apple,然後選擇 Configure (設定)。

    3. 設定金鑰頁面上,選取您先前建立的應用程式 ID,做為主要應用程式 ID 。選擇 Save (儲存)。

    4. 選擇 Continue (繼續),然後選擇 Register (註冊)。

  17. 下載您的金鑰頁面上,選擇下載以下載私有金鑰,記下顯示的金鑰 ID,然後選擇完成。您在 步驟 2:新增社交 IdP 到您的使用者集區 中選擇 Apple 當作身分提供者後,需有此頁面上顯示的私有金鑰和 Key ID (金鑰 ID) 值。

新增社交 IdP 到您的使用者集區

在本節中,您會使用上一節的用戶端 ID 和用戶端密碼,在使用者集區設定社交 IdP。

使用 設定使用者集區社交身分提供者 AWS Management Console
  1. 前往 Amazon Cognito 主控台。系統可能會提示您輸入 AWS 憑證。

  2. 選擇 User Pools (使用者集區)。

  3. 從清單中選擇現有的使用者集區,或建立使用者集區

  4. 選擇 Sign-in experience (登入體驗) 索引標籤。找到 Federated sign-in (聯合登入),然後選取 Add an identity provider (新增身分提供者)。

  5. 選擇社交身分提供者:FacebookGoogleLogin with AmazonSign in with Apple

  6. 根據您選擇的社交身分提供者,從以下步驟中選擇:

    • Google使用 Amazon 登入 – 輸入上一節中產生的應用程式用戶端 ID應用程式用戶端秘密

    • Facebook – 輸入上一節中產生的應用程式用戶端 ID應用程式用戶端秘密,然後選擇API版本 (例如 2.12 版)。我們建議選擇最新的可能版本,每個 Facebook API 都有生命週期和棄用日期。Facebook 範圍和屬性可能因API版本而異。建議您使用 Facebook 測試您的社交身分登入,以確保聯合使用正常運作。

    • 使用 Apple 登入 – 輸入上一節中產生的服務 ID團隊 ID金鑰 ID 私有金鑰

  7. 輸入您要使用的已授權範圍名稱。範圍可定義您要透過應用程式來存取的使用者屬性 (例如 nameemail)。若為 Facebook,這些屬性應以逗號分隔。若為 Google 和登入 Amazon,則應以空格分隔。若為 Sign in with Apple,請針對您想要存取的範圍勾選核取方塊。

    社交身分提供者 範例範圍
    Facebook public_profile, email
    Google profile email openid
    登入 Amazon profile postal_code
    使用 Apple 登入 email name

    會向您的應用程式使用者提示同意提供這些屬性給應用程式。如需社交供應商範圍的詳細資訊,請參閱 Google、Facebook、Login with Amazon 或 Sign in with Apple 提供的說明文件。

    透過 Sign in with Apple,以下是可能未傳回範圍的使用者案例:

    • 最終使用者在離開 Apple 的登入頁面後遇到失敗 (這些可能是 Amazon Cognito 的內部失敗或開發人員寫入的任何內容)。

    • 服務 ID 識別符會跨使用者集區和/或其他身分驗證服務使用。

    • 開發人員在使用者登入後新增額外的範圍。使用者只有在其進行身分驗證與重新整理其權杖時才會擷取新資訊。

    • 開發人員會刪除使用者,然後使用者再次登入,而不從其 Apple ID 設定檔中移除應用程式。

  8. 將身分提供者的屬性映射至您的使用者集區。如需詳細資訊,請參閱對應的須知事項

  9. 選擇 Create (建立)。

  10. App client integration (應用程式用戶端整合) 索引標籤選擇清單中的 App clients (應用程式用戶端) 之一,和 Edit hosted UI settings (編輯託管 UI 設定)。將新的社交身分提供者新增至 Identity providers (身分提供者) 下的應用程式用戶端。

  11. 選擇 Save changes (儲存變更)。

測試社交 IdP 組態

您可以使用前兩個區段URL中的元素來建立登入。用來測試社交 IdP 組態。

https://mydomain.us-east-1.amazoncognito.com/login?response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com

您可以在使用者集區 Domain name (網域名稱) 主控台頁面上尋找您的網域。client_id 位於 App client settings (應用程式用戶端設定) 頁面上。將回呼URL用於 redirect_uri 參數。這是頁面URL的 ,您的使用者將在成功身分驗證後重新導向。

注意

身分驗證請求若未在 5 分鐘內完成,Amazon Cognito 會將該請求取消,並將使用者重新導向至託管的 UI。此頁面人會顯示「Something went wrong」錯誤訊息。