Azure Active Directory-identitetskonfiguration för Azure API för FHIR

När du arbetar med sjukvårdsdata är det viktigt att se till att data är säkra och att de inte kan nås av obehöriga användare eller program. FHIR-servrar använder OAuth 2.0 för att säkerställa den här datasäkerheten. Azure API för FHIR skyddas med hjälp av Azure Active Directory, som är ett exempel på en OAuth 2.0-identitetsprovider. Den här artikeln innehåller en översikt över FHIR-serverauktorisering och de steg som krävs för att hämta en token för att få åtkomst till en FHIR-server. Även om de här stegen gäller för alla FHIR-servrar och identitetsproviders går vi igenom Azure API för FHIR som FHIR-server och Azure Active Directory (Azure AD) som identitetsprovider i den här artikeln.

Översikt över åtkomstkontroll

För att ett klientprogram ska få åtkomst till Azure API för FHIR måste det presentera en åtkomsttoken. Åtkomsttoken är en signerad Base64-kodad samling egenskaper (anspråk) som förmedlar information om klientens identitet och roller och privilegier som beviljas klienten.

Det finns många sätt att hämta en token, men Azure API för FHIR bryr sig inte om hur token hämtas så länge det är en korrekt signerad token med rätt anspråk.

Till exempel när du använder auktoriseringskodflöde går åtkomsten till en FHIR-server igenom följande fyra steg:

FHIR-auktorisering

  1. Klienten skickar en begäran till slutpunkten för /authorize Azure AD. Azure AD omdirigerar klienten till en inloggningssida där användaren autentiserar med lämpliga autentiseringsuppgifter (till exempel användarnamn och lösenord eller tvåfaktorautentisering). Se information om hur du hämtar en auktoriseringskod. Vid lyckad autentisering returneras en auktoriseringskod till klienten. Azure AD tillåter endast att den här auktoriseringskoden returneras till en registrerad svars-URL som konfigurerats i klientprogrammets registrering.
  2. Klientprogrammet utbyter auktoriseringskoden för en åtkomsttoken vid /token slutpunkten för Azure AD. När du begär en token kan klientprogrammet behöva ange en klienthemlighet (programlösenordet). Se information om hur du hämtar en åtkomsttoken.
  3. Klienten skickar en begäran till Azure API för FHIR, till exempel GET /Patient, för att söka efter alla patienter. När klienten gör begäran innehåller den åtkomsttoken i ett HTTP-begärandehuvud, till exempel Authorization: Bearer eyJ0e..., där eyJ0e... representerar den Base64-kodade åtkomsttoken.
  4. Azure API för FHIR verifierar att token innehåller lämpliga anspråk (egenskaper i token). Om allt checkar ut slutförs begäran och ett FHIR-paket returneras med resultat till klienten.

Det är viktigt att observera att Azure API för FHIR inte är inblandat i validering av användarautentiseringsuppgifter och att det inte utfärdar token. Autentiseringen och tokenskapandet görs av Azure AD. Azure API för FHIR verifierar helt enkelt att token är korrekt signerad (den är autentiserad) och att den har lämpliga anspråk.

Strukturen för en åtkomsttoken

Utvecklingen av FHIR-program® (Fast Healthcare Interoperability Resources) omfattar ofta felsökning av åtkomstproblem. Om en klient nekas åtkomst till Azure API för FHIR är det bra att förstå strukturen för åtkomsttoken och hur den kan avkodas för att granska innehållet (anspråken) för token.

FHIR-servrar förväntar sig vanligtvis en JSON-webbtoken (JWT, ibland uttalad "jot"). Den består av tre delar:

Del 1: En rubrik som kan se ut så här:

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

Del 2: Nyttolasten (anspråken), till exempel:

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

Del 3: En signatur som beräknas genom att det Base64-kodade innehållet i rubriken och nyttolasten sammanfogas och en kryptografisk hash beräknas baserat på algoritmen (alg) som anges i rubriken. En server kan hämta offentliga nycklar från identitetsprovidern och verifiera att denna token har utfärdats av en specifik identitetsprovider och att den inte har manipulerats.

Den fullständiga token består av base64-kodade versioner (egentligen Base64 URL-kodade) för dessa tre segment. De tre segmenten sammanfogas och avgränsas med en . (punkt).

Ett exempel på en token visas som:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJvaWQiOiIxMjMiLCAiaXNzIjoiaHR0cHM6Ly9pc3N1ZXJ1cmwiLCJpYXQiOjE0MjI3Nzk2MzgsInJvbGVzIjpbImFkbWluIl19.gzSraSYS8EXBxLN_oWnFSRgCzcmJmMjLiuyu5CSpyHI

Token kan avkodas och inspekteras med verktyg som https://jwt.ms. Resultatet av avkodningen av token är:

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

Hämta en åtkomsttoken

Som nämnts finns det flera sätt att hämta en token från Azure AD. De beskrivs i detalj i Azure AD utvecklardokumentation.

Använd något av följande autentiseringsprotokoll:

Det finns andra varianter (till exempel på grund av flöde) för att hämta en token. Mer information finns i dokumentationen om Azure AD. När du använder Azure API för FHIR finns det några genvägar för att hämta en åtkomsttoken (till exempel i felsökningssyfte) med hjälp av Azure CLI.

Nästa steg

I det här dokumentet har du lärt dig några av de grundläggande begreppen som ingår i att skydda åtkomsten till Azure API för FHIR med hjälp av Azure AD. Information om hur du distribuerar Azure API för FHIR-tjänsten finns i

FHIR® är ett registrerat varumärke som tillhör HL7 och används med tillstånd av HL7.