Validering med åtkomsttoken för Azure API för FHIR

Hur Azure API för FHIR validerar åtkomsttoken beror på implementering och konfiguration. I den här artikeln går vi igenom valideringsstegen, vilket kan vara användbart när du felsöker åtkomstproblem.

Verifieringstoken har inga problem med identitetsprovidern

Det första steget i tokenverifieringen är att verifiera att token har utfärdats av rätt identitetsprovider och att den inte har ändrats. FHIR-servern konfigureras för att använda en specifik identitetsprovider som kallas utfärdaren Authority. FHIR-servern hämtar information om identitetsprovidern från /.well-known/openid-configuration slutpunkten. När du använder Azure Active Directory (Azure AD) är den fullständiga URL:en:

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

där <TENANT-ID> är den specifika Azure AD klientorganisation (antingen ett klientorganisations-ID eller ett domännamn).

Azure AD returnerar ett dokument som det här till FHIR-servern.

{
    "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"
}

De viktiga egenskaperna för FHIR-servern är jwks_uri, som talar om för servern var de krypteringsnycklar som behövs för att verifiera tokensignaturen och issuer, som talar om för servern vad som kommer att finnas i utfärdarens anspråk (iss) för token som utfärdas av den här servern. FHIR-servern kan använda detta för att verifiera att den tar emot en autentiseringstoken.

Verifiera anspråk för token

När servern har verifierat tokens äkthet fortsätter FHIR-servern att verifiera att klienten har de anspråk som krävs för att komma åt token.

När du använder Azure API för FHIR verifierar servern:

  1. Token har rätt Audience (aud anspråk).
  2. Användaren eller huvudkontot som token utfärdades för har behörighet att komma åt FHIR-serverns dataplan. Anspråket oid för token innehåller ett identitetsobjekt-ID som unikt identifierar användaren eller huvudkontot.

Vi rekommenderar att FHIR-tjänsten konfigureras att använda Azure RBAC för att hantera rolltilldelningar för dataplanet. Du kan dock även konfigurera lokal RBAC om FHIR-tjänsten använder en extern eller sekundär Azure AD klientorganisation.

När du använder OSS Microsoft FHIR-servern för Azure verifierar servern:

  1. Token har rätt Audience (aud anspråk).
  2. Token har en roll i anspråket roles , vilket ger åtkomst till FHIR-servern.

Läs mer om hur du definierar roller på FHIR-servern.

En FHIR-server kan också verifiera att en åtkomsttoken har omfången (i tokenanspråk scp) för att få åtkomst till den del av FHIR-API:et som en klient försöker komma åt. För närvarande validerar inte Azure API för FHIR och FHIR-servern för Azure tokenomfång.

Nästa steg

Nu när du vet hur du går igenom tokenvalidering kan du slutföra självstudien för att skapa ett JavaScript-program och läsa FHIR-data® (Fast Healthcare Interoperability Resources).

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