View a markdown version of this page

On-behalf-of troca de tokens com AgentCore Identity - Amazon Bedrock AgentCore

On-behalf-of troca de tokens com AgentCore Identity

O Amazon Bedrock AgentCore Identity oferece suporte à troca de tokens On-Behalf-Of (OBO), permitindo que agentes e outras cargas de trabalho, como servidores MCP, troquem um token de acesso de usuário de entrada por um novo token de acesso com escopo definido que tem como alvo um servidor de recursos downstream. À medida que a exchange converte um token emitido para um público diretamente em um token para outro público posterior, seus agentes podem acessar recursos protegidos em nome de usuários autenticados sem acionar fluxos adicionais de consentimento. O token trocado carrega tanto a identidade do próprio agente quanto a identidade do chamador original, fornecendo aos servidores de recursos os sinais de que precisam para impor uma autorização refinada e de confiança zero a cada salto.

Como funciona a troca de tokens em nome da empresa

On-behalf-of a troca de tokens é incorporada ao provedor de credenciais OAuth existente. Quando um agente solicita um token downstream, o AgentCore Identity pega automaticamente o token de acesso de entrada, representando o chamador upstream, junto com as credenciais do cliente já armazenadas no provedor de credenciais, e intermedia a solicitação de troca do token com o servidor de autorização IdP ou OAuth do cliente. Ele envia a solicitação, analisa a resposta e a retorna ao agente. Os desenvolvedores de agentes nunca precisam lidar com o token de entrada ou gerenciar os segredos do cliente diretamente. O servidor de autorização toma a decisão final de autorização, incluindo a concessão dos escopos solicitados e a permissão da delegação.

AgentCore O Identity oferece suporte a provedores de identidade que implementam a troca de tokens em nome de um dos dois padrões estabelecidos. De acordo com o RFC 8693 (OAuth 2.0 Token Exchange), o provedor de credenciais segue o tipo padrão de concessão de troca de tokens, enviando o token de entrada como subject_token junto com as credenciais do cliente do agente. Em vez disso, alguns provedores de identidade implementam por meio do RFC 7523 §2.1 (Perfil JWT para concessões de autorização do OAuth 2.0), em que o token de entrada é apresentado como uma concessão de autorização do JWT para obter o token de acesso downstream. Você configura o modo que seu provedor de identidade espera ao configurar o provedor de credenciais OAuth; a AgentCore identidade lida com as diferenças de protocolo a partir daí.

Configurando a troca de tokens em nome da

Para usar esse recurso, configure um modo de troca de tokens em nome do seu provedor de credenciais do OAuth 2.0. Você pode personalizar a configuração ao usar um provedor personalizado ou escolher um dos provedores compatíveis.

Provedor de credenciais OAuth2 personalizado

Para configurar a troca de tokens em nome do provedor personalizado no AWS console, consulte Adicionar cliente OAuth usando um provedor personalizado. Você também pode configurá-lo usando a CLI

Exemplo de CLI: usando o tipo de concessão TOKEN_EXCHANGE com token de máquina a máquina como token de ator

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

Exemplo de CLI: usando o tipo de concessão 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" } } } }'

Configuração de troca de tokens específica do provedor em nome

AgentCore O Identity inclui suporte de troca de tokens pronto para uso em nome de provedores selecionados, pré-configurado de acordo com a documentação pública de cada provedor. Para ajustar as configurações em nível de protocolo além desses padrões, configure um provedor personalizado para ter controle total sobre a configuração do Exchange.

Nome do provedor Modo de tipo de concessão Observação Documentação relacionada

MicrosoftOauth2

JWT_AUTHORIZATION_GRANT

* O On-Behalf-Of fluxo da Microsoft é um padrão de delegação proprietário baseado no padrão RFC 7523, usando o tipo de JWT-bearer concessão para facilitar a troca segura de tokens entre serviços em camadas.

requested_token_use=on_behalf_ofé automaticamente adicionado à solicitação, a menos que seja substituído.

Plataforma de identidade Microsoft e fluxo OAuth 2.0 On-Behalf-Of

Usando a troca de tokens em nome da

Para solicitar um token em nome do usuário em tempo de execução, chame GetResourceOauth2Tokene defina OAuth2flow como o. ON_BEHALF_OF_TOKEN_EXCHANGE Passe o token de acesso à carga de trabalho que você obteve GetWorkloadAccessTokenForJWT— esse token carrega o token de entrada como assunto, que o AgentCore Identity usa como token de assunto na troca. Para ver a referência completa da API, consulte a AWS documentação.

# 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 subsídios e tipos de tokens

tipo_concessão = TOKEN_EXCHANGE

Com esse tipo de concessão, o AgentCore Identity envia o JWT de entrada como o token de assunto para obter um token de acesso. Configure o actor_token_content valor como um dos M2MAWS_IAM_ID_TOKEN_JWT, ou NONE

Parâmetro Valor

grant_type

TOKEN_EXCHANGE(nós o mapeamos urn:ietf:params:oauth:grant-type:token-exchange ao construir a solicitação de troca de tokens)

subject_token

Usamos o token JWT de entrada e mapeamos o tipo de token em questão urn:ietf:params:oauth:token-type:jwt ao criar a solicitação de troca de token.

Padrão e pode ser substituído, consulte CustomParameters

tipo_concessão = JWT_AUTHORIZATION_GRANT

Com esse tipo de concessão, o AgentCore Identity envia o JWT de entrada como uma autorização para obter um token de acesso. Nenhuma actor_token_content configuração é necessária, pois esse tipo de concessão não exige nenhum token de ator.

Parâmetro Valor

grant_type

JWT_AUTHORIZATION_GRANT(nós o mapeamos urn:ietf:params:oauth:grant-type:jwt-bearer ao construir a solicitação de troca de tokens)

assertion

Token JWT de entrada

actor_token_content = M2M (somente quando grant_type = TOKEN_EXCHANGE)

AgentCore O Identity primeiro executa a autenticação máquina a máquina (concessão de credenciais do cliente OAuth 2.0) contra o provedor de credenciais para obter um token de acesso e, em seguida, o envia como o. actor_token

Parâmetro Valor

actor_token_content

M2M

  • nós o mapeamos urn:ietf:params:oauth:token-type:access_token ao construir uma solicitação de troca de tokens

  • obtemos o token de acesso por meio de client_credentials concessão

A actorTokenScopes configuração opcional é usada como scope parâmetros para a solicitação de credenciais do cliente.

actor_token_content = _TOKEN_JWT (somente quando grant_type = AWS_IAM_IDTOKEN_EXCHANGE)

AgentCore Chamadas de identidade sts:GetWebIdentityTokenusando o endpoint de token do provedor de credenciais como a declaração aud e, em seguida, envia o JWT resultante como o. actor_token

Parâmetro Valor

actor_token_content

AWS_IAM_ID_TOKEN_JWT

  • nós o mapeamos urn:ietf:params:oauth:token-type:jwt ao construir uma solicitação de troca de tokens

  • obtemos o JWT via sts:GetWebIdentityToken

Esse modo exige que sua conta esteja habilitada para federação de identidade web de saída. Consulte iam:EnableOutboundWebIdentityFederation.

actor_token_content = NENHUM (somente quando grant_type = TOKEN_EXCHANGE )

Não actor_token ou actor_token_type está incluído na solicitação de troca de tokens. Use esse modo com provedores de identidade que derivam a identidade do ator somente da autenticação do cliente.