View a markdown version of this page

On-behalf-of intercambio de fichas con AgentCore Identity - Amazon Bedrock AgentCore

On-behalf-of intercambio de fichas con AgentCore Identity

Amazon Bedrock AgentCore Identity admite el intercambio de tokens On-Behalf-Of (OBO), lo que permite a los agentes y otras cargas de trabajo, como los servidores MCP, intercambiar un token de acceso de usuario entrante por un nuevo token de acceso limitado dirigido a un servidor de recursos descendente. A medida que el intercambio convierte un token emitido directamente para un público en un token para un público intermedio diferente, sus agentes pueden acceder a los recursos protegidos en nombre de los usuarios autenticados sin activar flujos de consentimiento adicionales. El token intercambiado contiene tanto la identidad del agente como la de la persona que llamó originalmente, lo que proporciona a los servidores de recursos las señales que necesitan para aplicar una autorización exhaustiva y de confianza cero en todo momento.

¿Cómo funciona el intercambio de fichas en nombre de otra persona

On-behalf-of el intercambio de tokens está integrado en el proveedor de credenciales de OAuth existente. Cuando un agente solicita un token descendente, AgentCore Identity toma automáticamente el token de acceso entrante (que representa a la persona que llama en sentido ascendente) junto con las credenciales del cliente ya almacenadas en el proveedor de credenciales, y tramita la solicitud de intercambio de token con el servidor de autorización de OAuth o IdP del cliente. Envía la solicitud, analiza la respuesta y la devuelve al agente. Los desarrolladores de agentes nunca necesitan gestionar el token entrante ni gestionar directamente los secretos de los clientes. El servidor de autorización toma la decisión final sobre la autorización, incluida la de conceder los ámbitos solicitados y permitir la delegación.

AgentCore Identity apoya a los proveedores de identidad que implementan el intercambio de fichas en nombre de cualquiera de los dos estándares establecidos. Según el RFC 8693 (OAuth 2.0 Token Exchange), el proveedor de credenciales sigue el tipo de concesión de intercambio de fichas estándar: envía el token entrante como subject_token junto con las credenciales de cliente del agente. En cambio, algunos proveedores de identidad lo implementan en su nombre mediante el RFC 7523 § 2.1 (perfil de JWT para las concesiones de autorización de OAuth 2.0), donde el token entrante se presenta como una concesión de autorización de JWT para obtener el token de acceso descendente. Al configurar el proveedor de credenciales de OAuth, tú configuras el modo que espera tu proveedor de identidad. A partir de ahí, Identity gestiona las diferencias de protocolo. AgentCore

Configurar en nombre del intercambio de fichas

Para usar esta función, configura un modo de intercambio de token en nombre de tu proveedor de credenciales de OAuth 2.0. Puedes personalizar la configuración si utilizas un proveedor personalizado o elegir uno de los proveedores compatibles.

Proveedor de credenciales OAuth2 personalizado

Para configurar el intercambio de tokens en nombre de un proveedor personalizado en la AWS consola, consulta Añadir un cliente OAuth mediante un proveedor personalizado. También puede configurarlo mediante CLI

Ejemplo de CLI: uso del tipo de concesión TOKEN_EXCHANGE con un token de máquina a máquina como token de actor

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"] } } } } }'

Ejemplo de CLI: uso del tipo de concesión 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" } } } }'

Configuración de intercambio de fichas específica del proveedor en nombre de

AgentCore Identity incluye un soporte de intercambio de fichas listo para usar para proveedores seleccionados, preconfigurado de acuerdo con la documentación pública de cada proveedor. Para ajustar la configuración a nivel de protocolo más allá de estos valores predeterminados, configura un proveedor personalizado para tener el control total de la configuración del intercambio.

Nombre del proveedor Modo de tipo de concesión Nota Documentación relacionada

MicrosoftOauth2

JWT_AUTHORIZATION_GRANT

