Validation de jeton d’accès de l’API Azure pour FHIR

La manière dont l’API Azure pour FHIR valide le jeton d’accès dépend de l’implémentation et de la configuration. Dans cet article, nous allons suivre les étapes de validation, qui peuvent être utiles lors de la résolution des problèmes d’accès.

Valider le fait que le jeton ne rencontre pas de problèmes avec le fournisseur d’identité

La première étape de la validation du jeton consiste à vérifier que le jeton a été émis par le fournisseur d’identité correct et qu’il n’a pas été modifié. Le serveur FHIR sera configuré pour utiliser un fournisseur d’identité spécifique appelé l’autorité Authority. Le serveur FHIR récupère les informations sur le fournisseur d’identité à partir du point de terminaison /.well-known/openid-configuration. Lorsque vous utilisez Azure Active Directory (Azure AD), l’URL complète est :

GET https://login.microsoftonline.com/<TENANT-ID>/.well-known/openid-configuration

<TENANT-ID> est le locataire Azure AD spécifique (un ID de locataire ou un nom de domaine).

Azure AD retourne un document comme celui-ci au serveur FHIR.

{
    "authorization_endpoint": "https://login.microsoftonline.com/<TENANT-ID>/oauth2/authorize",
    "token_endpoint": "https://login.microsoftonline.com/<TENANT-ID>/oauth2/token",
    "token_endpoint_auth_methods_supported": [
        "client_secret_post",
        "private_key_jwt",
        "client_secret_basic"
    ],
    "jwks_uri": "https://login.microsoftonline.com/common/discovery/keys",
    "response_modes_supported": [
        "query",
        "fragment",
        "form_post"
    ],
    "subject_types_supported": [
        "pairwise"
    ],
    "id_token_signing_alg_values_supported": [
        "RS256"
    ],
    "http_logout_supported": true,
    "frontchannel_logout_supported": true,
    "end_session_endpoint": "https://login.microsoftonline.com/<TENANT-ID>/oauth2/logout",
    "response_types_supported": [
        "code",
        "id_token",
        "code id_token",
        "token id_token",
        "token"
    ],
    "scopes_supported": [
        "openid"
    ],
    "issuer": "https://sts.windows.net/<TENANT-ID>/",
    "claims_supported": [
        "sub",
        "iss",
        "cloud_instance_name",
        "cloud_instance_host_name",
        "cloud_graph_host_name",
        "msgraph_host",
        "aud",
        "exp",
        "iat",
        "auth_time",
        "acr",
        "amr",
        "nonce",
        "email",
        "given_name",
        "family_name",
        "nickname"
    ],
    "microsoft_multi_refresh_token": true,
    "check_session_iframe": "https://login.microsoftonline.com/<TENANT-ID>/oauth2/checksession",
    "userinfo_endpoint": "https://login.microsoftonline.com/<TENANT-ID>/openid/userinfo",
    "tenant_region_scope": "WW",
    "cloud_instance_name": "microsoftonline.com",
    "cloud_graph_host_name": "graph.windows.net",
    "msgraph_host": "graph.microsoft.com",
    "rbac_url": "https://pas.windows.net"
}

Les propriétés importantes du serveur FHIR sont jwks_uri, ce qui indique au serveur où récupérer les clés de chiffrement nécessaires pour valider la signature du jeton, et issuer, ce qui indique au serveur ce qui figurera dans la revendication de l’émetteur (iss) des jetons émis par ce serveur. Le serveur FHIR peut l’utiliser pour vérifier qu’il reçoit un jeton authentique.

Valider les revendications du jeton

Une fois que le serveur a vérifié l’authenticité du jeton, le serveur FHIR effectue valide le fait que le client dispose des revendications requises pour accéder au jeton.

Lorsque vous utilisez l’API Azure pour FHIR, le serveur valide :

  1. Le jeton a l’Audience appropriée (revendication aud).
  2. L’utilisateur ou le principal pour lequel le jeton a été émis est autorisé à accéder au plan de données du serveur FHIR. La revendication oid du jeton contient un ID d’objet d’identité qui identifie de façon unique l’utilisateur ou le principal.

Nous recommandons que le service FHIR soit configuré pour utiliser un RBAC Azure pour gérer les attributions de rôle de plan de données. Toutefois, vous pouvez également configurer le RBAC local si votre service FHIR utilise un locataire Azure AD externe ou secondaire.

Lorsque vous utilisez le serveur OSS Microsoft FHIR pour Azure, le serveur valide :

  1. Le jeton a l’Audience appropriée (revendication aud).
  2. Le jeton a un rôle dans la revendication roles qui est autorisé à accéder au serveur FHIR.

Consultez les détails sur la façon de définir des rôles sur le serveur FHIR.

Un serveur FHIR peut également valider le fait qu’un jeton d’accès a les étendues (dans la revendication de jeton scp) pour accéder à la partie de l’API FHIR à laquelle un client tente d’accéder. Actuellement, l’API Azure pour FHIR et le serveur FHIR pour Azure ne valident pas les étendues de jetons.

Étapes suivantes

Maintenant que vous savez comment effectuer la validation des jetons, vous pouvez suivre le tutoriel pour créer une application JavaScript et lire les données FHIR® (Fast Healthcare Interoperability Resources).

FHIR® est une marque déposée de HL7 utilisé avec l’autorisation de HL7.