Konfigurace identity Azure Active Directory pro Azure API for FHIR

Když pracujete se zdravotnickými daty, je důležité zajistit, aby data byla zabezpečená a nemohli k ní přistupovat neoprávnění uživatelé nebo aplikace. Servery FHIR používají K zajištění tohoto zabezpečení dat OAuth 2.0 . Azure API for FHIR je zabezpečené pomocí Azure Active Directory, což je příklad zprostředkovatele identity OAuth 2.0. Tento článek obsahuje přehled autorizace serveru FHIR a kroky potřebné k získání tokenu pro přístup k serveru FHIR. I když tyto kroky platí pro všechny servery FHIR a všechny zprostředkovatele identity, v tomto článku vás provedeme rozhraním Azure API for FHIR jako serverem FHIR a Službou Azure Active Directory (Azure AD) jako naším zprostředkovatelem identity.

Přehled řízení přístupu

Aby klientská aplikace mohla přistupovat k rozhraní Azure API for FHIR, musí předložit přístupový token. Přístupový token je podepsaná kolekce vlastností (deklarací identity) s kódováním Base64 , která předává informace o identitě a rolích klienta a oprávněních udělených klientovi.

Existuje mnoho způsobů, jak token získat, ale rozhraní Azure API for FHIR je jedno, jak se token získá, pokud se jedná o vhodně podepsaný token se správnými deklaracemi identity.

Například při použití toku autorizačního kódu prochází přístup k serveru FHIR následujícími čtyřmi kroky:

Autorizace FHIR

  1. Klient odešle požadavek koncovému /authorize bodu Azure AD. Azure AD přesměruje klienta na přihlašovací stránku, kde se uživatel ověří pomocí příslušných přihlašovacích údajů (například uživatelského jména a hesla nebo dvojúrovňového ověřování). Projděte si podrobnosti o získání autorizačního kódu. Po úspěšném ověření se klientovi vrátí autorizační kód . Azure AD povolí vrácení tohoto autorizačního kódu pouze na registrovanou adresu URL odpovědi nakonfigurovanou v registraci klientské aplikace.
  2. Klientská aplikace vymění autorizační kód za přístupový token v koncovém /token bodu Azure AD. Když požádáte o token, klientská aplikace možná bude muset zadat tajný klíč klienta (heslo aplikace). Projděte si podrobnosti o získání přístupového tokenu.
  3. Klient odešle do azure API for FHIR požadavek, například GET /Patient, aby prohledali všechny pacienty. Když klient odešle požadavek, zahrne přístupový token do hlavičky požadavku HTTP, například Authorization: Bearer eyJ0e..., kde eyJ0e... představuje přístupový token kódovaný jako Base64.
  4. Rozhraní Azure API for FHIR ověří, že token obsahuje příslušné deklarace identity (vlastnosti v tokenu). Pokud se vše ověří, požadavek se dokončí a klientovi se vrátí sada FHIR s výsledky.

Je důležité si uvědomit, že rozhraní Azure API for FHIR není součástí ověřování přihlašovacích údajů uživatele a nevydává token. Ověřování a vytvoření tokenu provádí Azure AD. Rozhraní Azure API for FHIR jednoduše ověří, že je token správně podepsaný (je autentický) a že má příslušné deklarace identity.

Struktura přístupového tokenu

Vývoj aplikací FHIR® (Fast Healthcare Interoperability Resources) často zahrnuje ladění problémů s přístupem. Pokud je klientovi odepřen přístup k rozhraní Azure API for FHIR, je užitečné porozumět struktuře přístupového tokenu a způsobu jeho dekódování za účelem kontroly obsahu (deklarací identity) tokenu.

Servery FHIR obvykle očekávají json webový token (JWT, někdy vyslovuje "jot"). Skládá se ze tří částí:

Část 1: Hlavička, která by mohla vypadat takto:

    {
      "alg": "HS256",
      "typ": "JWT"
    }

Část 2: Datová část (deklarace identity), například:

    {
     "oid": "123",
     "iss": "https://issuerurl",
     "iat": 1422779638,
     "roles": [
        "admin"
      ]
    }

Část 3: Podpis, který se vypočítá zřetězením zakódovaného obsahu hlavičky a datové části v kódování Base64 a výpočtem jejich kryptografické hodnoty hash na základě algoritmu (alg) zadaného v hlavičce. Server bude moct získat veřejné klíče od zprostředkovatele identity a ověřit, že tento token vydal konkrétní zprostředkovatel identity a že s ním nebylo manipulováno.

Úplný token se skládá z verzí těchto tří segmentů s kódováním Base64 (ve skutečnosti s kódováním Url Base64). Tři segmenty jsou zřetězeny a odděleny tečkou ()..

Příklad tokenu je zobrazený takto:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJvaWQiOiIxMjMiLCAiaXNzIjoiaHR0cHM6Ly9pc3N1ZXJ1cmwiLCJpYXQiOjE0MjI3Nzk2MzgsInJvbGVzIjpbImFkbWluIl19.gzSraSYS8EXBxLN_oWnFSRgCzcmJmMjLiuyu5CSpyHI

Token lze dekódovat a zkontrolovat pomocí nástrojů, jako https://jwt.msje . Výsledkem dekódování tokenu je:

{
  "alg": "HS256",
  "typ": "JWT"
}.{
  "oid": "123",
  "iss": "https://issuerurl",
  "iat": 1422779638,
  "roles": [
    "admin"
  ]
}.[Signature]

Získání přístupového tokenu

Jak už bylo zmíněno, existuje několik způsobů, jak získat token z Azure AD. Podrobně jsou popsány v dokumentaci Azure AD pro vývojáře.

Použijte některý z následujících ověřovacích protokolů:

Existují i další varianty (například kvůli toku) pro získání tokenu. Podrobnosti najdete v dokumentaci k Azure AD. Při použití rozhraní Azure API for FHIR existuje několik zástupců pro získání přístupového tokenu (například pro účely ladění) pomocí Azure CLI.

Další kroky

V tomto dokumentu jste se seznámili se základními koncepty zabezpečení přístupu k rozhraní Azure API for FHIR pomocí Azure AD. Informace o nasazení služby Azure API for FHIR najdete v tématu

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