使用 AWS re:Post 即表示您同意 AWS re:Post 使用條款

如何取得 Amazon Cognito 使用者集區的 IdP 核發 OIDC 或社交身分權杖?

2 分的閱讀內容
0

我想要了解如何取得存取權,以及已與 Amazon Cognito 使用者集區整合之身分提供者 (IdP) 所核發的 ID 權杖,以便進行授權或疑難排解。

簡短說明

OpenID Connect (OIDC) IdP 驗證流程不允許使用者或應用程式查看 IdP 端權杖。若是為了授權或疑難排解,某些使用者案例需要應用程式內實際 IdP 核發的權杖。

重要: 以下解決方法假設您已將 OIDC IdP 或社交 IdP 與 Amazon Cognito 使用者集區整合。如果您沒有將 IdP 與使用者集區整合,請透過第三方新增使用者集區登入

解決方法

在使用者集區中建立自訂屬性

若要在使用者集區中建立自訂屬性,請完成下列步驟:

  1. 開啟新的 Amazon Cognito 主控台,然後選擇使用者集區中的註冊體驗索引標籤。
  2. 自訂屬性區段下,選擇新增自訂屬性
  3. 若要建立存取權杖的自訂屬性,請輸入下列值:
    **名稱:**access_token
    **類型:**字串
    **最大值:**2,048
    **可變:**選取此核取方塊
  4. 選擇儲存
  5. 若要建立 ID 權杖的自訂屬性,請輸入下列值:
    **名稱:**id_token
    **類型:**字串
    **最大值:**2,048
    **可變:**選取此核取方塊
  6. 選擇儲存

設定 Amazon Cognito 與您 IdP 之間的屬性對應

若要設定 IdP 屬性的屬性對應,請完成下列步驟:

  1. 開啟新的 Amazon Cognito 主控台,然後選擇使用者集區中的登入體驗索引標籤。
  2. 聯合身分提供者登入區段下,請從清單選取您的 IdP。
  3. 身分提供者資訊區段中,選擇編輯。請確定下列範圍落於授權範圍區段中:
    **Facebook:**public_profile, email
    **Google:**profile email openid
    使用 Amazon 登入:‎profile postal_code
    **使用 Apple 登入:**email name
    **所有其他 OIDC 提供者:**profile email openid
  4. 身分提供者頁面上,選擇屬性對應區段中的編輯
  5. 使用者集區屬性資料欄中,選取您的自訂屬性。
  6. OpenID Connect 屬性資料欄中,選取 access_tokenid_token
  7. 選擇儲存

以下是屬性對應組態的結果:

  • 使用者集區屬性:custom:id_token
  • OpenID Connect 屬性:id_token
  • 使用者集區屬性:custom:access_token
  • OpenID Connect 屬性:access_token

在 Amazon Cognito 應用程式用戶端中開啟屬性讀取和寫入權限

使用者登入應用程式時,Amazon Cognito 會更新對應的屬性。若要讓 Amazon Cognito 更新對應的使用者集區屬性,對應的屬性必須可在應用程式的應用程式用戶端設定中寫入。若要讓 Amazon Cognito 更新使用者的 ID 權杖,此屬性必須可在應用程式的應用程式用戶端設定中讀取。

若要開啟讀取和寫入許可,請完成下列步驟:

  1. 開啟新的 Amazon Cognito 主控台,然後選擇使用者集區中的應用程式整合索引標籤。
  2. 選取您的應用程式用戶端。
  3. 屬性讀取和寫入許可區段中,選擇編輯
  4. 編輯屬性讀取和寫入許可 頁面上,選取自訂屬性的讀取寫入核取方塊。
  5. 選擇儲存

請對使用自訂屬性的每個應用程式用戶端重複這些步驟。

如需詳細資訊,請參閱屬性許可和範圍

使用第三方 OIDC 提供者或社交 IdP 登入

透過 Amazon Cognito 託管使用者介面執行新的 IdP 驗證時,您可以在自訂屬性中查看 IdP 權杖。選擇一位最終使用者以查看其屬性中的 IdP 權杖。解碼 ID 權杖時,您也會看到包含 IdP 權杖的自訂屬性。

核發給最終使用者的 ID 權杖的承載區段範例:

{
   "custom:access_token": "ya29.a0AeTM1ic9iv_FqpDQeIN......w1OPKdFEbR_Tea",
   "iss": "https://cognito-idp.example_region.amazonaws.com/example_user_pool_id",
   "custom:id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjhjMjdkYjRkMTN............saDMuZ29vZ2xldXNlcmNv"
}

重要:

  • 任何自訂屬性的長度上限為 2,048 個字元。IdP 權杖超過 2,048 個字元時,您會收到下列錯誤: "String attributes cannot have a length of more than 2048"。
  • 建立自訂屬性後,即無法移除或修改自訂屬性。
  • 如果自訂屬性未在後續登入時更新,請檢查自訂屬性的可變性。建立屬性時,如果清除可變核取方塊,則會出現此問題。若要進一步了解,請參閱自訂屬性

**注意:**如果您仍無法取得 IdP 權杖,請聯絡您的 IdP。檢查 IdP 是否支援傳遞具有 Amazon Cognito 屬性的權杖。接著,請聯絡 AWS Support,以取得其他疑難排解資訊。

相關資訊

如何在 Amazon Cognito 使用者集區中將 Auth0 設定為 OIDC 身分提供者

如何在 Amazon Cognito 使用者集區中將 LinkedIn 設定為社交身分提供者?

如何在 Amazon Cognito 使用者集區將 Okta 設定為 OpenID 連接身分提供者?

如何在 Amazon Cognito 使用者集區中將 Google 設定為聯合身分提供者?

如何在瀏覽器中查看 SAML 回應以進行疑難排解

AWS 官方
AWS 官方已更新 9 個月前