Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Autenticación de cliente JWT con clave privada
Con la clave privada JWT, AgentCore Identity se autentica en el punto final del token de un proveedor de identidades descendente mediante una aserción de cliente de JWT firmada, según la sección 2.2 de la RFC 7523, en lugar de un secreto de cliente. La clave privada nunca sale AWS del Servicio de administración de claves (KMS). AgentCore La identidad firma cada afirmación mediantekms:Sign. Su proveedor de identidad posee la clave pública correspondiente utilizada para autenticar la afirmación del cliente y devuelve un token de acceso.
Este método elimina los secretos compartidos entre AgentCore Identity y tu servidor de autorización y los reemplaza por pares de claves asimétricas bajo tu control total.
Cómo funciona la autenticación de clientes JWT con clave privada
-
Configura un proveedor de credenciales de OAuth 2.0 personalizado con tu
clientIdARN de una clave de firma de KMS asimétrica y el mismo algoritmo de firma que requiere tu proveedor de identidad para la autenticación de un cliente de JWT con clave privada. -
Cuando AgentCore Identity necesita un token para los flujos de código de máquina a máquina (M2M), en nombre de uno (OBO) o de autorización, crea una afirmación de cliente de JWT de corta duración. La afirmación contiene las afirmaciones requeridas por tu proveedor de identidad.
-
AgentCore Luego, Identity firma la aserción mediante AWS KMS, con la clave de firma asimétrica ARN proporcionada.
-
La aserción firmada se envía al punto final del token tal y como se indica.
client_assertionclient_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer -
El servidor de autorización valida la afirmación comparándola con la clave pública que has registrado y emite el token solicitado.
La clave privada JWT está disponible en el proveedor de credenciales OAuth 2.0 personalizado (). CustomOauth2 Funciona para todos los flujos de concesión: las credenciales de cliente (M2M), el intercambio de fichas con la autorización de JWT (OBO) y el código de autorización (acceso delegado por el usuario).
Configuración de la clave privada JWT en Identity AgentCore
Para configurar correctamente el proveedor de credenciales, primero verifique los requisitos de su proveedor de identidad para la autenticación de los clientes de JWT con clave privada: algoritmo de firma, claves públicas y solicitudes de confirmación de los clientes de JWT requeridas.
Algoritmo de firma
Identifique el algoritmo de firma que su proveedor de identidad requiere para la autenticación del cliente JWT con clave privada. Esto corresponde al signingAlgorithm campo que aparece privateKeyJwtConfig al crear o actualizar un proveedor de credenciales personalizado de OAuth 2.0.
-
Especifique el mismo algoritmo que el algoritmo de firma al crear el proveedor de credenciales en Identity. AgentCore
-
Este algoritmo de firma también se utilizará para elegir una especificación de clave de KMS aceptable, tal como se detalla a continuación.
AWS Configuración de clave asimétrica de KMS
Determine cómo su proveedor de identidad administra las claves de firma:
-
Si tu proveedor de identidad acepta las claves públicas cargadas, crea un par de claves de KMS asimétricas con el
SIGN_VERIFYuso. Elige una especificación de clave que sea compatible con tu algoritmo de firma (consulta la tabla siguiente). La clave debe estar en la misma región que el proveedor de credenciales. Especifique el ARN de la clave de KMS al crear el proveedor de credenciales en Identity. AgentCoreTras la creación, utilice la GetPublicKey API kms: para generar la clave pública correspondiente.
kms:GetPublicKeydevuelve una clave DER-encoded X.509 pública o SPKI. Algunos proveedores de identidad requieren estas claves públicas en un formato específico. Por ejemplo, Microsoft Entra requiere un objeto de X.509 certificado, Okta requiere una clave web JSON y Ping Identity admite ambas. Convierte la clave pública al formato requerido por tu proveedor de identidad y súbela a tu proveedor de identidad. -
Si tu proveedor de identidad crea el par de claves y proporciona el material de la clave privada, impórtalo a una clave de KMS con el
SIGN_VERIFYuso. Elige una especificación de clave compatible con el algoritmo de firma (consulta la tabla siguiente). Para obtener instrucciones, consulte Importación del material clave para las claves de AWS KMS. Especifique el ARN de la clave de KMS al crear el proveedor de credenciales en AgentCore Identity.
El signingAlgorithm que elija determina qué especificaciones clave de KMS se aceptan:
| Algoritmo de firma | Especificaciones clave de KMS aceptadas |
|---|---|
|
|
|
|
|
|
|
|
|
AWS Política de claves de KMS
Para usar una clave de firma de KMS asimétrica para la clave privada JWT, tu clave debe permitir a AgentCore Identity realizar las operaciones de firma y descripción de claves en tu nombre. Añade los siguientes permisos a la política de claves de tu clave de KMS.
La kms:ViaService condición garantiza que la clave solo se pueda usar cuando la solicitud se origina a través de Amazon Bedrock AgentCore Identity. Cross-account se admiten las claves cuando la política de claves las concede kms:DescribeKey y kms:Sign para la identidad que realiza la llamada. Sustituya el Principal ARN por el ARN raíz de la cuenta que llamará a AgentCore 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 no se admiten las claves. La clave de KMS debe estar en la misma AWS región que el proveedor de credenciales.
Reclamaciones adicionales en JWT Client Assertion
Comprueba si tu proveedor de identidad requiere notificaciones adicionales en el encabezado o en la carga útil de la aserción del cliente de JWT para la autenticación de los clientes de JWT con clave privada. Si es así, inclúyelas en los campos y que contieneadditionalHeaderClaims. additionalPayloadClaims privateKeyJwtConfig
-
Pues
additionalHeaderClaims, no permitimos las reclamacionesalgotyp. -
Pues
additionalPayloadClaims, no permitimos las reclamacionesiss,sub,jtiexp,iat, onbf. Permitiremos que se anule laaudreclamación (el valor predeterminado es el punto final del token de tu proveedor de identidad).
Configuración del cliente OAuth con un proveedor personalizado mediante la autenticación JWT de clave privada
Para configurar un proveedor de credenciales con la autenticación de cliente JWT de clave privada, en la AWS consola, consulte Agregar un cliente OAuth mediante un proveedor personalizado. También puedes configurar el proveedor de credenciales mediante la CLI. AWS
Ejemplo de CLI: JWT de clave privada para un proveedor de credenciales de 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" } } } } }'
Ejemplo de CLI: JWT de clave privada para un proveedor de credenciales de 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" } } } } }'
Parámetros para un cliente de OAuth con un proveedor personalizado que utiliza la autenticación JWT de clave privada
| Parámetro | Obligatorio | Descripción |
|---|---|---|
|
|
Sí |
Configurado en |
|
|
Sí |
El identificador de cliente registrado en tu proveedor de identidad. |
|
|
Sí |
ARN completo de la clave de firma asimétrica de KMS. Debe estar en la misma región que el proveedor de credenciales. Cross-account compatible. |
|
|
Sí |
Algoritmo para firmar el JWT. Uno de: |
|
|
No |
Reclamaciones adicionales del encabezado de JWT (mapa, máximo 10 entradas). Utilízala para pasar una |
|
|
No |
Solicitudes adicionales de carga útil de JWT (mapa, máximo 10 entradas). No se puede anular |
|
|
No obligatorio |
Omita cuando utilice la clave privada JWT. |