View a markdown version of this page

Otentikasi klien JWT Kunci Pribadi - Batu Dasar Amazon AgentCore

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Otentikasi klien JWT Kunci Pribadi

Dengan Private Key JWT, AgentCore Identity mengotentikasi ke titik akhir token penyedia identitas hilir menggunakan pernyataan klien JWT yang ditandatangani, per RFC 7523, Bagian 2.2, alih-alih rahasia klien. Kunci pribadi tidak pernah meninggalkan AWS Key Management Service (KMS). AgentCore Identitas menandatangani setiap pernyataan melaluikms:Sign. Penyedia identitas Anda memiliki kunci publik yang sesuai yang digunakan untuk mengotentikasi pernyataan klien dan mengembalikan token akses.

Metode ini menghilangkan rahasia bersama antara AgentCore Identity dan server otorisasi Anda, menggantinya dengan pasangan kunci asimetris di bawah kendali penuh Anda.

Cara kerja otentikasi klien JWT Kunci Pribadi

  • Anda mengonfigurasi penyedia kredensia OAuth 2.0 kustom dengan ARN kunci penandatanganan KMS asimetrisclientId, dan algoritma penandatanganan yang sama yang diperlukan oleh penyedia identitas Anda untuk otentikasi klien JWT Kunci Pribadi.

  • Ketika AgentCore Identity membutuhkan token untuk mesin-ke-mesin (M2M), on-behalf of (OBO), atau aliran kode otorisasi, itu membangun pernyataan klien JWT yang berumur pendek. Pernyataan tersebut berisi klaim yang diperlukan oleh penyedia identitas Anda.

  • AgentCore Identity kemudian menandatangani pernyataan menggunakan AWS KMS, dengan kunci penandatanganan asimetris yang disediakan ARN.

  • Pernyataan yang ditandatangani dikirim ke titik akhir token seperti client_assertion halnyaclient_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer.

  • Server otorisasi memvalidasi pernyataan terhadap kunci publik yang Anda daftarkan dan mengeluarkan token yang diminta.

Private Key JWT tersedia di penyedia kredensia OAuth 2.0 kustom (). CustomOauth2 Ini berfungsi untuk semua aliran hibah: kredenSIAL klien (M2M), pertukaran token dengan pemberian otorisasi JWT (OBO), dan kode otorisasi (akses yang didelegasikan pengguna).

Mengkonfigurasi Kunci Pribadi JWT di Identitas AgentCore

Agar berhasil mengonfigurasi penyedia kredensia, verifikasi terlebih dahulu persyaratan penyedia identitas Anda untuk otentikasi klien JWT Kunci Pribadi: algoritma penandatanganan, kunci publik, dan klaim pernyataan klien JWT yang diperlukan.

Algoritma Penandatanganan

Identifikasi algoritma penandatanganan yang diperlukan penyedia identitas Anda untuk otentikasi klien JWT Kunci Pribadi. Ini sesuai dengan signingAlgorithm bidang privateKeyJwtConfig saat membuat atau memperbarui penyedia kredensia kustom OAuth 2.0.

  • Tentukan algoritma yang sama dengan algoritma penandatanganan saat Anda membuat penyedia kredensia di AgentCore Identitas.

  • Algoritma penandatanganan ini juga akan digunakan untuk memilih spesifikasi kunci KMS yang dapat diterima, dirinci di bawah ini.

AWS Konfigurasi Kunci Asimetris KMS

Tentukan cara penyedia identitas mengelola kunci penandatanganan:

  • Jika penyedia identitas Anda menerima kunci publik yang diunggah, buat pasangan kunci KMS asimetris dengan SIGN_VERIFY penggunaan. Pilih spesifikasi kunci yang mendukung algoritma penandatanganan Anda (lihat tabel berikut). Kunci harus berada di Wilayah yang sama dengan penyedia kredensi. Tentukan kunci KMS ARN saat membuat penyedia kredensia pada AgentCore Identity.

    Setelah pembuatan, gunakan kms: GetPublicKey API untuk menghasilkan kunci publik yang sesuai. kms:GetPublicKeymengembalikan kunci DER-encoded X.509 publik atau SPKI. Beberapa penyedia identitas memerlukan kunci publik ini dalam format tertentu. Misalnya, Microsoft Entra memerlukan objek X.509 sertifikat, Okta memerlukan JSON Web Key, sementara Ping Identity mendukung keduanya. Konversikan kunci publik ke format yang diperlukan penyedia identitas Anda dan unggah ke penyedia identitas Anda.

  • Jika penyedia identitas Anda membuat pasangan kunci dan menyediakan materi kunci pribadi, impor ke kunci KMS dengan SIGN_VERIFY penggunaan. Pilih spesifikasi kunci yang kompatibel dengan algoritma penandatanganan (lihat tabel berikut). Untuk petunjuk, lihat Meng impor materi kunci untuk kunci AWS KMS. Tentukan kunci KMS ARN saat membuat penyedia kredensia pada AgentCore Identity.

Yang signingAlgorithm Anda pilih menentukan spesifikasi kunci KMS mana yang diterima:

Algoritma Penandatanganan Spesifikasi Utama KMS yang Diterima

RS256

RSA_2048, RSA_3072, RSA_4096

PS256

RSA_2048, RSA_3072, RSA_4096

ES256

ECC_NIST_P256

