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á.
Usando autorizadores do AWS Lambda

O fluxo de autenticação consiste nas seguintes etapas:
Solicitação HTTP com token de portador para endpoint DICOMweb
AWS HealthImaging verifica a expiração do token
Encaminhar solicitação para o autorizador Lambda
O Lambda valida o token com o provedor de identidade (IdP)
Lambda retorna a função IAM
Avaliação da política e autenticação do usuário concluídas
Pré-requisitos
1. Configuração do Lambda Authorizer
Crie um autorizador que aceite AuthInput e devolva AuthResult
Valida BearerToken (assinatura, expiração, escopos, emissor e regras de negócios)
Retorna o ARN da função do IAM com as permissões de operação necessárias DICOMweb
Deve responder em ≤ 1 segundo (configurar a simultaneidade provisionada)
Implemente a extração de tokens:
// in Node.js
export const handler = async (event) => {
try {
const token = event.bearerToken;
const operation = event.operation;
}
}
2. Configuração do Datastore
Ative o recurso fornecendo lambdaAuthorizerArn no momento da criação
nota
Sua conta da AWS é cobrada pelas invocações e pela duração do Lambda. Para obter mais informações, consulte Definição de preço do AWS Lambda.
Detalhes do processo de autorização
Regras de validação de token
HealthImaging avalia as seguintes reivindicações de token:
exp
— Deve ser posterior à hora atual em UTCnbf
— Deve ser antes da hora atual em UTCiat
— Deve ser antes da hora atual em UTC e NÃO antes de 12 horas antes (vida útil máxima do token)
Esquemas de eventos e respostas
O AHI invoca sua função com a seguinte entrada e espera a seguinte saída.
Entrada do autorizador
{
"datastoreId": "{datastore id}",
"operation": "{Healthimaging API name e.g. GetDICOMInstance}",
"bearerToken": "{access token}"
}
Saída do autorizador
{
"isTokenValid": {true or false},
"roleArn": "{role arn or empty string meaning to deny the request explicitly}"
}
Processamento de solicitações
Tratamento inicial da solicitação:
Se não houver autorização: cabeçalho do portador → a solicitação prossegue para a autenticação SigV4
Se o token do portador estiver presente:
Resolve o armazenamento de dados LambdaAuthorizerArn
Invoca o autorizador usando sessões de acesso direto (FAS)
Processo de autorização Lambda:
Recebe AuthInput com DatastoreID, operação e BearerToken
A validação deve ser concluída em 1 segundo
Devoluções AuthResult com status de validação e ARN da função
Fluxo de implementação
Fluxo de autenticação no lado do cliente
Autenticação do usuário: direcione o usuário para o endpoint de autorização do IdP
Aquisição de token: código de autorização de troca por tokens de ID e acesso (JWT)
Chamada de API: incluir token de acesso no cabeçalho HTTP Authorization Bearer
Validação de token: processo de validação completo por um HealthImaging autorizador Lambda
Etapas de configuração
Implementação do Lambda Authorizer
Implementar AuthInput/AuthResult interface
Valide o token (assinatura, expiração, emissor, público, escopos)
Decisão de devolução e ARN da função do IAM
Configuração do IAM
Crie uma política com permissões mínimas de DICOMweb operação
Crie uma função com política de confiança para
medical-imaging.
region
.amazonaws.comConfigurar permissões de execução do Lambda
Adicionar política de recursos com AllowHealthLakeInvocation declaração para o ARN do armazenamento de dados
O autorizador deve ter a seguinte declaração 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 a função do IAM retornada pelo auth lambda, ela deve ter a seguinte política de relação de confiança:
{
"Effect": "Allow",
"Principal": {
"Service": "medical-imaging.region
.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
Configuração de concorrência
Configure a simultaneidade provisionada para ≤ 1 segundo de SLO
Implemente mitigações de partida a frio, se necessário
Modelo de autorização Lambda
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}` : ""
};
}
Validação final por HealthImaging
Depois de receber AuthResult, HealthImaging:
Verifica todas as declarações de token (nbf, exp, iat)
Valida o formato ARN da função
Assume o papel
Assina a solicitação original com o SigV4 em nome do usuário
Processa a DICOMweb solicitação
Exceções
Condição | Resposta AHI |
---|---|
O Lambda Authorizer não existe ou é inválido | 424 Configuração incorreta do autorizador |
Autorizador encerrado devido a falha na execução | 424 Falha no autorizador |
Qualquer outro erro não mapeado do autorizador | 424 Falha no autorizador |
O autorizador retornou uma resposta inválida/mal formada | 424 Configuração incorreta do autorizador |
O autorizador foi executado por mais de 1s | Tempo limite do autorizador 408 |
O token está expirado ou é inválido | 403 Token inválido ou expirado |
O AHI não pode federar a função IAM retornada devido à configuração incorreta do autorizador | 424 Configuração incorreta do autorizador |
O autorizador retornou uma função vazia | 403 Acesso negado |
A função retornada não pode ser chamada (configuração incorreta de assume-role/trust) | 424 Configuração incorreta do autorizador |
A taxa de solicitação excede os limites do DICOMweb gateway | 4.29 Solicitações demais |
Armazenamento de dados, função de retorno ou autorizador entre regiões Account/Cross | 424 Autorizador: Acesso entre regiões Account/Cross |