Verificação personalizada de tokens com autorizadores Lambda - AWS HealthImaging

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á.

Verificação personalizada de tokens com autorizadores Lambda

HealthImaging implementa o suporte do OIDC por meio de uma arquitetura que usa autorizadores Lambda, permitindo que os clientes implementem sua própria lógica de verificação de token. Esse design oferece controle flexível sobre como os tokens são validados e como as decisões de acesso são aplicadas, acomodando um cenário diversificado de provedores de identidade compatíveis com OIDC (IdPs) e vários métodos de verificação de tokens.

Fluxo de autenticação

Veja como a autenticação funciona em alto nível:

  1. O cliente chama a DICOMweb API: seu aplicativo se autentica com o provedor de identidade OIDC escolhido e recebe um token de ID assinado (JWT). Para cada solicitação DICOMweb HTTP, o cliente deve incluir o token de acesso OIDC no cabeçalho de autorização (normalmente um token de portador). Antes que a solicitação chegue aos seus dados, HealthImaging extrai esse token da solicitação recebida e chama um autorizador Lambda que você configura.

    1. O cabeçalho normalmente segue o formato:Authorization: Bearer <token>.

  2. Verificação inicial: HealthImaging verifica as reivindicações do token de acesso para rejeitar rapidamente quaisquer tokens obviamente inválidos ou expirados sem invocar a função Lambda desnecessariamente. HealthImaging executa uma verificação inicial de determinadas declarações padrão no token de acesso antes de invocar o autorizador Lambda:

    1. iat(Emitido em): HealthImaging verifica se o tempo de emissão do token está dentro dos limites aceitáveis.

    2. exp(Tempo de expiração): HealthImaging verifica se o token não expirou.

    3. nbf(Não antes da hora): Se presente, HealthImaging garante que o token não esteja sendo usado antes do horário de início válido.

  3. HealthImaging invoca um autorizador do Lambda: se a verificação inicial da solicitação for aprovada, HealthImaging delegará a verificação adicional do token à função autorizadora do Lambda configurada pelo cliente. HealthImaging passa o token extraído e outras informações relevantes da solicitação para a função Lambda. A função Lambda verifica a assinatura e as declarações do token.

  4. Verifique com um provedor de identidade: o Lambda contém um código personalizado que verifica a assinatura do token de ID, realiza uma verificação mais abrangente do token (por exemplo, emissor, público, declarações personalizadas) e valida essas declarações em relação ao IdP quando necessário.

  5. O autorizador retorna uma política de acesso: após a verificação bem-sucedida, a função Lambda determina as permissões apropriadas para o uso autenticado. Em seguida, o autorizador do Lambda retorna o nome do recurso da Amazon (ARN) de uma função do IAM que representa o conjunto de permissões a serem concedidas.

  6. Execução da solicitação: se a função assumida do IAM tiver as permissões necessárias, HealthImaging continue com a devolução do DICOMWeb recurso solicitado. Se as permissões forem insuficientes, HealthImaging nega a solicitação e retorna um erro de resposta de erro apropriado (ou seja, 403 Forbidden).

nota

A função lambda do autorizador não é gerenciada pelo serviço da AWS HealthImaging . Ele é executado em sua AWS conta. Os clientes são cobrados pela invocação da função e pelo tempo de execução separadamente de suas HealthImaging cobranças.

Visão geral da arquitetura

Diagrama mostrando o fluxo de trabalho: o cliente envia o token, o autorizador Lambda valida, processa a solicitação HealthImaging

Fluxo de trabalho de autenticação OIDC com o autorizador Lambda

Pré-requisitos

Requisitos de token de acesso

HealthImaging exige que o token de acesso esteja no formato JSON Web Token (JWT). Muitos provedores de identidade (IDPs) oferecem esse formato de token nativamente, enquanto outros permitem que você selecione ou configure o formulário do token de acesso. Certifique-se de que seu IDP escolhido possa emitir tokens JWT antes de prosseguir com a integração.

Formato do token

O token de acesso deve estar no formato JWT (JSON Web Token)

Declarações necessárias
exp(Tempo de expiração)

Reivindicação obrigatória que especifica quando o token se torna inválido.

  • Deve ser posterior à hora atual em UTC

  • Representa quando o token se torna inválido

iat(Emitido em)

Reivindicação obrigatória que especifica quando o token foi emitido.

  • Deve ser antes da hora atual em UTC

  • NÃO deve ser antes de 12 horas antes da hora atual em UTC

  • Isso efetivamente impõe uma vida útil máxima do token de 12 horas.

nbf(Não antes do tempo)

Declaração opcional que especifica a primeira vez em que o token pode ser usado.

  • Se presente, será avaliado por HealthImaging

  • Especifica o tempo antes do qual o token não deve ser aceito

Requisitos de tempo de resposta do autorizador Lambda

HealthImaging impõe requisitos rígidos de tempo para as respostas do autorizador Lambda para garantir o desempenho ideal da API. Sua função Lambda deve retornar em 1 segundo.

Práticas recomendadas

Otimize a verificação de tokens

  • Armazene JWKS (JSON Web Key Sets) quando possível

  • Armazene tokens de acesso válidos em cache quando possível

  • Minimize as chamadas de rede para seu provedor de identidade

  • Implemente uma lógica eficiente de validação de tokens

Configuração Lambda

  • As funções baseadas em Python e Node.js normalmente inicializam mais rápido

  • Reduza a quantidade de bibliotecas externas a serem carregadas

  • Configure a alocação de memória adequada para garantir um desempenho consistente

  • Monitore os tempos de execução usando CloudWatch métricas

Ativação da autenticação OIDC

  • A autenticação OIDC pode ser ativada ao criar um novo armazenamento de dados

  • A ativação do OIDC para armazenamentos de dados existentes não é suportada pela API

  • Para habilitar o OIDC em um armazenamento de dados existente, os clientes devem entrar em contato com o Support AWS