On-behalf-of scambio di token con AgentCore Identity
Amazon Bedrock AgentCore Identity supporta lo scambio di token On-Behalf-Of (OBO), che consente agli agenti e ad altri carichi di lavoro, come i server MCP, di scambiare un token di accesso utente in entrata con un nuovo token di accesso con ambito destinato a un server di risorse downstream. Man mano che l'exchange converte un token emesso per un pubblico direttamente in un token per un pubblico a valle diverso, i tuoi agenti possono accedere a risorse protette per conto di utenti autenticati senza attivare flussi di consenso aggiuntivi. Il token scambiato riporta sia l'identità dell'agente che l'identità del chiamante originale, e fornisce ai server di risorse i segnali necessari per applicare un'autorizzazione granulare e zero-trust a ogni passaggio.
Come funziona lo scambio di token per conto di
On-behalf-of lo scambio di token è integrato nel provider di credenziali OAuth esistente. Quando un agente richiede un token downstream, AgentCore Identity accetta automaticamente il token di accesso in entrata, che rappresenta il chiamante originario, insieme alle credenziali del client già archiviate nel provider di credenziali e negozia la richiesta di scambio di token con l'IdP o il server di autorizzazione OAuth del cliente. Invia la richiesta, analizza la risposta e la restituisce all'agente. Gli sviluppatori di agenti non devono mai gestire il token in entrata o gestire direttamente i segreti dei client. Il server di autorizzazione prende la decisione finale sull'autorizzazione, inclusa se concedere gli ambiti richiesti e se consentire la delega.
AgentCore Identity supporta i provider di identità che implementano lo scambio di token per conto di uno dei due standard stabiliti. In base a RFC 8693 (OAuth 2.0 Token Exchange), il fornitore di credenziali segue il tipo di concessione standard per lo scambio di token, inviando il token in entrata come subject_token insieme alle credenziali del client dell'agente. Alcuni provider di identità implementano invece on-behalf-of tramite RFC 7523 §2.1 (JWT Profile for OAuth 2.0 Authorization Grants), in cui il token in entrata viene presentato come una concessione di autorizzazione JWT per ottenere il token di accesso downstream. È possibile configurare la modalità prevista dal provider di identità durante la configurazione del provider di credenziali OAuth; da lì Identity gestisce le differenze di protocollo. AgentCore
Configurazione dello scambio di token per conto di
Per utilizzare questa funzionalità, configura una modalità di scambio di token per conto del tuo provider di credenziali OAuth 2.0. Puoi personalizzare la configurazione quando utilizzi un provider personalizzato o scegliere uno dei provider supportati.
Provider di credenziali OAuth2 personalizzato
Per configurare lo scambio di token per conto di un provider personalizzato su AWS Console, consulta Aggiungere un client OAuth utilizzando un provider personalizzato. Puoi anche configurarlo usando la CLI
Esempio CLI: utilizzo del tipo di concessione TOKEN_EXCHANGE con il token da macchina a macchina come token attore
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"] } } } } }'
Esempio CLI: utilizzo del tipo di concessione 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" } } } }'
Configurazione di scambio di token specifica del provider per conto del provider
AgentCore Identity include il supporto pronto all'uso per lo scambio di token per conto di provider selezionati, preconfigurato in base alla documentazione pubblica di ciascun provider. Per modificare le impostazioni a livello di protocollo oltre a queste impostazioni predefinite, configura un provider personalizzato per il controllo completo sulla configurazione di Exchange.
| Nome del provider | Modalità tipo di concessione | Nota | Documentazione correlata |
|---|---|---|---|
|
|
* Il On-Behalf-Of flusso di Microsoft è un modello di delega proprietario basato sullo standard RFC 7523, che utilizza il tipo di JWT-bearer concessione per facilitare lo scambio sicuro di token tra servizi a più livelli. |
|
Piattaforma di identità Microsoft e flusso OAuth 2.0 On-Behalf-Of |
Utilizzo dello scambio di token per conto di
Per richiedere un token per conto di OAuth2Flow in fase di esecuzione, chiama GetResourceOauth2Tokene imposta OAuth2Flow su. ON_BEHALF_OF_TOKEN_EXCHANGE Passa il token di accesso al carico di lavoro da cui hai ottenuto GetWorkloadAccessTokenForJWT: questo token contiene il token in entrata come oggetto, che AgentCore Identity utilizza come token oggetto nello scambio. Per il riferimento completo all'API, consulta la AWS documentazione.
# 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" }
Tipi di sovvenzioni e tipi di token
grant_type = TOKEN_EXCHANGE
grant_type = TOKEN_EXCHANGECon questo tipo di concessione, AgentCore Identity invia il JWT in entrata come token oggetto per ottenere un token di accesso. Configura actor_token_content il valore come uno diM2M, o AWS_IAM_ID_TOKEN_JWT NONE
| Parametro | Valore |
|---|---|
|
|
|
|
|
Utilizziamo il token JWT in entrata e mappiamo il tipo di token oggetto a È predefinito e può essere sovrascritto, vedi CustomParameters |
grant_type = JWT_AUTHORIZATION_GRANT
grant_type = JWT_AUTHORIZATION_GRANTCon questo tipo di concessione, AgentCore Identity invia il JWT in entrata come autorizzazione per ottenere un token di accesso. Non è richiesta alcuna actor_token_content configurazione in quanto questo tipo di concessione non richiede alcun token attore.
| Parametro | Valore |
|---|---|
|
|
|
|
|
Token JWT in entrata |
actor_token_content = M2M (solo quando grant_type = TOKEN_EXCHANGE )
)AgentCore Identity esegue innanzitutto l'autenticazione da macchina a macchina (concessione delle credenziali del client OAuth 2.0) contro il provider di credenziali per ottenere un token di accesso, quindi lo invia come. actor_token
| Parametro | Valore |
|---|---|
|
|
|
La actorTokenScopes configurazione opzionale viene utilizzata come scope parametri per la richiesta delle credenziali del client.
actor_token_content = _TOKEN_JWT (solo quando grant_type = AWS_IAM_IDTOKEN_EXCHANGE)
= AWS_IAM_IDTOKEN_EXCHANGE)AgentCore Identity chiama sts:GetWebIdentityTokenutilizzando l'endpoint del token del provider di credenziali come claim aud, quindi invia il JWT risultante come. actor_token
| Parametro | Valore |
|---|---|
|
|
|
Questa modalità richiede che il tuo account sia abilitato alla federazione delle identità web in uscita. Per informazioni, consulta iam:EnableOutboundWebIdentityFederation.
actor_token_content = NONE (solo quando grant_type = TOKEN_EXCHANGE )
NONE (solo quando grant_type = TOKEN_EXCHANGE)No o è actor_token incluso actor_token_type nella richiesta di scambio di token. Utilizzate questa modalità con i provider di identità che derivano l'identità dell'attore dalla sola autenticazione del client.