View a markdown version of this page

用戶端身分驗證方法 - Amazon Bedrock AgentCore

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

用戶端身分驗證方法

用戶端身分驗證方法控制 OAuth 用戶端在請求存取權杖時,如何使用授權伺服器的權杖端點進行身分驗證。

對於提供者特定的憑證提供者,AgentCore Identity 會根據每個廠商的需求為您管理用戶端身分驗證方法,因此不需要額外的組態。

對於需要更精細控制的使用案例,例如使用 IAM 簽署的 JWT 聲明而非用戶端秘密進行身分驗證,或鎖定要求與內建廠商不同的授權伺服器,請使用自訂提供者,這可讓您從以下支援的方法中進行選擇。

支援的用戶端身分驗證方法

AgentCore Identity 支援用戶端身分驗證方法的下列值。

  1. CLIENT_SECRET_BASIC (預設) — 已使用 HTTP 基本身分驗證機制,根據 OAuth 2.0 (RFC 6749) 第 2.3.1 節,從授權伺服器驗證用戶端秘密值的用戶端。用戶端 ID 和用戶端秘密都是必要的。

  2. CLIENT_SECRET_POST — 從授權伺服器收到用戶端秘密值的用戶端,根據 OAuth 2.0 (RFC 6749) 第 2.3.1 節,在請求內文中包含用戶端憑證,向授權伺服器進行驗證。用戶端 ID 和用戶端秘密都是必要的。

  3. AWS_IAM_ID_TOKEN_JWT — 根據 RFC 7523 AWS 第 2.2 節,傳送代理執行角色的 IAM 簽署 JWT 聲明 (透過 sts:GetWebIdentityToken 取得) 做為用戶端聲明,以驗證授權伺服器的字符端點。授權伺服器必須支援此機制,並以發行者身分信任 AWS IAM。選取此方法時,不需要用戶端秘密,而且只有使用者委派存取流程需要用戶端 ID (使用者委派存取 (OAuth 2.0 授權碼授予))。若要使用 AWS_IAM_ID_TOKEN_JWT做為用戶端身分驗證方法,以下是先決條件:

    1. 您必須在您的帳戶上啟用傳出 Web 聯合身分。使用 iam:EnableOutboundWebIdentityFederation 啟用它。

    2. 呼叫 AWS IAM 身分必須具有呼叫 sts:GetWebIdentityToken 的許可。

  4. PRIVATE_KEY_JWT 透過傳送短期 JWT 用戶端聲明來驗證授權伺服器的字符端點。AgentCore Identity 會根據 RFC 7523 第 2.2 節kms:Sign,透過 使用客戶管理的 AWS KMS 非對稱金鑰建置和簽署聲明。私有金鑰永遠不會離開 KMS。授權伺服器會根據您註冊的公有金鑰驗證宣告。選取此方法時,不需要用戶端秘密。所有流程都需要用戶端 ID。若要使用 PRIVATE_KEY_JWT做為用戶端身分驗證方法,請滿足下列先決條件:

    1. AWS KMS 中的非對稱簽署金鑰,具有SIGN_VERIFY適當的金鑰政策和與您選擇的簽署演算法相容的金鑰規格 (請參閱私有金鑰 JWT 以取得algorithm-to-key-spec資料表)。

    2. AgentCore Identity 執行角色 (或呼叫身分) 必須具有 KMS 金鑰的 kms:DescribeKey和 kms:Sign許可。

    3. 身分提供者的授權伺服器必須支援私密金鑰 JWT 用戶端身分驗證,且對應的公有金鑰必須向其授權伺服器註冊。

如何設定用戶端身分驗證方法

設定 CustomOauth2 的用戶端身分驗證方法

若要在 AWS 主控台上設定自訂提供者的用戶端身分驗證方法,請參閱使用自訂提供者新增 OAuth 用戶端。您也可以使用 CLI 進行設定。

CLI 範例:使用 CLIENT_SECRET_BASIC做為用戶端身分驗證方法

aws bedrock-agentcore-control create-oauth2-credential-provider \ --cli-input-json '{ "name": "sample-client-basic", "credentialProviderVendor": "CustomOauth2", "oauth2ProviderConfigInput": { "customOauth2ProviderConfig": { "oauthDiscovery": { "discoveryUrl": "https://my.idp.com/.well-known/openid-configuration" }, "clientId": "your-client-id", "clientSecret": "your-client-secret", "clientAuthenticationMethod": "CLIENT_SECRET_BASIC" } } }'

CLI 範例:使用 AWS_IAM_ID_TOKEN_JWT做為用戶端身分驗證方法

aws bedrock-agentcore-control create-oauth2-credential-provider \ --cli-input-json '{ "name": "sample-iam-jwt", "credentialProviderVendor": "CustomOauth2", "oauth2ProviderConfigInput": { "customOauth2ProviderConfig": { "oauthDiscovery": { "discoveryUrl": "https://my.idp.com/.well-known/openid-configuration" }, "clientId": "your-client-id", "clientAuthenticationMethod": "AWS_IAM_ID_TOKEN_JWT" } } }'

CLI 範例:使用 PRIVATE_KEY_JWT做為用戶端身分驗證方法

aws bedrock-agentcore-control create-oauth2-credential-provider \ --cli-input-json '{ "name": "sample-private-key-jwt", "credentialProviderVendor": "CustomOauth2", "oauth2ProviderConfigInput": { "customOauth2ProviderConfig": { "oauthDiscovery": { "discoveryUrl": "https://your-idp.example.com/.well-known/openid-configuration" }, "clientId": "your-client-id", "clientAuthenticationMethod": "PRIVATE_KEY_JWT", "privateKeyJwtConfig": { "privateKeySource": { "kmsKeySource": { "kmsKeyArn": "arn:aws:kms:us-east-1:111122223333:key/your-key-id" } }, "signingAlgorithm": "RS256" } } } }'

如需完整組態參考的詳細資訊,包括 KMS 金鑰設定、跨帳戶支援和簽署演算法選項,請參閱私有金鑰 JWT。

Notice (注意)

不建議使用 tokenEndpointAuthMethods 欄位來支援用戶端身分驗證方法,但會維護 CLI 和 SDK 中的回溯相容性。在相同的請求中提供兩者將導致驗證錯誤。