On-behalf-of Token-Austausch mit AgentCore Identity
Amazon Bedrock AgentCore Identity unterstützt den Token-Austausch On-Behalf-Of (OBO), sodass Agenten und andere Workloads — wie MCP-Server — ein eingehendes Benutzerzugriffstoken gegen ein neues Zugriffstoken mit Gültigkeitsbereich austauschen können, das auf einen nachgelagerten Ressourcenserver abzielt. Da der Austausch ein für eine Zielgruppe ausgegebenes Token direkt in ein Token für eine andere nachgelagerte Zielgruppe umwandelt, können Ihre Agenten im Namen authentifizierter Benutzer auf geschützte Ressourcen zugreifen, ohne zusätzliche Zustimmungsflüsse auszulösen. Das ausgetauschte Token enthält sowohl die eigene Identität des Agenten als auch die Identität des ursprünglichen Anrufers und gibt den Ressourcenservern die Signale, die sie benötigen, um bei jedem Hop eine fein abgestufte Zero-Trust-Autorisierung durchzusetzen.
Wie funktioniert der Token-Austausch im Namen
On-behalf-of Der Token-Austausch ist in den bestehenden OAuth Credential Provider integriert. Wenn ein Agent ein Downstream-Token anfordert, verwendet AgentCore Identity automatisch das eingehende Zugriffstoken — das den Upstream-Anrufer darstellt — zusammen mit den bereits im Anmeldeinformationsanbieter gespeicherten Client-Anmeldeinformationen und vermittelt die Token-Austauschanfrage mit dem IdP- oder OAuth-Autorisierungsserver des Kunden. Es sendet die Anfrage, analysiert die Antwort und sendet sie an den Agenten zurück. Agentenentwickler müssen niemals das eingehende Token bearbeiten oder Kundengeheimnisse direkt verwalten. Der Autorisierungsserver trifft die endgültige Autorisierungsentscheidung, einschließlich der Frage, ob die angeforderten Bereiche gewährt und ob die Delegierung zugelassen werden soll.
AgentCore Identity unterstützt Identitätsanbieter, die den Token-Austausch im Namen eines von zwei etablierten Standards implementieren. Gemäß RFC 8693 (OAuth 2.0 Token Exchange) folgt der Anmeldeinformationsanbieter dem Standard-Grant-Typ für den Token-Austausch und übermittelt das eingehende Token als subject_token zusammen mit den Client-Anmeldeinformationen des Agenten. Einige Identitätsanbieter implementieren stattdessen im Namen von RFC 7523 §2.1 (JWT-Profil für OAuth 2.0-Autorisierungszuweisungen), wobei das eingehende Token als JWT-Autorisierungsgewährung dargestellt wird, um das Downstream-Zugriffstoken zu erhalten. Sie konfigurieren, welchen Modus Ihr Identitätsanbieter erwartet, wenn Sie den OAuth Credential Provider einrichten. Identity kümmert sich dann um die Protokollunterschiede. AgentCore
Konfiguration des Tokenaustauschs im Namen
Um diese Funktion zu verwenden, konfigurieren Sie einen Token-Austauschmodus im Namen Ihres OAuth 2.0-Anmeldeinformationsanbieters. Sie können die Konfiguration anpassen, wenn Sie einen benutzerdefinierten Anbieter verwenden, oder Sie können einen der unterstützten Anbieter auswählen.
Benutzerdefinierter OAuth2-Anmeldeinformationsanbieter
Informationen zur Konfiguration des Tokenaustauschs im Namen eines benutzerdefinierten Anbieters auf der AWS Konsole finden Sie unter Hinzufügen eines OAuth-Clients mithilfe eines benutzerdefinierten Anbieters. Sie können es auch mit CLI konfigurieren
CLI-Beispiel: Verwendung des Zuschusstyps TOKEN_EXCHANGE mit Maschine-zu-Maschine-Token als Akteur-Token
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"] } } } } }'
CLI-Beispiel: Verwendung des Zuschusstyps 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" } } } }'
Anbieterspezifische Konfiguration für den Token-Austausch im Namen
AgentCore Identity umfasst eine sofort einsatzbereite Unterstützung für den Token-Austausch im Namen ausgewählter Anbieter, die gemäß der öffentlichen Dokumentation der einzelnen Anbieter vorkonfiguriert ist. Um Einstellungen auf Protokollebene über diese Standardwerte hinaus anzupassen, richten Sie einen benutzerdefinierten Anbieter ein, der Ihnen die volle Kontrolle über die Exchange-Konfiguration gewährt.
| Name des Anbieters | Modus „Art des Zuschusses“ | Hinweis | Zugehörige Dokumentation |
|---|---|---|---|
|
|
* Der On-Behalf-Of Flow von Microsoft ist ein proprietäres Delegierungsmuster, das auf dem Standard RFC 7523 basiert und den JWT-bearer Grant-Typ verwendet, um den sicheren Tokenaustausch zwischen mehrstufigen Diensten zu ermöglichen. |
|
Microsoft-Identitätsplattform und OAuth 2.0-Flow On-Behalf-Of |
Nutzung des Token-Austauschs im Namen
Um zur Laufzeit ein Token im Namen von anzufordern, rufen Sie OAuth2Flow auf und setzen Sie GetResourceOauth2Tokenes auf. ON_BEHALF_OF_TOKEN_EXCHANGE Übergeben Sie das Workload-Zugriffstoken, von dem Sie es erhalten haben. Dieses Token enthält das eingehende Token als Betreff, das AgentCore Identity als GetWorkloadAccessTokenForJWTBetreff-Token im Exchange verwendet. Die vollständige API-Referenz finden Sie in der AWS Dokumentation.
# 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" }
Arten von Zuschüssen und Token-Typen
grant_type = TOKEN_EXCHANGE
Bei diesem Grant-Typ sendet AgentCore Identity das eingehende JWT als Betreff-Token, um ein Zugriffstoken zu erhalten. Konfigurieren Sie actor_token_content den Wert so, dass er einer vonM2M, oder ist AWS_IAM_ID_TOKEN_JWT NONE
| Parameter | Wert |
|---|---|
|
|
|
|
|
Wir verwenden das eingehende JWT-Token und ordnen ihm den Betreff-Tokentyp zu, Standard und kann überschrieben werden, siehe CustomParameters |
grant_type = JWT_AUTHORIZATION_GRANT
grant_type = JWT_AUTHORIZATION_GRANTBei diesem Grant-Typ sendet AgentCore Identity das eingehende JWT als Autorisierung, um ein Zugriffstoken zu erhalten. Es ist keine actor_token_content Konfiguration erforderlich, da für diesen Grant-Typ kein Actor-Token erforderlich ist.
| Parameter | Wert |
|---|---|
|
|
|
|
|
Eingehendes JWT-Token |
actor_token_content = M2M (nur wenn grant_type = TOKEN_EXCHANGE )
)AgentCore Identity führt zunächst eine Maschine-zu-Maschine-Authentifizierung (Erteilung von OAuth 2.0-Client-Anmeldeinformationen) gegenüber dem Anmeldeinformationsanbieter durch, um ein Zugriffstoken zu erhalten, und sendet es dann als. actor_token
| Parameter | Wert |
|---|---|
|
|
|
Die optionale actorTokenScopes Konfiguration wird als scope Parameter für die Anforderung der Client-Anmeldeinformationen verwendet.
actor_token_content = _TOKEN_JWT (nur wenn grant_type = AWS_IAM_IDTOKEN_EXCHANGE)
= AWS_IAM_IDTOKEN_EXCHANGE)AgentCore Identity ruft auf, wobei der Token-Endpunkt des sts:GetWebIdentityTokenAnmeldeinformationsanbieters als Aud-Claim verwendet wird, und sendet dann das resultierende JWT als. actor_token
| Parameter | Wert |
|---|---|
|
|
|
Für diesen Modus muss Ihr Konto für den ausgehenden Web-Identitätsverbund aktiviert sein. Siehe iam:EnableOutboundWebIdentityFederation.
actor_token_content = NONE (nur wenn grant_type = TOKEN_EXCHANGE )
NONE (nur wenn grant_type = TOKEN_EXCHANGE)Nein oder ist in actor_token actor_token_type der Token-Austauschanfrage enthalten. Verwenden Sie diesen Modus mit Identitätsanbietern, die die Identität des Akteurs allein aus der Client-Authentifizierung ableiten.