View a markdown version of this page

Autenticazione del client JWT con chiave privata - Fondamento Amazon AgentCore

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Autenticazione del client JWT con chiave privata

Con Private Key JWT, AgentCore Identity si autentica sull'endpoint token di un provider di identità downstream utilizzando un'asserzione client JWT firmata, secondo RFC 7523, Sezione 2.2, anziché un segreto del client. La chiave privata non esce mai dal Key Management Service (KMS). AWS AgentCore L'identità firma ogni asserzione tramite. kms:Sign Il tuo provider di identità possiede la chiave pubblica corrispondente utilizzata per autenticare l'asserzione del cliente e restituisce un token di accesso.

Questo metodo elimina i segreti condivisi tra AgentCore Identity e il tuo server di autorizzazione, sostituendoli con coppie di chiavi asimmetriche sotto il tuo pieno controllo.

Come funziona l'autenticazione del client JWT con chiave privata

  • Puoi configurare un provider di credenziali OAuth 2.0 personalizzato con la tua clientId chiave di firma KMS asimmetrica e lo stesso algoritmo di firma richiesto dal tuo provider di identità per l'autenticazione del client JWT con chiave privata.

  • Quando AgentCore Identity ha bisogno di un token per i flussi di codice machine-to-machine (M2M), on-behalf-of (OBO) o di autorizzazione, crea un'asserzione del client JWT di breve durata. L'asserzione contiene le dichiarazioni richieste dal tuo fornitore di identità.

  • AgentCore Identity firma quindi l'asserzione utilizzando AWS KMS, con la chiave di firma asimmetrica ARN fornita.

  • L'asserzione firmata viene inviata all'endpoint del token così com'è. client_assertion client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer

  • Il server di autorizzazione convalida l'asserzione rispetto alla chiave pubblica registrata ed emette il token richiesto.

