Vérification des jetons personnalisés avec les autorisateurs Lambda - AWS HealthImaging

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Vérification des jetons personnalisés avec les autorisateurs Lambda

HealthImaging implémente le support OIDC via une architecture qui utilise des autorisateurs Lambda, permettant aux clients de mettre en œuvre leur propre logique de vérification des jetons. Cette conception vous permet de contrôler de manière flexible la manière dont les jetons sont validés et la manière dont les décisions d'accès sont appliquées, en s'adaptant à un paysage diversifié de fournisseurs d'identité compatibles OIDC (IdPs) et à différentes méthodes de vérification des jetons.

Flux d'authentification

Voici comment fonctionne l'authentification à un niveau élevé :

  1. Le client appelle l' DICOMweb API : votre application s'authentifie auprès du fournisseur d'identité OIDC que vous avez choisi et reçoit un jeton d'identification signé (JWT). Pour chaque requête DICOMweb HTTP, le client doit inclure le jeton d'accès OIDC dans l'en-tête d'autorisation (généralement un jeton porteur). Avant que la demande n'atteigne vos données, HealthImaging extrait ce jeton de la demande entrante et appelle un autorisateur Lambda que vous configurez.

    1. L'en-tête suit généralement le format :Authorization: Bearer <token>.

  2. Vérification initiale : HealthImaging vérifie les demandes de jetons d'accès afin de rejeter rapidement tout jeton manifestement invalide ou expiré sans invoquer inutilement la fonction Lambda. HealthImaging effectue une vérification initiale de certaines revendications standard dans le jeton d'accès avant d'appeler l'autorisateur Lambda :

    1. iat(Émis à) : HealthImaging vérifie si le délai d'émission du jeton est dans les limites acceptables.

    2. exp(Heure d'expiration) : HealthImaging vérifie que le jeton n'a pas expiré.

    3. nbf(Pas avant l'heure) : S'il est présent, HealthImaging garantit que le jeton n'est pas utilisé avant son heure de début valide.

  3. HealthImaging invoque un autorisateur Lambda : si la vérification initiale de la demande est réussie HealthImaging , la vérification supplémentaire des jetons est déléguée à la fonction d'autorisation Lambda configurée par le client. HealthImaging transmet le jeton extrait et les autres informations de demande pertinentes à la fonction Lambda. La fonction Lambda vérifie la signature et les allégations du jeton.

  4. Vérifiez auprès d'un fournisseur d'identité : le Lambda contient un code personnalisé qui vérifie la signature du jeton d'identification, effectue une vérification plus approfondie du jeton (par exemple, émetteur, public, réclamations personnalisées) et valide ces réclamations auprès de l'IdP si nécessaire.

  5. Authorizer renvoie une politique d'accès : une fois la vérification réussie, la fonction Lambda détermine les autorisations appropriées pour l'utilisation authentifiée. L'autorisateur Lambda renvoie ensuite le nom de ressource Amazon (ARN) d'un rôle IAM qui représente l'ensemble des autorisations à accorder.

  6. Exécution de la demande : si le rôle IAM assumé dispose des autorisations nécessaires, HealthImaging procède au renvoi de la DICOMWeb ressource demandée. Si les autorisations sont insuffisantes, HealthImaging refuse la demande et renvoie une erreur de réponse d'erreur appropriée (c'est-à-dire 403 Forbidden).

Note

La fonction lambda d'autorisation n'est pas gérée par le service AWS HealthImaging . Il s'exécute sur votre AWS compte. Les clients sont facturés pour le temps d'invocation et d'exécution de la fonction séparément de leurs HealthImaging frais.

Présentation de l'architecture

Schéma illustrant le flux de travail : le client envoie un jeton, l'autorisateur Lambda valide, traite la demande HealthImaging

Flux de travail d'authentification OIDC avec autorisateur Lambda

Prérequis

Exigences relatives aux jetons d'accès

HealthImaging nécessite que le jeton d'accès soit au format JSON Web Token (JWT). De nombreux fournisseurs d'identité (IDPs) proposent ce format de jeton de manière native, tandis que d'autres vous permettent de sélectionner ou de configurer le formulaire de jeton d'accès. Assurez-vous que l'IDP que vous avez choisi peut émettre des jetons JWT avant de procéder à l'intégration.

Format du jeton

Le jeton d'accès doit être au format JWT (JSON Web Token)

Réclamations requises
exp(Heure d'expiration)

Demande obligatoire indiquant quand le jeton devient invalide.

  • Doit être postérieure à l'heure actuelle en UTC

  • Représente le moment où le jeton devient invalide

iat(Délivré à)

Demande obligatoire indiquant la date d'émission du jeton.

  • Doit être antérieur à l'heure actuelle en UTC

  • NE doit PAS être antérieur à 12 heures avant l'heure actuelle en UTC

  • Cela permet d'appliquer efficacement une durée de vie maximale du jeton de 12 heures

nbf(Pas avant l'heure)

Demande facultative indiquant la première heure à laquelle le jeton peut être utilisé.

  • S'il est présent, sera évalué par HealthImaging

  • Spécifie le délai avant lequel le jeton ne doit pas être accepté

Exigences relatives au temps de réponse de l'autorisateur Lambda

HealthImaging applique des exigences temporelles strictes pour les réponses de l'autorisateur Lambda afin de garantir des performances d'API optimales. Votre fonction Lambda doit être renvoyée dans un délai d'une seconde.

Bonnes pratiques

Optimisez la vérification des jetons

  • Mettez en cache les JWKS (ensembles de clés Web JSON) lorsque cela est possible

  • Mettez en cache les jetons d'accès valides lorsque cela est possible

  • Minimisez les appels réseau vers votre fournisseur d'identité

  • Mettre en œuvre une logique de validation des jetons efficace

Configuration Lambda

  • Les fonctions basées sur Python et Node.js s'initialisent généralement plus rapidement

  • Réduire le nombre de bibliothèques externes à charger

  • Configurez l'allocation de mémoire appropriée pour garantir des performances constantes

  • Surveillez les temps d'exécution à l'aide de CloudWatch métriques

Activation de l'authentification OIDC

  • L'authentification OIDC ne peut être activée que lors de la création d'une nouvelle banque de données

  • L'activation de l'OIDC pour les banques de données existantes n'est pas prise en charge par l'API

  • Pour activer OIDC sur une banque de données existante, les clients doivent contacter le Support AWS