View a markdown version of this page

Autenticação de cliente JWT com chave privada - Base da Amazônia AgentCore

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Autenticação de cliente JWT com chave privada

Com o Private Key JWT, o AgentCore Identity se autentica no endpoint de token de um provedor de identidade downstream usando uma declaração de cliente JWT assinada, de acordo com a RFC 7523, Seção 2.2, em vez de um segredo de cliente. A chave privada nunca sai do Serviço de Gerenciamento de AWS Chaves (KMS). AgentCore A identidade assina cada afirmação por meio kms:Sign de. Seu provedor de identidade possui a chave pública correspondente usada para autenticar a afirmação do cliente e retorna um token de acesso.

Esse método elimina segredos compartilhados entre o AgentCore Identity e seu servidor de autorização, substituindo-os por pares de chaves assimétricas sob seu controle total.

Como funciona a autenticação do cliente JWT com chave privada

  • Você configura um provedor de credenciais OAuth 2.0 personalizado com o seuclientId, o ARN de uma chave de assinatura KMS assimétrica e o mesmo algoritmo de assinatura exigido pelo seu provedor de identidade para a autenticação do cliente JWT com chave privada.

  • Quando a AgentCore Identity precisa de um token para fluxos de código de máquina para máquina (M2M), em nome de (OBO) ou de autorização, ela cria uma declaração de cliente JWT de curta duração. A declaração contém as reivindicações exigidas pelo seu provedor de identidade.

  • AgentCore A identidade então assina a afirmação usando AWS KMS, com a chave de assinatura assimétrica fornecida ARN.

  • A declaração assinada é enviada para o endpoint do token como client_assertion com. client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer

  • O servidor de autorização valida a afirmação em relação à chave pública que você registrou e emite o token solicitado.

A chave privada JWT está disponível no provedor de credenciais OAuth 2.0 personalizado (). CustomOauth2 Ele funciona para todos os fluxos de concessão: credenciais do cliente (M2M), troca de tokens com concessão de autorização JWT (OBO) e código de autorização (acesso delegado pelo usuário).

Configurando a chave privada JWT na identidade AgentCore

Para configurar o provedor de credenciais com êxito, primeiro verifique os requisitos do seu provedor de identidade para a autenticação do cliente JWT com chave privada: algoritmo de assinatura, chaves públicas e declarações obrigatórias de afirmação do cliente JWT.

algoritmo de assinatura

Identifique o algoritmo de assinatura que seu provedor de identidade exige para a autenticação do cliente JWT com chave privada. Isso corresponde ao signingAlgorithm campo em privateKeyJwtConfig ao criar ou atualizar um provedor de credenciais personalizadas do OAuth 2.0.

  • Especifique o mesmo algoritmo do algoritmo de assinatura ao criar o provedor de credenciais no AgentCore Identity.

  • Esse algoritmo de assinatura também será usado para escolher uma especificação de chave KMS aceitável, detalhada abaixo.

AWS Configuração de chave assimétrica KMS

Determine como seu provedor de identidade gerencia as chaves de assinatura:

  • Se seu provedor de identidade aceitar chaves públicas carregadas, crie um par de chaves KMS assimétrico com o uso. SIGN_VERIFY Escolha uma especificação de chave que ofereça suporte ao seu algoritmo de assinatura (consulte a tabela a seguir). A chave deve estar na mesma região do provedor de credenciais. Especifique o ARN da chave KMS ao criar o provedor de credenciais em Identity. AgentCore

    Após a criação, use a GetPublicKey API kms: para gerar a chave pública correspondente. kms:GetPublicKeyretorna uma chave DER-encoded X.509 pública ou SPKI. Alguns provedores de identidade exigem essas chaves públicas em um formato específico. Por exemplo, o Microsoft Entra exige um objeto de X.509 certificado, o Okta exige uma chave Web JSON, enquanto o Ping Identity oferece suporte a ambos. Converta a chave pública para o formato exigido do seu provedor de identidade e faça o upload dela para o seu provedor de identidade.

  • Se seu provedor de identidade criar o par de chaves e fornecer o material da chave privada, importe-o em uma chave KMS com o SIGN_VERIFY uso. Escolha uma especificação de chave compatível com o algoritmo de assinatura (consulte a tabela a seguir). Para obter instruções, consulte Importação de material de chaves para chaves AWS KMS. Especifique o ARN da chave KMS ao criar o provedor de credenciais em Identity. AgentCore

A escolha signingAlgorithm que você escolher determina quais especificações de chave do KMS são aceitas:

algoritmo de assinatura Especificações principais do KMS aceitas

RS256

RSA_2048, RSA_3072, RSA_4096

PS256

RSA_2048, RSA_3072, RSA_4096

ES256

ECC_NIST_P256

AWS Política de chaves do KMS

Para usar uma chave de assinatura KMS assimétrica para a chave privada JWT, sua chave deve permitir que a AgentCore Identity realize operações de assinatura e descrição de chaves em seu nome. Anexe as seguintes permissões à política de chaves da sua chave KMS.

A kms:ViaService condição garante que a chave só possa ser usada quando a solicitação for originada por meio do Amazon Bedrock Identity AgentCore . Cross-account as chaves são suportadas quando a política de chaves concede kms:DescribeKey e kms:Sign à identidade chamadora. Substitua o Principal ARN pelo ARN raiz da conta que AgentCore chamará Identity.

