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 |
|---|---|---|---|
|
|
* 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. |
|
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
tipo_concessão = TOKEN_EXCHANGECom 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 |
|---|---|
|
|
|
|
|
Usamos o token JWT de entrada e mapeamos o tipo de token em questão |
tipo_concessão = JWT_AUTHORIZATION_GRANT
tipo_concessão = JWT_AUTHORIZATION_GRANTCom 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 |
|---|---|
|
|
|
|
|
Token JWT de entrada |
actor_token_content = M2M (somente quando grant_type = TOKEN_EXCHANGE)
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 |
|---|---|
|
|
|
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)
= 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 |
|---|---|
|
|
|
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.