在 IAM 中建立 OpenID Connect (OIDC) 身分識別提供者 - AWS Identity and Access Management

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

在 IAM 中建立 OpenID Connect (OIDC) 身分識別提供者

IAM OIDC 身分提供者是 IAM 中的實體,負責描述可支援 OpenID Connect (OIDC) 標準的外部身分提供者 (IdP) 服務,例如,Google 或 Salesforce。如果想要在 OIDC 相容的 IdP 和您的 AWS 帳戶之間建立信任,請使用 IAM OIDC 身分提供者。這在建立需要 AWS 資源存取權的行動應用程式或 Web 應用程式時非常有用,但您不想建立自訂登入程式碼或管理您自己的使用者身分識別。如需有關此案例的詳細資訊,請參閱 OIDC 聯盟

您可以使用 AWS Management Console、、適用於 Windows PowerShell 的工具或 IAM API 來建立和管理 IAM OIDC 身分識別提供者。 AWS Command Line Interface

在您建立 IAM OIDC 身分提供者之後,您必須建立一個或多個 IAM 角色。角色是沒有自己認證的身份(就像用戶一樣)。 AWS 但在此情況中,角色是以動態指派給聯合身分使用者,而該使用者由您組織的身分提供者 (IdP) 進行驗證。角色可允許您組織的 IdP 請求暫時性安全憑證以存取 AWS。指派給角色的原則會決定允許同盟使用者在中 AWS執行的動作。若要為第三方身分提供者建立角色,請參閱 針對第三方身分提供者建立角色 (聯合身分)

重要