{ "Id": "identity-service-cmk-policy", "Version": "2012-10-17", "Statement": [ { "Sid": "BedrockAgentCoreIdentityPrivateKeyJwtAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": [ "kms:Sign", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" }, "StringLike": { "kms:ViaService": "bedrock-agentcore-identity.*.amazonaws.com" } } } ] }

Cross-Region as chaves não são suportadas. A chave KMS deve estar na mesma AWS região do provedor de credenciais.

Reclamações adicionais na afirmação do cliente JWT

Verifique se seu provedor de identidade exige declarações adicionais no cabeçalho de afirmação do cliente JWT ou na carga útil para autenticação do cliente JWT com chave privada. Em caso afirmativo, inclua-os nos additionalPayloadClaims campos additionalHeaderClaims e dentro deleprivateKeyJwtConfig.

  • PoisadditionalHeaderClaims, não permitimos as reivindicações alg outyp.

  • PoisadditionalPayloadClaims, não permitimos as reivindicaçõesiss,sub,jti,exp,iat, ounbf. Permitiremos substituições na aud reivindicação (o padrão é o terminal do token do seu provedor de identidade).

Configurando o cliente OAuth com provedor personalizado usando autenticação JWT de chave privada

Para configurar um provedor de credenciais com autenticação de cliente JWT de chave privada, no AWS console, consulte Adicionar cliente OAuth usando provedor personalizado. Você também pode configurar o provedor de credenciais usando a AWS CLI.

Exemplo de CLI: JWT de chave privada para um provedor de credenciais da Microsoft

aws bedrock-agentcore-control create-oauth2-credential-provider \ --cli-input-json '{ "name": "microsoft-private-key-jwt", "credentialProviderVendor": "CustomOauth2", "oauth2ProviderConfigInput": { "customOauth2ProviderConfig": { "oauthDiscovery": { "discoveryUrl": "https://login.microsoftonline.com/your-tenant-id/v2.0/.well-known/openid-configuration" }, "clientId": "your-client-id", "clientAuthenticationMethod": "PRIVATE_KEY_JWT", "privateKeyJwtConfig": { "privateKeySource": { "kmsKeySource": { "kmsKeyArn": "arn:aws:kms:us-east-1:111122223333:key/your-key-id" } }, "signingAlgorithm": "PS256", "additionalHeaderClaims": { "x5t#S256": "Base64url-encoded SHA-256 thumbprint of the DER encoding of the X.509 public key certificate uploaded to Microsoft Entra" }, "additionalPayloadClaims": { "aud": "https://login.microsoftonline.com/your-tenant-id/oauth2/v2.0/token" } } } } }'

Exemplo de CLI: JWT de chave privada para um provedor de credenciais Okta com Token Exchange On-behalf-of

aws bedrock-agentcore-control create-oauth2-credential-provider \ --cli-input-json '{ "name": "okta-private-key-jwt", "credentialProviderVendor": "CustomOauth2", "oauth2ProviderConfigInput": { "customOauth2ProviderConfig": { "oauthDiscovery": { "discoveryUrl": "https://your-app.okta.com/oauth2/default/.well-known/openid-configuration" }, "clientId": "your-client-id", "clientAuthenticationMethod": "PRIVATE_KEY_JWT", "privateKeyJwtConfig": { "privateKeySource": { "kmsKeySource": { "kmsKeyArn": "arn:aws:kms:us-east-1:111122223333:key/your-key-id" } }, "signingAlgorithm": "RS256" }, "onBehalfOfTokenExchangeConfig": { "grantType": "TOKEN_EXCHANGE", "tokenExchangeGrantTypeConfig": { "actorTokenContent": "NONE" } } } } }'

Parâmetros para cliente OAuth com provedor personalizado usando autenticação JWT de chave privada

Parâmetro Obrigatório Descrição

clientAuthenticationMethod

Sim

Definido como PRIVATE_KEY_JWT.

clientId

Sim

O identificador do cliente registrado em seu provedor de identidade.

privateKeyJwtConfig.privateKeySource.kmsKeySource.kmsKeyArn

Sim

ARN completo da chave de assinatura assimétrica do KMS. Deve estar na mesma região do provedor de credenciais. Cross-account suportado.

privateKeyJwtConfig.signingAlgorithm

Sim

Algoritmo para assinar o JWT. Um dos:RS256,PS256,ES256.

privateKeyJwtConfig.additionalHeaderClaims

Não

Declarações adicionais de cabeçalho do JWT (mapa, máximo de 10 entradas). Use isso para passar um kid ou x5t#S256 que corresponda à chave registrada no seu provedor de identidade. Não é possível substituir alg outyp.

privateKeyJwtConfig.additionalPayloadClaims

Não

Solicitações adicionais de carga útil do JWT (mapa, máximo de 10 entradas). Não é possível substituiriss,sub,jti, expiat, ounbf. Use isso para adicionar declarações específicas do provedor ou para substituir aud (terminal de token por padrão).

clientSecret

Não obrigatório

Omitir ao usar a chave privada JWT.