* El On-Behalf-Of flujo de Microsoft es un patrón de delegación patentado basado en el estándar RFC 7523, que utiliza el tipo de JWT-bearer concesión para facilitar el intercambio seguro de fichas entre servicios escalonados.

requested_token_use=on_behalf_ofse añade automáticamente a la solicitud a menos que se anule.

Plataforma de identidad de Microsoft y flujo de OAuth 2.0 On-Behalf-Of

Utilización en nombre de un intercambio de fichas

Para solicitar un token en nombre de un token en tiempo de ejecución, llama GetResourceOauth2Tokeny establece OAuth2flow en. ON_BEHALF_OF_TOKEN_EXCHANGE Pasa el token de acceso a la carga de trabajo del que GetWorkloadAccessTokenForJWTobtuviste: este token contiene el token entrante como asunto, que AgentCore Identity utiliza como token de sujeto en el intercambio. Para ver la referencia completa de la API, consulta la AWS documentación.

# 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" }

Tipos de subvenciones y tipos de token

grant_type = TOKEN_EXCHANGE

Con este tipo de concesión, AgentCore Identity envía el JWT entrante como token de asunto para obtener un token de acceso. Configure actor_token_content el valor para que sea uno deM2M, AWS_IAM_ID_TOKEN_JWT o NONE

Parámetro Valor

grant_type

TOKEN_EXCHANGE(lo asignamos urn:ietf:params:oauth:grant-type:token-exchange al crear la solicitud de intercambio de fichas)

subject_token

Usamos el token JWT entrante y asignamos el tipo de token en cuestión urn:ietf:params:oauth:token-type:jwt al crear la solicitud de intercambio de token.

Es el predeterminado y se puede anular, consulte CustomParameters

grant_type = JWT_AUTHORIZATION_GRANT

Con este tipo de concesión, AgentCore Identity envía el JWT entrante como autorización para obtener un token de acceso. No se requiere ninguna actor_token_content configuración, ya que este tipo de concesión no requiere ningún token de actor.

Parámetro Valor

grant_type

JWT_AUTHORIZATION_GRANT(lo asignamos urn:ietf:params:oauth:grant-type:jwt-bearer al crear la solicitud de intercambio de fichas)

assertion

Token JWT entrante

actor_token_content = M2M (solo cuando grant_type = TOKEN_EXCHANGE )

AgentCore Identity primero realiza una autenticación de máquina a máquina (concede las credenciales de cliente de OAuth 2.0) contra el proveedor de credenciales para obtener un token de acceso y, a continuación, lo envía como. actor_token

Parámetro Valor

actor_token_content

M2M

  • lo asignamos al crear una solicitud de intercambio de token urn:ietf:params:oauth:token-type:access_token

  • obtenemos el token de acceso mediante client_credentials una subvención

La actorTokenScopes configuración opcional se utiliza como scope parámetro para la solicitud de credenciales del cliente.

actor_token_content = _TOKEN_JWT (solo cuando grant_type = AWS_IAM_IDTOKEN_EXCHANGE)

AgentCore Las llamadas de identidad sts:GetWebIdentityTokenutilizan el punto final del token del proveedor de credenciales como afirmación de pago y, a continuación, envía el JWT resultante como. actor_token

Parámetro Valor

actor_token_content

AWS_IAM_ID_TOKEN_JWT

  • lo mapeamos urn:ietf:params:oauth:token-type:jwt al crear la solicitud de intercambio de fichas

  • obtenemos JWT a través de sts:GetWebIdentityToken

Este modo requiere que su cuenta esté habilitada para la federación de identidades web salientes. Consulte iam:EnableOutboundWebIdentityFederation.

actor_token_content = NONE (solo cuando grant_type = TOKEN_EXCHANGE )

No o está incluido actor_token actor_token_type en la solicitud de intercambio de fichas. Utilice este modo con proveedores de identidad que obtengan la identidad del actor únicamente a partir de la autenticación del cliente.