AWS Kebijakan kunci KMS

Untuk menggunakan kunci penandatanganan KMS asimetris untuk Kunci Pribadi JWT, kunci Anda harus mengizinkan AgentCore Identity melakukan operasi penandatanganan dan deskripsi kunci atas nama Anda. Tambahkan izin berikut ke kebijakan utama kunci KMS Anda.

kms:ViaServiceKondisi memastikan kunci hanya dapat digunakan ketika permintaan berasal dari Amazon Bedrock AgentCore Identity. Cross-account kunci didukung ketika kebijakan kunci memberikan kms:DescribeKey dan kms:Sign ke identitas panggilan. Ganti Principal ARN dengan root ARN dari akun yang akan memanggil AgentCore Identity.

{ "Id": "identity-service-cmk-policy", "Version": "2012-10-17", "Statement": [ { "Sid": "BedrockAgentCoreIdentityPrivateKeyJwtAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": [ "kms:Sign", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" }, "StringLike": { "kms:ViaService": "bedrock-agentcore-identity.*.amazonaws.com" } } } ] }

Cross-Region kunci tidak didukung. Kunci KMS harus berada di Wilayah yang sama AWS dengan penyedia kredensi.

Klaim Tambahan dalam Pernyataan Klien JWT

Periksa apakah penyedia identitas Anda memerlukan klaim tambahan di header pernyataan klien JWT atau payload untuk otentikasi klien JWT Kunci Pribadi. Jika demikian, sertakan mereka di additionalPayloadClaims bidang additionalHeaderClaims dan di dalamnyaprivateKeyJwtConfig.

  • KarenaadditionalHeaderClaims, kami tidak mengizinkan klaim alg atautyp.

  • KarenaadditionalPayloadClaims, kami tidak mengizinkan klaimiss,sub,jti,exp,iat, ataunbf. Kami akan mengizinkan penggantian aud klaim (default ke titik akhir token penyedia identitas Anda).

Mengkonfigurasi klien OAuth dengan penyedia khusus menggunakan otentikasi JWT Kunci Pribadi

Untuk mengonfigurasi penyedia kredensia dengan otentikasi klien JWT Kunci Pribadi, di AWS konsol, lihat Men ambahkan klien OAuth menggunakan penyedia khusus. Anda juga dapat mengonfigurasi penyedia kredensia menggunakan AWS CLI.

Contoh CLI: JWT Kunci Pribadi untuk penyedia kredensia Microsoft

aws bedrock-agentcore-control create-oauth2-credential-provider \ --cli-input-json '{ "name": "microsoft-private-key-jwt", "credentialProviderVendor": "CustomOauth2", "oauth2ProviderConfigInput": { "customOauth2ProviderConfig": { "oauthDiscovery": { "discoveryUrl": "https://login.microsoftonline.com/your-tenant-id/v2.0/.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": "PS256", "additionalHeaderClaims": { "x5t#S256": "Base64url-encoded SHA-256 thumbprint of the DER encoding of the X.509 public key certificate uploaded to Microsoft Entra" }, "additionalPayloadClaims": { "aud": "https://login.microsoftonline.com/your-tenant-id/oauth2/v2.0/token" } } } } }'

Contoh CLI: JWT Kunci Pribadi untuk penyedia kredensia Okta dengan Token Exchange On-behalf-of

aws bedrock-agentcore-control create-oauth2-credential-provider \ --cli-input-json '{ "name": "okta-private-key-jwt", "credentialProviderVendor": "CustomOauth2", "oauth2ProviderConfigInput": { "customOauth2ProviderConfig": { "oauthDiscovery": { "discoveryUrl": "https://your-app.okta.com/oauth2/default/.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" }, "onBehalfOfTokenExchangeConfig": { "grantType": "TOKEN_EXCHANGE", "tokenExchangeGrantTypeConfig": { "actorTokenContent": "NONE" } } } } }'

Parameter untuk klien OAuth dengan penyedia khusus menggunakan otentikasi JWT Kunci Pribadi

Parameter Diperlukan Deskripsi

clientAuthenticationMethod

Ya

Setel kePRIVATE_KEY_JWT.

clientId

Ya

Pengidentifikasi klien terdaftar di penyedia identitas Anda.

privateKeyJwtConfig.privateKeySource.kmsKeySource.kmsKeyArn

Ya

ARN penuh dari kunci penandatanganan KMS asimetris. Harus berada di Wilayah yang sama dengan penyedia kredensi. Cross-account didukung.

privateKeyJwtConfig.signingAlgorithm

Ya

Algoritma untuk menandatangani JWT. Salah satu dari:RS256,PS256,ES256.

privateKeyJwtConfig.additionalHeaderClaims

Tidak

Klaim header JWT tambahan (peta, maks 10 entri). Gunakan ini untuk meneruskan kid atau x5t#S256 yang cocok dengan kunci yang terdaftar di penyedia identitas Anda. Tidak dapat mengganti alg atautyp.

privateKeyJwtConfig.additionalPayloadClaims

Tidak

Klaim muatan JWT tambahan (peta, maks 10 entri). Tidak dapat menggantiiss,,sub,jti, expiat, ataunbf. Gunakan ini untuk menambahkan klaim khusus penyedia atau mengganti aud (titik akhir token secara default).

clientSecret

Tidak diperlukan

Hilangkan saat menggunakan Kunci Pribadi JWT.