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 seu
clientId, 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_assertioncom.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_VERIFYEscolha 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. AgentCoreApó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_VERIFYuso. 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 |
|---|---|
|
|
|
|
|
|
|
|
|
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.
-
Pois
additionalHeaderClaims, não permitimos as reivindicaçõesalgoutyp. -
Pois
additionalPayloadClaims, não permitimos as reivindicaçõesiss,sub,jti,exp,iat, ounbf. Permitiremos substituições naaudreivindicaçã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 |
|---|---|---|
|
|
Sim |
Definido como |
|
|
Sim |
O identificador do cliente registrado em seu provedor de identidade. |
|
|
Sim |
ARN completo da chave de assinatura assimétrica do KMS. Deve estar na mesma região do provedor de credenciais. Cross-account suportado. |
|
|
Sim |
Algoritmo para assinar o JWT. Um dos: |
|
|
Não |
Declarações adicionais de cabeçalho do JWT (mapa, máximo de 10 entradas). Use isso para passar um |
|
|
Não |
Solicitações adicionais de carga útil do JWT (mapa, máximo de 10 entradas). Não é possível substituir |
|
|
Não obrigatório |
Omitir ao usar a chave privada JWT. |