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 asimetris
clientId, 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_assertionhalnyaclient_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_VERIFYpenggunaan. 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_VERIFYpenggunaan. 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 |
|---|---|
|
|
|
|
|
|
|
|
|
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.
-
Karena
additionalHeaderClaims, kami tidak mengizinkan klaimalgatautyp. -
Karena
additionalPayloadClaims, kami tidak mengizinkan klaimiss,sub,jti,exp,iat, ataunbf. Kami akan mengizinkan penggantianaudklaim (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 |
|---|---|---|
|
|
Ya |
Setel ke |
|
|
Ya |
Pengidentifikasi klien terdaftar di penyedia identitas Anda. |
|
|
Ya |
ARN penuh dari kunci penandatanganan KMS asimetris. Harus berada di Wilayah yang sama dengan penyedia kredensi. Cross-account didukung. |
|
|
Ya |
Algoritma untuk menandatangani JWT. Salah satu dari: |
|
|
Tidak |
Klaim header JWT tambahan (peta, maks 10 entri). Gunakan ini untuk meneruskan |
|
|
Tidak |
Klaim muatan JWT tambahan (peta, maks 10 entri). Tidak dapat mengganti |
|
|
Tidak diperlukan |
Hilangkan saat menggunakan Kunci Pribadi JWT. |