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.
Uso de autorizadores de AWS Lambda

El flujo de autenticación consta de los siguientes pasos:
Solicitud HTTP con un token de portador al punto final DICOMweb
AWS HealthImaging comprueba la caducidad del token
Reenviar la solicitud al autorizador de Lambda
Lambda valida el token con el proveedor de identidad (IdP)
Lambda devuelve la función de IAM
Se han completado la evaluación de la política y la autenticación del usuario
Requisitos previos
1. Configuración del autorizador Lambda
Cree un autorizador que acepte y devuelva AuthInput AuthResult
Valida BearerToken (firma, caducidad, alcances, emisor y reglas comerciales)
Devuelve el ARN del rol de IAM con DICOMweb los permisos de operación necesarios
Debe responder en ≤ 1 segundo (configurar la simultaneidad aprovisionada)
Implemente la extracción de tokens:
// in Node.js
export const handler = async (event) => {
try {
const token = event.bearerToken;
const operation = event.operation;
}
}
2. Configuración del almacén de datos
Habilite la función lambdaAuthorizerArn proporcionándola en el momento de la creación
nota
A su cuenta de AWS se le facturan las invocaciones a Lambda y su duración. Para obtener más información, consulte los precios de AWS Lambda.
Detalles del proceso de autorización
Reglas de validación de tokens
HealthImaging evalúa las siguientes afirmaciones sobre los tokens:
exp
— Debe ser posterior a la hora actual en UTCnbf
— Debe ser anterior a la hora actual en UTCiat
— Debe ser anterior a la hora actual en UTC y NO antes de 12 horas antes (duración máxima del token)
Esquemas de eventos y respuestas
AHI invoca su función con la siguiente entrada y espera la siguiente salida.
Entrada del autorizador
{
"datastoreId": "{datastore id}",
"operation": "{Healthimaging API name e.g. GetDICOMInstance}",
"bearerToken": "{access token}"
}
Salida del autorizador
{
"isTokenValid": {true or false},
"roleArn": "{role arn or empty string meaning to deny the request explicitly}"
}
Procesamiento de solicitudes
Gestión inicial de la solicitud:
Si no hay autorización: encabezado del portador → la solicitud pasa a la autenticación SigV4
Si el token Bearer está presente:
Resuelve los almacenes de datos LambdaAuthorizerArn
Invoca al autorizador mediante sesiones de acceso directo (FAS)
Proceso de autorización de Lambda:
Recibe AuthInput con DataStoreID, operation y bearerToken
Debe completar la validación en 1 segundo
Regresa AuthResult con el estado de validación y el ARN del rol
Flujo de implementación
Flujo de autenticación en el lado del cliente
Autenticación del usuario: dirija al usuario al punto final de autorización del IdP
Adquisición de tokens: intercambie el código de autorización por los tokens de identificación y acceso (JWT)
Llamada a la API: incluya el token de acceso en el encabezado del portador de autorización HTTP
Validación de token: proceso de validación completo realizado por un HealthImaging autorizador de Lambda
Pasos de configuración
Implementación de Lambda Authorizer
Implemente la interfaz AuthInput/AuthResult
Valide el token (firma, caducidad, emisor, audiencia, ámbitos)
Decisión de devolución y ARN del rol de IAM
Configuración de IAM
Cree una política con permisos de DICOMweb operación mínimos
Cree un rol con una política de confianza para
medical-imaging.
region
.amazonaws.comConfigurar los permisos de ejecución de Lambda
Agregue una política de recursos con una AllowHealthLakeInvocation declaración para el ARN del almacén de datos
El autorizador debe tener la siguiente declaración de política de recursos:
{
"Sid": "health-imaging",
"Effect": "Allow",
"Principal": {
"Service": "medical-imaging.region.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:region
:123456789012:function:LambdaAuthorizerName"
}
Para el rol de IAM que devolvió la lambda de autenticación, debe tener la siguiente política de relación de confianza:
{
"Effect": "Allow",
"Principal": {
"Service": "medical-imaging.region
.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
Configuración de simultaneidad
Configure la simultaneidad aprovisionada para un SLO de ≤ 1 segundo
Implemente mitigaciones de arranque en frío si es necesario
Plantilla Lambda Authorizer
import jwt from 'jsonwebtoken';
import jwksClient from 'jwks-rsa';
const CACHE_TTL = 10 * 60 * 1000;
const client = jwksClient({
jwksUri: '{Jwks Url}',
cache: true,
cacheMaxEntries: 5,
cacheMaxAge: 600000,
rateLimit: true,
jwksRequestsPerMinute: 10
});
export const handler = async (event) => {
try {
console.log(event);
const token = event.bearerToken;
const decoded = jwt.decode(token, { complete: true });
if (!decoded || !decoded.header.kid) {
console.log('Invalid token structure');
return generatePolicy(null, false);
}
const key = await client.getSigningKey(decoded.header.kid);
const signingKey = key.getPublicKey();
const payload = jwt.verify(token, signingKey, {
issuer: '{issuer to be verified}',
algorithms: ['RS256'],
// Additional verification parameters as needed
});
return generatePolicy(payload.sub, true);
} catch (error) {
console.error('Authorization error:', error);
return generatePolicy(null, false);
}
};
function generatePolicy(user, isValid) {
return {
isTokenValid: isValid,
roleArn: user ? `arn:aws:iam::123456789012:role/${user}` : ""
};
}
Validación final realizada por HealthImaging
Después de recibir AuthResult, HealthImaging:
Verifica todas las afirmaciones sobre los tokens (nbf, exp, iat)
Valida el formato ARN del rol
Asume el rol
Firma la solicitud original con SiGv4 en nombre del usuario
Procesa la solicitud DICOMweb
Excepciones
Condición | Respuesta AHI |
---|---|
El autorizador Lambda no existe o no es válido | 424 Authorizer está mal configurado |
El autorizador se canceló debido a un error de ejecución | 424 Falló el autorizador |
¿Algún otro error de autorizador no mapeado | Error en el autorizador 424 |
El autorizador devolvió una respuesta inválida o mal formada | 424 Configuración errónea del autorizador |
Authorizer ejecutó más de 1 segundo | Tiempo de espera del autorizador 408 |
El token ha caducado o no es válido | 403 El token no es válido o ha caducado |
AHI no puede federar el rol de IAM devuelto debido a una mala configuración del autorizador | 424 Configuración errónea del autorizador |
El autorizador devolvió un rol vacío | 403 Acceso denegado |
El rol devuelto no es invocable (error de configuración de assume-role/trust) | 424 Configuración errónea del autorizador |
La tasa de solicitudes supera DICOMweb los límites de Gateway | 429 Demasiadas solicitudes |
Almacén de datos, rol de devolución o autorizador entre regiones Account/Cross | 424 Autoriza el acceso entre regiones Account/Cross |