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é :
-
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.
-
L'en-tête suit généralement le format :
Authorization: Bearer <token>.
-
-
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 :
-
iat(Émis à) : HealthImaging vérifie si le délai d'émission du jeton est dans les limites acceptables. -
exp(Heure d'expiration) : HealthImaging vérifie que le jeton n'a pas expiré. -
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.
-
-
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.
-
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.
-
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.
-
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
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