使用OIDC身分識別提供者與使用者集區 - Amazon Cognito

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

使用OIDC身分識別提供者與使用者集區

您可以讓已經擁有 OpenID Connect (OIDC) 身份提供者 () 帳戶的用戶跳過註冊步驟並使用現有帳戶登錄到您的應用程序。IdPsAmazon Cognito 使用內建的託管 Web UI,可以為所有已進行身分驗證的使用者提供字符處理和管理。這樣,您的後端系統可以對一組使用者集區字符進行標準化。

使用 OIDC IdP 進行驗證概觀
注意

Amazon Cognito 使用者集區提供透過第三方 (聯合身分) 登入。這項功能與透過 Amazon Cognito 身分集區 (聯合身分) 登入無關。

您可以在 AWS Management Console、透過或使用使用者集區方API法 CreateIdentityProvider,將 OIDC IdP 新增至您的使用者集區。 AWS CLI

必要條件

開始之前,您必須準備好以下事項:

  • 具有應用程式用戶端和使用者集區網域的使用者集區。如需詳細資訊,請參閱建立使用者集區

  • 具有下列組態的 OIDC IdP:

    • 支援 client_secret_post 用户端身分驗證。Amazon Cognito 不會在您的 IdP OIDC 探token_endpoint_auth_methods_supported索端點檢查宣告。Amazon Cognito 不支援 client_secret_basic 用户端身分驗證。如需用户端身分驗證的詳細資訊,請參閱 OpenID Connect 文件中的用戶端身分驗證

    • 僅用HTTPS於OIDC端點openid_configuration,例如userInfo、和jwks_uri

    • 僅將TCP通訊埠 80 和 443 用於OIDC端點。

    • 僅使用 HMAC-SHA、ECDSA或RSA演算法簽署 ID 令牌。

    • 在其 jwks_uri 發佈金鑰 ID kid 宣告並在其權杖中包含 kid 宣告。

    • 呈現具有有效根 CA 信任鏈的未過期公用金鑰。

步驟 1:使用 OIDC IdP 註冊

使用 Amazon Cognito 建立 OIDC IdP 之前,您必須向 I OIDC dP 註冊您的應用程式,以接收用戶端 ID 和用戶端密碼。

使用 OIDC IdP 進行註冊的步驟
  1. 使用 OIDC IdP 建立開發人員帳戶。

    連結至 OIDC IdPs
    OIDCIdP 安裝方法 OIDC發現 URL
    Salesforce

    安裝 Salesforce 身分提供者

    https://login.salesforce.com

    Ping 身分

    安裝 Ping Identity 身分提供者

    https://Your Ping domain address:ID /用戶信息

    例如:https://pf.company.com:9031/idp/userinfo.openid

    Okta

    安裝 Okta 身分提供者

    https://Your Okta subdomain. 五月評論

    https://Your Okta subdomain.okta.com

    Microsoft Azure Active Directory (Azure AD)

    安裝 Microsoft Azure AD 身分提供者

    https://login.microsoftonline.com/{tenant}/v2.0

    Google

    安裝 Google 身分提供者

    https://accounts.google.com

    注意

    Amazon Cognito 提供 Google 作為整合的社交登入 IdP。我們建議您使用整合的 IdP。請參閱 透過使用者集區使用社交身分提供者

  2. 使用 OIDC IdP 向/oauth2/idpresponse端點註冊您的使用者集區網域URL。這樣可確保 OIDC IdP 稍後在對使用者進行身份驗證時接受來自 Amazon Cognito 的資料。

    https://mydomain.us-east-1.amazoncognito.com/oauth2/idpresponse
  3. 在您的 Amazon Cognito 用戶池中註冊您的回調URL。這是 Amazon Cognito 在驗證成功後重新導向您URL的使用者的頁面。

    https://www.example.com
  4. 選擇您的範圍。必須填入範圍 openid。需有 email 範圍,以授予 emailemail_verified 宣告的存取權。

  5. I OIDC dP 為您提供用戶端 ID 和用戶端密碼。當您在使用者集區中設定 OIDC IdP 時,您將使用它們。

範例:使用 Salesforce 做為您的使用者集區的 OIDC IdP

