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:
- Token har rätt
Audience
(aud
anspråk). - 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:
- Token har rätt
Audience
(aud
anspråk). - 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.