On-behalf-of pertukaran token dengan AgentCore Identitas
Amazon Bedrock AgentCore Identity mendukung pertukaran token On-Behalf-Of (OBO), memungkinkan agen dan beban kerja lainnya—seperti server MCP—untuk menukar token akses pengguna masuk dengan token akses cakupan baru yang menargetkan server sumber daya hilir. Saat pertukaran mengubah token yang dikeluarkan untuk satu audiens langsung menjadi token untuk audiens hilir yang berbeda, agen Anda dapat mengakses sumber daya yang dilindungi atas nama pengguna yang diautentikasi tanpa memicu aliran persetujuan tambahan. Token yang dipertukarkan membawa identitas agen itu sendiri dan identitas penelepon asli, memberikan server sumber daya sinyal yang mereka butuhkan untuk menegakkan otorisasi tanpa kepercayaan yang halus di setiap lompatan.
Cara kerja pertukaran token on-behalf-of
On-behalf-of pertukaran token dibangun ke dalam Penyedia Kredenal OAuth yang ada. Ketika agen meminta token hilir, AgentCore Identity secara otomatis mengambil token akses masuk — mewakili pemanggil upstream — bersama dengan kredensi klien yang sudah disimpan di penyedia kredensi, dan menengahi permintaan pertukaran token dengan server otorisasi IDP atau OAuth pelanggan. Ini mengirimkan permintaan, mem-parsing respons, dan mengembalikannya ke agen. Pengembang agen tidak perlu menangani token masuk atau mengelola rahasia klien secara langsung. Server otorisasi membuat keputusan otorisasi akhir, termasuk apakah akan memberikan cakupan yang diminta dan apakah akan mengizinkan delegasi.
AgentCore Identity mendukung penyedia identitas yang menerapkan pertukaran token on-behalf-of melalui salah satu dari dua standar yang ditetapkan. Di bawah RFC 8693 (OAuth 2.0 Token Exchange), penyedia kredensi mengikuti jenis hibah pertukaran token standar, mengirimkan token masuk sebagai subject_token bersama kredensi klien agen. Beberapa penyedia identitas malah menerapkan on-behalf-of melalui RFC 7523 §2.1 (Profil JWT untuk Hibah Otorisasi OAuth 2.0), di mana token masuk disajikan sebagai hibah otorisasi JWT untuk mendapatkan token akses hilir. Anda mengonfigurasi mode mana yang diharapkan penyedia identitas Anda saat menyiapkan Penyedia Kredenal OAuth; AgentCore Identity menangani perbedaan protokol dari sana.
Mengkonfigurasi pertukaran token on-behalf-of
Untuk menggunakan fitur ini, konfigurasikan mode pertukaran token on-behalf-of pada penyedia kredensi OAuth 2.0 Anda. Anda dapat menyesuaikan konfigurasi saat menggunakan penyedia kustom, atau memilih dari salah satu penyedia yang didukung.
Penyedia Kredensi OAuth2 Kustom
Untuk mengonfigurasi pertukaran token on-behalf-of untuk penyedia kustom di AWS Konsol, lihat Menambahkan klien OAuth menggunakan penyedia khusus. Anda juga dapat mengkonfigurasinya menggunakan CLI
Contoh CLI: menggunakan tipe hibah TOKEN_EXCHANGE dengan token mesin-ke-mesin sebagai token aktor
aws bedrock-agentcore-control create-oauth2-credential-provider \ --cli-input-json '{ "name": "sample-obo-custom", "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", "onBehalfOfTokenExchangeConfig": { "grantType": "TOKEN_EXCHANGE", "tokenExchangeGrantTypeConfig": { "actorTokenContent": "M2M", "actorTokenScopes": ["scope1", "scope2"] } } } } }'
Contoh CLI: menggunakan jenis hibah JWT_AUTHORIZATION_GRANT
aws bedrock-agentcore-control create-oauth2-credential-provider \ --cli-input-json '{ "name": "sample-obo-custom", "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", "onBehalfOfTokenExchangeConfig": { "grantType": "JWT_AUTHORIZATION_GRANT" } } } }'
Konfigurasi pertukaran token on-behalf-of khusus penyedia
AgentCore Identitas mencakup dukungan pertukaran token on-behalf-of out-of-the-box untuk penyedia yang dipilih, yang telah dikonfigurasi sesuai dengan dokumentasi publik masing-masing penyedia. Untuk menyesuaikan pengaturan tingkat protokol di luar default ini, siapkan penyedia kustom untuk kontrol penuh atas konfigurasi exchange.
| Nama Penyedia | Mode Jenis Hibah | Catatan | Dokumentasi Terkait |
|---|---|---|---|
|
|
* On-Behalf-Of Aliran Microsoft adalah pola delegasi eksklusif yang dibangun di atas standar RFC 7523, menggunakan jenis JWT-bearer hibah untuk memfasilitasi pertukaran token aman antara layanan berjenjang. |
|
Platform identitas Microsoft dan aliran OAuth 2.0 On-Behalf-Of |
Menggunakan pertukaran token on-behalf-of
Untuk meminta token on-behalf-of saat runtime, panggil GetResourceOauth2Tokendan setel OAuth2flow ke. ON_BEHALF_OF_TOKEN_EXCHANGE Lewati token akses beban kerja yang Anda peroleh GetWorkloadAccessTokenForJWT— token ini membawa token masuk sebagai subjek, yang digunakan AgentCore Identity sebagai token subjek di bursa. Untuk referensi API selengkapnya, lihat AWS dokumentasinya.
# obtain workload access token using inbound token aws bedrock-agentcore get-workload-access-token-for-jwt --workload-name sample-workload \ --user-token "inbound-jwt-token" { "workloadAccessToken": "workload-access-token" } # perform on-behalf-of token exchange aws bedrock-agentcore get-resource-oauth2-token --resource-credential-provider-name sample-obo-provider \ --oauth2-flow ON_BEHALF_OF_TOKEN_EXCHANGE --scopes "sample-scope" \ --workload-identity-token "workload-access-token" { "accessToken": "on-behalf-of-token" }
Jenis hibah dan jenis token
grant_type = TOKEN_EXCHANGE
grant_type = TOKEN_EXCHANGEDengan jenis hibah ini, AgentCore Identity mengirimkan JWT masuk sebagai token subjek untuk mendapatkan token akses. Konfigurasikan actor_token_content nilai menjadi salah satu dariM2M,AWS_IAM_ID_TOKEN_JWT, atau NONE
| Parameter | Nilai |
|---|---|
|
|
|
|
|
Kami menggunakan token JWT masuk dan memetakan jenis token subjek |
grant_type = JWT_AUTHORIZATION_GRANT
grant_type = JWT_AUTHORIZATION_GRANTDengan jenis hibah ini, AgentCore Identity mengirimkan JWT masuk sebagai otorisasi untuk mendapatkan token akses. Tidak diperlukan actor_token_content konfigurasi karena jenis hibah ini tidak memerlukan token aktor apa pun.
| Parameter | Nilai |
|---|---|
|
|
|
|
|
Token JWT masuk |
actor_token_content = M2M (hanya jika grant_type = TOKEN_EXCHANGE )
M2M (hanya jika grant_type = TOKEN_EXCHANGE)AgentCore Identity pertama-tama melakukan otentikasi mesin-ke-mesin (pemberian kredensi klien OAuth 2.0) terhadap penyedia kredensi untuk mendapatkan token akses, kemudian mengirimkannya sebagai. actor_token
| Parameter | Nilai |
|---|---|
|
|
|
actorTokenScopesKonfigurasi opsional digunakan sebagai scope parameter untuk permintaan kredensial klien.
actor_token_content = _TOKEN_JWT (hanya jika grant_type = AWS_IAM_IDTOKEN_EXCHANGE)
= AWS_IAM_IDTOKEN_EXCHANGE)AgentCore Panggilan identitas sts:GetWebIdentityTokenmenggunakan titik akhir token penyedia kredensi sebagai klaim aud, kemudian mengirimkan JWT yang dihasilkan sebagai. actor_token
| Parameter | Nilai |
|---|---|
|
|
|
Mode ini mengharuskan akun Anda diaktifkan untuk federasi identitas web keluar. Lihat iam:EnableOutboundWebIdentityFederation.
actor_token_content = NONE (hanya jika grant_type = TOKEN_EXCHANGE )
NONE (hanya jika grant_type = TOKEN_EXCHANGE)Tidak actor_token_type ada actor_token atau termasuk dalam permintaan pertukaran token. Gunakan mode ini dengan penyedia identitas yang memperoleh identitas aktor dari otentikasi klien saja.