View a markdown version of this page

クライアント認証方法 - Amazon Bedrock AgentCore

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

クライアント認証方法

クライアント認証方法は、OAuth クライアントがアクセストークンをリクエストするときに認可サーバーのトークンエンドポイントで認証する方法を制御します。

プロバイダー固有の認証情報プロバイダーの場合、AgentCore Identity は各ベンダーの要件に基づいてクライアント認証方法を管理するため、追加の設定は必要ありません。

クライアントシークレットではなく IAM 署名 JWT アサーションによる認証や、組み込みベンダーとは異なる要件を持つ認可サーバーをターゲットにするなど、よりきめ細かな制御を必要とするユースケースでは、カスタムプロバイダーを使用します。これにより、以下のサポートされている方法から選択できます。

サポートされているクライアント認証方法

AgentCore Identity は、クライアント認証メソッドで次の値をサポートしています。

  1. CLIENT_SECRET_BASIC (デフォルト) — 認可サーバーからクライアントシークレット値を受け取ったクライアントは、HTTP Basic 認証スキームを使用して 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 セクション 2 AWS .2 に従って、エージェントの実行ロール (sts:GetWebIdentityToken を介して取得) の IAM 署名 JWT アサーションをクライアントアサーションとして送信することで、認可サーバーのトークンエンドポイントに認証します。認可サーバーは、このメカニズムをサポートし、発行者として IAM AWS を信頼する必要があります。この方法を選択すると、クライアントシークレットは必須ではなく、クライアント ID はユーザー委任アクセスフロー (ユーザー委任アクセス (OAuth 2.0 認可コード付与)) にのみ必要です。をクライアント認証方法AWS_IAM_ID_TOKEN_JWTとして使用する場合の前提条件は次のとおりです。

    1. アウトバウンドウェブ ID フェデレーションは、アカウントで有効にする必要があります。iam:EnableOutboundWebIdentityFederation で有効にします。

    2. 呼び出し元の IAM ID AWS には、sts:GetWebIdentityToken を呼び出すアクセス許可が必要です。

  4. PRIVATE_KEY_JWT 有効期間の短い JWT クライアントアサーションを送信して、認可サーバーのトークンエンドポイントに認証します。AgentCore Identity は、RFC 7523 セクション 2.2 に従ってkms:Sign、 を介してカスタマーマネージド AWS KMS 非対称キーを使用してアサーションを構築して署名します。プライベートキーが KMS から出ることはありません。認可サーバーは、登録したパブリックキーに対してアサーションを検証します。この方法を選択すると、クライアントシークレットは必要ありません。すべてのフローにクライアント ID が必要です。をクライアント認証方法PRIVATE_KEY_JWTとして使用するには、次の前提条件を満たします。

    1. キーの使用方法が の KMS AWS の非対称署名キー。適切なキーポリシーとSIGN_VERIFY、選択した署名アルゴリズムと互換性のあるキー仕様があります (algorithm-to-key-spec表については、「プライベートキー JWT」を参照してください)。

    2. AgentCore Identity 実行ロール (または呼び出し ID) には、KMS キーに対する kms:DescribeKeyおよび アクセスkms:Sign許可が必要です。

    3. ID プロバイダーの認可サーバーは、プライベートキー 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」を参照してください。

注意

tokenEndpointAuthMethods このフィールドは、クライアント認証方法には推奨されませんが、CLI および SDK での下位互換性のために維持されます。同じリクエストで両方を指定すると、検証エラーが発生します。