當您想要在相容的 OIDC IdP (例如 Salesforce) OIDC 與您的使用者集區之間建立信任時,可以使用 IdP。

  1. 在 Salesforce 開發人員網站上建立帳戶

  2. 透過您在之前步驟設定的開發人員帳戶登入

  3. 在 Salesforce 頁面上,執行下列其中一項操作:

    • 如果使用的是 Lightning Experience,請選擇設定齒輪圖示,然後選擇 Setup Home (設定首頁)

    • 如果是使用 Salesforce Classic,則使用者界面頁首會顯示 Setup (設定),請選擇此選項。

    • 如果是使用 Salesforce Classic,但頁首卻沒有出現 Setup (設定),則請從最上面導覽列中選擇您的姓名,然後從下拉式清單中選擇 Setup (設定)。

  4. 在左側導覽列中,選擇 Company Settings (公司設定)。

  5. 在導覽列,選擇 Domain (網域)、輸入網域,然後選擇 Create (建立)。

  6. 在左側導覽列,在 Platform Tools (平台工具) 下選擇 Apps (應用程式)。

  7. 選擇 App Manager (應用程式管理員)。

    1. 選擇 New connected app (新的連線應用程式)。

    2. 完成必要欄位。

      在「開始」下URL,輸URL入使用 Salesforce IdP 登入之使用者集區網域的/authorize端點。當您的使用者存取您連線的應用程式時,Salesforce 會將他們引導URL至此頁面以完成登入。然後,Salesforce 會將使用者重新導向至您與應URL用程式用戶端相關聯的回呼。

      https://mydomain.us-east-1.amazoncognito.com/authorize?response_type=code&client_id=<your_client_id>&redirect_uri=https://www.example.com&identity_provider=CorpSalesforce
    3. 啟用OAuth設定並在回呼中輸入使用者集區網域的/oauth2/idpresponse端點URL。URL這就是 Salesforce 發出授權碼的URL地方,Amazon Cognito 其交換為令OAuth牌。

      https://mydomain.us-east-1.amazoncognito.com/oauth2/idpresponse
  8. 選擇您的範圍。您必須包含範圍 OpenID。若要授予 emailemail_verified 宣告的存取權,請新增 email 範圍。以空格區隔範圍。

  9. 選擇 Create (建立)。

    在 Salesforce 中,用戶端 ID 稱為消費者金鑰,而用戶端秘密則稱為消費者秘密。記下您的用戶端 ID 和用戶端秘密。您會在下一節中用到它們。

步驟 2:將 OIDC IdP 新增至您的使用者集區

在本節中,您可以將使用者集區設定OIDC為處理來自 OIDC IdP 的基礎驗證要求。

若要新增 I OIDC dP (Amazon Cognito 主控台)

新增 I OIDC dP
  1. 前往 Amazon Cognito 主控台。如果出現提示,請輸入您的 AWS 認證。

  2. 從導覽選單中,選擇 Users Pools (使用者集區)。

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

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

  5. 選擇 OpenID Connect IdP。

  6. Provider name (供應商名稱) 中輸入唯一的名稱。

  7. Client ID (用戶端 ID) 中輸入您從供應商處收到的用戶端 ID。

  8. Client secret (用戶端密碼) 中輸入您從供應商處收到的用戶端密碼。

  9. 輸入此供應商的 Authorized scopes (授權範圍)。範圍會定義您的應用程式從您的供應商請求的使用者屬性群組 (例如 nameemail)。範圍必須以空格分隔,遵循 OAuth2.0 規範。

    系統會要求您的使用者同意提供這些屬性給應用程式。

  10. 選擇屬性請求方法,將 Amazon Cognito 提供必須使用的HTTP方法 (GET或POST),以便從您的提供者操作的userInfo端點擷取使用者的詳細資料。

  11. 選擇安裝方法透過發卡機自動填入URL或手動輸入來擷取 OpenID Connect 端點。URL當您URLs的供應商具有公有端點時,Amazon Cognito 可以擷取、和.well-known/openid-configurationjwks_uri端點的公開端點時 authorization tokenuserInfo,使用透過簽發者自動填寫。

  12. 輸入 IdP URLs 中的發卡機構URL或authorizationtokenuserInfo、、和jwks_uri端點。

    注意

    URL應該以斜線開頭https://,並且不應該以斜線結束/。只有端口號 443 和 80 可以與此URL一起使用。例如,銷售力量使用這個URL:

    https://login.salesforce.com

    如果您選擇 auto 填入,探索文件必須使HTTPS用下列值:authorization_endpointtoken_endpointuserinfo_endpoint、和jwks_uri。否則登入會失敗。

  13. 根據預設,OIDC宣告會對應至使用者集區屬性使用者名稱。您可以將其他OIDC宣告對應至使用者集區屬性。輸入OIDC宣告,然後從下拉式清單中選擇對應的使用者集區屬性。例如,宣告 email 通常對應至使用者集區屬性 Email

  14. 將 IdP 的屬性對應至您的使用者集區。如需詳細資訊,請參閱為您的使用者集區指定身分提供者屬性對應

  15. 選擇 Create (建立)。

  16. App client integration (應用程式用戶端整合) 標籤,在清單中選擇一個 App clients (應用程式用戶端),以及 Edit hosted UI settings (編輯託管 UI 設定)。將新的 OIDC IdP 新增至身分識別提供者下的應用程式用戶端。

  17. 選擇儲存變更

若要新增 I OIDC dP ()AWS CLI

  • 請參閱CreateIdentityProviderAPI方法的參數說明。

    aws cognito-idp create-identity-provider --user-pool-id string --provider-name string --provider-type OIDC --provider-details map --attribute-mapping string --idp-identifiers (list) --cli-input-json string --generate-cli-skeleton string

    使用此供應商詳細資訊地圖:

    { "client_id": "string", "client_secret": "string", "authorize_scopes": "string", "attributes_request_method": "string", "oidc_issuer": "string", "authorize_url": "string", "token_url": "string", "attributes_url": "string", "jwks_uri": "string" }

步驟 3:測試您的 OIDC IdP 組態

您可以使用前兩節中的元素來建立授權URL,並使用它們來測試 OIDC IdP 組態。

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

您可以在使用者集區 Domain name (網域名稱) 主控台頁面上尋找您的網域。client_id 位於 General settings (一般設定) 頁面上。URL對重定向參數使用您的回調。這是URL成功驗證後將重新導向使用者的頁面。