當您針對支援 oidc-provider 資源的動作設定以身分識別型原則時,IAM 會評估完整的 OIDC 身分識別提供者 URL,包含任何指定的路徑。如果您的 OIDC 身分識別提供者 URL 具有路徑,請務必在 oidc-provider ARN 中包含該路徑作為 Resource 要素值。您也可以選擇在 URL 路徑中的任何位置附加正斜線和萬用字元 (/*) 至 URL 網域,或使用萬用字元 (*?)。如果要求中的 OIDC 身分識別提供者 URL 與政策的 Resource 要素中設定的值不相符,則請求會失敗。

若要疑難排解 IAM OIDC 聯盟的常見問題,請參閱在 Re: POST 上解決與 OIDC 相關的錯誤。 AWS

先決條件:驗證身分識別提供者的組態

在建立 IAM OIDC 身分識別提供者之前,您必須從 IdP 取得下列資訊。如需取得 OIDC 提供者組態資訊的詳細資訊,請參閱 IdP 的說明文件。

  1. 判斷您的 OIDC 身分提供者的公開可用 URL。URL 必須以 https:// 開頭。根據 OIDC 標準,允許路徑組件,但查詢參數不允許。一般而言,網址只包含一個主機名稱,例如 https://server.example.org 或 https://example.com。URL 不應包含連接埠號碼。

  2. 在 OIDC 身分識別提供者 URL 的末尾加上 /.well-已知/openid 組態,以查看提供者的公開可用設定文件和中繼資料。您必須具有 JSON 格式的探索文件,其中包含可從 OpenID Connect 提供者探索端點 URL 擷取的提供者組態文件和中繼資料。

  3. 確認提供者的組態資訊中包含下列值。如果您的 openid 配置缺少這些字段中的任何一個,則必須更新您的發現文檔。此程序可能會因您的身分提供者而有所不同,因此請遵循 IdP 的說明文件來完成此任務。

    • 發行者:您網域的網址。

    • jwks_uri:IAM 取得您的公開金鑰的 JSON 網頁金鑰集 (JWKS) 端點。您的身分識別提供者必須在開放設定中包含 JSON 網頁金鑰集 (JWKS) 端點。此 URI 定義在何處獲取用於驗證身份提供者的簽名令牌的公鑰。

    • 宣告支援:有關使用者的資訊,可協助您確保來自 IdP 的 OIDC 驗證回應包含 IAM 政策中用來檢查聯合身分 AWS 使用者許可的必要屬性。如需可用於宣告的 IAM 條件金鑰清單,請參閱AWS OIDC 聯盟的可用金鑰

      • AUD:您必須在 JSON 網絡令牌(JWT)中確定 IdP 問題的受眾聲明值。受眾(aud)聲明是特定於應用程序的,並標識令牌的預期接收者。當您向 OpenID Connect 提供商註冊移動或 Web 應用程序時,他們會建立用於識別該應用程序的客戶端 ID。客戶端 ID 是您的應用程序的唯一標識符,在 aud 身份驗證聲明中傳遞。在建立 IAM OIDC 身分提供者時,aud 聲明必須符合對象值。

      • iat:聲明必須包含一個表iat示 ID 令牌發行時間的值。

      • iss:身分識別提供者的網址。網址必須以 https://開頭,且應該對應於提供給 IAM 的提供者網址。根據 OIDC 標準,允許路徑組件,但查詢參數不允許。一般而言,網址只包含一個主機名稱,例如 https://server.example.org 或 https://example.com。URL 不應包含連接埠號碼。

    • 支持響應類型:id 令牌

    • 支持的主題類型:公共

    • 支援的 ID 標記 _ 簽署值:RS256

    注意

    您可以在下面的示例中包含諸如 custom 之類的其他聲明;但是, AWS STS 將忽略該聲明。

    { "issuer": "https://example-domain.com", "jwks_uri": "https://example-domain.com/jwks/keys", "claims_supported": [ "aud", "iat", "iss", "name", "sub", "custom" ], "response_types_supported": [ "id_token" ], "id_token_signing_alg_values_supported": [ "RS256" ], "subject_types_supported": [ "public" ] }

建立及管理 OIDC 提供者 (主控台)

按照這些指示,在 AWS Management Console中建立和管理 IAM OIDC 身分提供者。

重要

如果您正在使用來自 Google、Facebook 或 Amazon Cognito 的 OIDC 身分提供者,請勿使用此程序建立個別的 IAM 身分提供者。這些 OIDC 身分識別提供者已內建於中, AWS 並可供您使用。請依照下列步驟為您的身分提供者建立新角色,請參閱 為 OpenID Connect 聯盟(控制台)創建角色

建立 IAM OIDC 身分提供者 (主控台)
  1. 在建立 IAM OIDC 身分提供者之前,您必須使用 IdP 來註冊您的應用程式,才能接收用戶端 ID。用戶端 ID (也稱為觀眾) 是您在向 IdP 註冊應用程式時向您發佈的應用程式的唯一識別符。如需有關取得用戶端 ID 的詳細資訊,請參閱文件以取得您的 IdP。

    注意

    AWS 使用我們受信任的根憑證授權單位 (CAIdPs) 程式庫來確保與 OIDC 身分提供者 () 的通訊安全,以驗證 JSON 網頁金鑰集 (JWKS) 端點的 TLS 憑證。如果您的 OIDC IdP 依賴於未由這些受信任 CA 之一簽署的憑證,則只有這樣我們才會使用 IdP 組態中設定的指紋來保護通訊安全。 AWS 如果我們無法檢索 TLS 證書或者需要 TLS v1.3,則將退回指紋驗證。

  2. 在以下網址開啟 IAM 主控台:https://console.aws.amazon.com/iam/

  3. 在導覽窗格中,請選擇 Identity providers (身分提供者),然後選擇 Add provider (新增提供者)。

  4. 對於 Configure provider (設定提供者),選擇 OpenID Connect (OpenID 連線)。

  5. 針對 Provider URL (提供者 URL),輸入 IdP 的 URL。URL 必須符合這些限制:

    • URL 區分大小寫。

    • URL 必須以 https:// 開頭。

    • URL 不應包含連接埠號碼。

    • 在您的 AWS 帳戶每個 IAM OIDC 身分識別提供者中都必須使用唯一的 URL。如果您嘗試提交已在中用於 OpenID Connect 提供程序的 URL AWS 帳戶,則會收到錯誤信息。

  6. 對於「對」,請輸入您在 IdP 中註冊並接收到的應用程式的用戶端 ID步驟 1,以及向其發出要 AWS求的應用程式。如果此 IdP 有其他用戶端 ID (也稱觀眾),則稍後可以在提供者詳細資訊頁面上新增它們。

    注意

    如果您的 IdP JWT 權杖包含azp宣告,請輸入此值作為對象值。

  7. (選擇性) 對於「新增標籤」,您可以新增金鑰與值配對,以協助您識別和組織您的. IdPs 您也可以使用標籤來控制對 AWS 資源的存取。若要進一步了解如何標記 IAM OIDC 身分提供者,請參閱 標記 OpenID Connect (OIDC) 身分提供者。選擇 Add tag (新增標籤)。輸入每個標籤鍵值組的值。

  8. 請確認您提供的資訊。完成後,請選擇 Add provider (新增提供者)。IAM 將嘗試擷取並使用 OIDC IdP 伺服器憑證的頂級中繼 CA 指紋,以建立 IAM OIDC 身分識別提供者。

    注意

    OIDC 身分識別提供者的憑證鏈結必須以網域或簽發者 URL 開頭,然後是中繼憑證,並以根憑證結束。如果憑證鏈結順序不同或包含重複或其他憑證,則您會收到簽章不符錯誤,且 STS 無法驗證 JSON Web Token (JWT)。更正伺服器傳回之鏈結中憑證的順序,以解決錯誤。如需有關憑證鏈標準的詳細資訊,請參閱 RFC 系列網站上 RFC 5246 中的憑證清單。

  9. 將 IAM 角色指派給您的身分提供者,以授與身分識別提供者所管理的外部使用者身分識別,以存取帳戶中的 AWS 資源。若要深入了解如何建立聯合身分角色,請參閱 針對第三方身分提供者建立角色 (聯合身分)

    注意

    角色信任原則中 IdPs 使用的 OIDC 必須與信任它的角色位於相同的帳戶中。

新增或移除 IAM OIDC 身分提供者的指紋 (主控台)
注意

AWS 使用我們受信任的根憑證授權單位 (CAIdPs) 程式庫來確保與 OIDC 身分提供者 () 的通訊安全,以驗證 JSON 網頁金鑰集 (JWKS) 端點的 TLS 憑證。如果您的 OIDC IdP 依賴於未由這些受信任 CA 之一簽署的憑證,則只有這樣我們才會使用 IdP 組態中設定的指紋來保護通訊安全。 AWS 如果我們無法檢索 TLS 證書或者需要 TLS v1.3,則將退回指紋驗證。

  1. 在以下網址開啟 IAM 主控台:https://console.aws.amazon.com/iam/

  2. 在導覽窗格中,請選擇 Identity providers (身分提供者)。然後選擇您要更新的 IAM 身分提供者名稱。

  3. 選擇 [端點驗證] 索引標籤,然後在 [指] 區段中選擇 [管理]。若要輸入新的指紋值,請選擇 Add thumbprint 新增指紋。若要移除指紋,請選擇要移除的指紋旁的 Remove (移除)。

    注意

    IAM OIDC 身分提供者必須至少有 1 個和最多可有 5 個指紋。

    完成後,請選擇 Save changes (儲存變更)。

新增 IAM OIDC 身分提供者的對象 (主控台)
  1. 在導覽窗格中,選擇 Identity providers (身分提供者),然後選擇您所要更新 IAM 身分提供者的名稱。

  2. Audiences (對象) 區段中,選擇 Actions (動作) 並選取 Add audience (新增對象)。

  3. 輸入您向 IdP 註冊並接收到的應用程式的用戶端 ID步驟 1,該用戶端 ID 將向其發出要 AWS求。然後選擇 Add audiences (新增對象)。

    注意

    IAM OIDC 身分提供者必須至少有 1 個和最多可有 100 個對象。

移除 IAM OIDC 身分提供者的對象 (主控台)
  1. 在導覽窗格中,選擇 Identity providers (身分提供者),然後選擇您所要更新 IAM 身分提供者的名稱。

  2. Audiences (對象) 區段中,選取您要移除之對象旁邊的選項按鈕,然後選取 Actions (動作)。

  3. 選擇 Remove audience (移除對象)。新的視窗將開啟。

  4. 如果您移除對象,與對象聯合的身分無法擔任與對象相關聯的角色。在視窗中,閱讀警告,並在欄位中輸入單字 remove,確認您要移除對象。

  5. 選擇 Remove (移除) 以移除對象。

刪除 IAM OIDC 身分提供者 (主控台)
  1. 在以下網址開啟 IAM 主控台:https://console.aws.amazon.com/iam/

  2. 在導覽窗格中,請選擇 Identity providers (身分提供者)。

  3. 在您要刪除的 IAM 身分提供者旁邊,勾選核取方塊。新的視窗將開啟。

  4. 在欄位中輸入單字 delete,確認您要刪除提供者。再選擇 Delete (刪除)。

建立及管理 IAM OIDC 身分提供者 (AWS CLI)

您可以使用下列 AWS CLI 命令來建立和管理 IAM OIDC 身分識別提供者。

建立 IAM OIDC 身分提供者 (AWS CLI)
  1. (選用) 若要取得 AWS 帳戶中所有 IAM OIDC 身分提供者的清單,請執行下列命令:

  2. 若要建立新的 IAM OIDC 身分提供者,請執行下列命令:

更新現有 IAM OIDC 身分提供者的伺服器憑證指紋清單 (AWS CLI)
標記現有的 IAM OIDC 身分提供者 (AWS CLI)
列出現有 IAM OIDC 身分提供者 (AWS CLI) 的標籤
移除 IAM OIDC 身分提供者 (AWS CLI) 的標籤
從現有 IAM OIDC 身分提供者新增或移除用戶端 ID (AWS CLI API)
  1. (選用) 若要取得 AWS 帳戶中所有 IAM OIDC 身分提供者的清單,請執行下列命令:

  2. (選用) 若要取得有關 IAM OIDC 身分提供者的詳細資訊,請執行下列命令:

  3. 若要將新的用戶端 ID 新增到現有 IAM OIDC 身分提供者,請執行下列命令:

  4. 若要從現有 IAM OIDC 身分提供者中移除用戶端,請執行下列命令:

若要刪除 IAM OIDC 身分提供者 (AWS CLI)
  1. (選用) 若要取得 AWS 帳戶中所有 IAM OIDC 身分提供者的清單,請執行下列命令:

  2. (選用) 若要取得有關 IAM OIDC 身分提供者的詳細資訊,請執行下列命令:

  3. 若要刪除 IAM OIDC 身分提供者,請執行下列命令:

建立和管理 OIDC 身分識別提供者 (API)AWS

您可以使用以下 IAM API 命令來建立及管理 OIDC 提供者。

若要建立 IAM OIDC 身分識別提供者 (API)AWS
  1. (選用) 若要取得 AWS 帳戶中所有 IAM OIDC 身分提供者的清單,請呼叫下列操作:

  2. 若要建立新的 IAM OIDC 身分提供者,請呼叫下列操作:

更新現有 IAM OIDC 身分識別提供者 (API) 的伺服器憑證指紋清單AWS
標記現有的 IAM OIDC 身分識別提供者 (API)AWS
列出現有 IAM OIDC 身分識別提供者 (AWS API) 的標籤
若要移除現有 IAM OIDC 身分識別提供者 (AWS API) 上的標籤
從現有 IAM OIDC 身分提供者新增或移除用戶端 ID (AWS API)
  1. (選用) 若要取得 AWS 帳戶中所有 IAM OIDC 身分提供者的清單,請呼叫下列操作:

  2. (選用) 若要取得有關 IAM OIDC 身分提供者的詳細資訊,請呼叫下列操作:

  3. 若要將新的用戶端 ID 新增到現有 IAM OIDC 身分提供者,請呼叫下列操作:

  4. 若要從現有 IAM OIDC 身分提供者中移除用戶端 ID,請呼叫下列操作:

若要刪除 IAM OIDC 身分識別提供者 (API)AWS
  1. (選用) 若要取得 AWS 帳戶中所有 IAM OIDC 身分提供者的清單,請呼叫下列操作:

  2. (選用) 若要取得有關 IAM OIDC 身分提供者的詳細資訊,請呼叫下列操作:

  3. 若要刪除 IAM OIDC 身分提供者,請呼叫下列操作: