Ověřování přístupových tokenů rozhraní Azure API for FHIR

Způsob, jakým Azure API for FHIR ověří přístupový token, bude záviset na implementaci a konfiguraci. V tomto článku si projdeme postup ověření, který může být užitečný při řešení potíží s přístupem.

Ověření, že token nemá žádné problémy se zprostředkovatelem identity

Prvním krokem při ověřování tokenu je ověření, že token vydal správný zprostředkovatel identity a že se nezměnil. Server FHIR bude nakonfigurován tak, aby používal konkrétního zprostředkovatele identity označovaného jako autorita Authority. Server FHIR načte z koncového bodu informace o zprostředkovateli /.well-known/openid-configuration identity. Pokud používáte Azure Active Directory (Azure AD), je úplná adresa URL:

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

kde <TENANT-ID> je konkrétní Azure AD tenant (id tenanta nebo název domény).

Azure AD vrátí podobný dokument na server 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"
}

Důležité vlastnosti serveru FHIR jsou jwks_uri, které serveru říkají, kde má načíst šifrovací klíče potřebné k ověření podpisu tokenu, a issuer, která serveru sděluje, co bude v deklarací identity vystavitele (iss) tokenů vydaných tímto serverem. Server FHIR ho může použít k ověření, že přijímá autentický token.

Ověření deklarací identity tokenu

Jakmile server ověří pravost tokenu, server FHIR pak bude pokračovat ověřením, že klient má požadované deklarace identity pro přístup k tokenu.

Při použití rozhraní Azure API for FHIR server ověří:

  1. Token má právo Audience (aud deklarace identity).
  2. Uživatel nebo objekt zabezpečení, pro který byl token vystaven, má povolený přístup k rovině dat serveru FHIR. Deklarace oid identity tokenu obsahuje ID objektu identity, které jednoznačně identifikuje uživatele nebo objekt zabezpečení.

Doporučujeme nakonfigurovat službu FHIR tak, aby ke správě přiřazení rolí roviny dat používala Azure RBAC . Pokud ale vaše služba FHIR používá externí nebo sekundární Azure AD tenanta, můžete také nakonfigurovat místní řízení přístupu na základě role.

Když použijete server OSS Microsoft FHIR pro Azure, server ověří:

  1. Token má právo Audience (aud deklarace identity).
  2. Token má v roles deklaraci identity roli, která má povolený přístup k serveru FHIR.

Přečtěte si podrobnosti o tom, jak definovat role na serveru FHIR.

Server FHIR může také ověřit, že přístupový token má obory (v deklaraci identity scptokenu) pro přístup k části rozhraní API FHIR, ke které se klient pokouší získat přístup. Azure API for FHIR a server FHIR pro Azure v současné době neověřují obory tokenů.

Další kroky

Teď, když víte, jak projít ověřováním tokenů, můžete absolvovat kurz vytvoření aplikace JavaScriptu a přečíst si data FHIR® (Fast Healthcare Interoperability Resources).

FHIR® je registrovaná ochranná známka hl7 a používá se se svolením HL7.