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
clientIdchiave 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_assertionclient_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_VERIFYScegli 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. AgentCoreDopo 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_VERIFYuso. 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 |
|---|---|
|
|
|
|
|
|
|
|
|
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 reclamialgotyp. -
Per
additionalPayloadClaims, non sono consentite le affermazioniisssub,jti,exp,iat, onbf. Consentiremo l'annullamento delaudclaim (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 |
|---|---|---|
|
|
Sì |
Imposta su |
|
|
Sì |
L'identificativo del cliente registrato presso il tuo provider di identità. |
|
|
Sì |
ARN completo della chiave di firma KMS asimmetrica. Deve essere nella stessa regione del fornitore delle credenziali. Cross-account supportata. |
|
|
Sì |
Algoritmo per la firma del JWT. Uno dei: |
|
|
No |
Dichiarazioni aggiuntive sull'intestazione JWT (mappa, max 10 voci). Usalo per passare una |
|
|
No |
Richieste aggiuntive sul payload JWT (mappa, max 10 voci). Non è possibile sovrascrivere |
|
|
Campo non obbligatorio |
Ometti quando usi Private Key JWT. |