Private Key JWT è disponibile sul provider di credenziali OAuth 2.0 personalizzato (). CustomOauth2 Funziona per tutti i flussi di concessione: credenziali del cliente (M2M), scambio di token con concessione di autorizzazione JWT (OBO) e codice di autorizzazione (accesso delegato dall'utente).

AgentCore Configurazione della chiave privata JWT in Identity

Per configurare correttamente il provider di credenziali, verifica innanzitutto i requisiti del provider di identità per l'autenticazione del client JWT con chiave privata: algoritmo di firma, chiavi pubbliche e attestazioni di asserzione del client JWT richieste.

Algoritmo di firma

Identifica l'algoritmo di firma richiesto dal tuo provider di identità per l'autenticazione del client JWT con chiave privata. Corrisponde al signingAlgorithm campo inserito privateKeyJwtConfig durante la creazione o l'aggiornamento di un provider di credenziali personalizzato OAuth 2.0.

  • Specifica lo stesso algoritmo dell'algoritmo di firma quando crei il provider di credenziali in Identity. AgentCore

  • Questo algoritmo di firma verrà utilizzato anche per scegliere una specifica di chiave KMS accettabile, descritta di seguito.

AWS Configurazione asimmetrica delle chiavi KMS

Determina in che modo il tuo provider di identità gestisce le chiavi di firma:

  • Se il tuo provider di identità accetta le chiavi pubbliche caricate, crea una coppia di chiavi KMS asimmetrica con utilizzo. SIGN_VERIFY Scegli una specifica di chiave che supporti il tuo algoritmo di firma (vedi la tabella seguente). La chiave deve trovarsi nella stessa regione del fornitore delle credenziali. Specifica l'ARN della chiave KMS durante la creazione del provider di credenziali su Identity. AgentCore

    Dopo la creazione, utilizza l'GetPublicKey API kms: per generare la chiave pubblica corrispondente. kms:GetPublicKeyrestituisce una chiave DER-encoded X.509 pubblica o SPKI. Alcuni provider di identità richiedono queste chiavi pubbliche in un formato specifico. Ad esempio, Microsoft Entra richiede un oggetto X.509 certificato, Okta richiede una chiave Web JSON, mentre Ping Identity supporta entrambi. Converti la chiave pubblica nel formato richiesto dal tuo provider di identità e caricala sul tuo provider di identità.

  • Se il tuo provider di identità crea la coppia di chiavi e fornisce il materiale relativo alla chiave privata, importalo in una chiave KMS con SIGN_VERIFY uso. Scegli una specifica di chiave compatibile con l'algoritmo di firma (vedi la tabella seguente). Per istruzioni, consulta Importazione di materiale chiave per le chiavi AWS KMS. Specifica l'ARN della chiave KMS durante la creazione del provider di credenziali su Identity. AgentCore

La signingAlgorithm scelta determina quali specifiche chiave del KMS sono accettate:

Algoritmo di firma Specifiche chiave KMS accettate

RS256

RSA_2048, RSA_3072, RSA_4096

PS256

RSA_2048, RSA_3072, RSA_4096

ES256

ECC_NIST_P256

AWS Policy della chiave KMS

Per utilizzare una chiave di firma KMS asimmetrica per Private Key JWT, la chiave deve consentire a AgentCore Identity di eseguire operazioni di firma e descrizione della chiave per conto dell'utente. Aggiungi le seguenti autorizzazioni alla policy chiave della tua chiave KMS. https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html

La kms:ViaService condizione garantisce che la chiave possa essere utilizzata solo quando la richiesta proviene da Amazon Bedrock Identity. AgentCore Cross-account le chiavi sono supportate quando la policy chiave concede l'autorizzazione kms:DescribeKey e l'identità kms:Sign chiamante. Sostituisci l'PrincipalARN con l'ARN principale dell'account che chiamerà Identity. AgentCore

{ "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 le chiavi non sono supportate. La chiave KMS deve trovarsi nella stessa AWS regione del fornitore delle credenziali.

Reclami aggiuntivi in JWT Client Assertion

Verifica se il tuo provider di identità richiede attestazioni aggiuntive nell'intestazione o nel payload dell'asserzione del client JWT JWT per l'autenticazione del client JWT con chiave privata. In tal caso, includili nei campi e all'interno. additionalHeaderClaims additionalPayloadClaims privateKeyJwtConfig

  • PerchéadditionalHeaderClaims, non ammettiamo i reclami alg otyp.

  • PeradditionalPayloadClaims, non sono consentite le affermazioni isssub,jti,exp,iat, onbf. Consentiremo l'annullamento del aud claim (impostazione predefinita sull'endpoint del token del tuo provider di identità).

Configurazione del client OAuth con provider personalizzato utilizzando l'autenticazione JWT con chiave privata

Per configurare un provider di credenziali con l'autenticazione del client JWT con chiave privata, nella AWS console, vedi Aggiungere un client OAuth utilizzando un provider personalizzato. Puoi anche configurare il provider di credenziali utilizzando la CLI. AWS

Esempio di CLI: Private Key JWT per un provider di credenziali 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" } } } } }'

Esempio CLI: Private Key JWT per un provider di credenziali Okta con 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" } } } } }'

Parametri per un client OAuth con provider personalizzato che utilizza l'autenticazione JWT con chiave privata

Parametro Obbligatorio Descrizione

clientAuthenticationMethod

Sì

Imposta su PRIVATE_KEY_JWT.

clientId

Sì

L'identificativo del cliente registrato presso il tuo provider di identità.

privateKeyJwtConfig.privateKeySource.kmsKeySource.kmsKeyArn

Sì

ARN completo della chiave di firma KMS asimmetrica. Deve essere nella stessa regione del fornitore delle credenziali. Cross-account supportata.

privateKeyJwtConfig.signingAlgorithm

Sì

Algoritmo per la firma del JWT. Uno dei:RS256,PS256,ES256.

privateKeyJwtConfig.additionalHeaderClaims

No

Dichiarazioni aggiuntive sull'intestazione JWT (mappa, max 10 voci). Usalo per passare una kid o x5t#S256 che corrisponde alla chiave registrata presso il tuo provider di identità. Non è possibile sovrascrivere alg o. typ

privateKeyJwtConfig.additionalPayloadClaims

No

Richieste aggiuntive sul payload JWT (mappa, max 10 voci). Non è possibile sovrascrivereiss,sub,, jtiexp, iat o. nbf Usalo per aggiungere attestazioni specifiche del provider o per sovrascrivere aud (endpoint del token per impostazione predefinita).

clientSecret

Campo non obbligatorio

Ometti quando usi Private Key JWT.