Weryfikacja tokenu dostępu interfejsu API platformy Azure dla standardu FHIR

W jaki sposób interfejs API platformy Azure for FHIR sprawdza, czy token dostępu będzie zależeć od implementacji i konfiguracji. W tym artykule omówimy kroki weryfikacji, które mogą być przydatne podczas rozwiązywania problemów z dostępem.

Sprawdzanie poprawności tokenu nie ma problemów z dostawcą tożsamości

Pierwszym krokiem weryfikacji tokenu jest sprawdzenie, czy token został wystawiony przez odpowiedniego dostawcę tożsamości i czy nie został zmodyfikowany. Serwer FHIR zostanie skonfigurowany do używania określonego dostawcy tożsamości znanego jako urząd Authority. Serwer FHIR pobierze informacje o dostawcy tożsamości z punktu końcowego /.well-known/openid-configuration . W przypadku korzystania z usługi Azure Active Directory (Azure AD) pełny adres URL to:

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

gdzie <TENANT-ID> jest konkretną dzierżawą Azure AD (identyfikator dzierżawy lub nazwa domeny).

Azure AD zwróci dokument podobny do tego na serwerze 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"
}

Ważne właściwości serwera FHIR to jwks_uri, który informuje serwer, gdzie pobrać klucze szyfrowania potrzebne do zweryfikowania podpisu tokenu i issuer, który informuje serwer, co będzie w oświadczeniach wystawcy (iss) tokenów wystawionych przez ten serwer. Serwer FHIR może użyć tego polecenia, aby sprawdzić, czy otrzymuje token uwierzytelniania.

Weryfikowanie oświadczeń tokenu

Po zweryfikowaniu autentyczności tokenu serwer FHIR sprawdzi, czy klient ma wymagane oświadczenia dostępu do tokenu.

W przypadku korzystania z interfejsu API platformy Azure dla standardu FHIR serwer zweryfikuje:

  1. Token ma prawo Audience (aud oświadczenie).
  2. Użytkownik lub podmiot zabezpieczeń, dla którego wystawiono token, może uzyskać dostęp do płaszczyzny danych serwera FHIR. Oświadczenie oid tokenu zawiera identyfikator obiektu tożsamości, który jednoznacznie identyfikuje użytkownika lub podmiot zabezpieczeń.

Zalecamy skonfigurowanie usługi FHIR do zarządzania przypisaniami ról płaszczyzny danych za pomocą kontroli dostępu opartej na rolach platformy Azure . Można jednak również skonfigurować lokalną kontrolę dostępu opartej na rolach, jeśli usługa FHIR korzysta z zewnętrznej lub pomocniczej dzierżawy Azure AD.

W przypadku korzystania z serwera Microsoft FHIR systemu operacyjnego dla platformy Azure serwer zweryfikuje:

  1. Token ma prawo Audience (aud oświadczenie).
  2. Token ma rolę w oświadczeniu roles , który może uzyskać dostęp do serwera FHIR.

Zapoznaj się ze szczegółowymi informacjami na temat definiowania ról na serwerze FHIR.

Serwer FHIR może również sprawdzić, czy token dostępu ma zakresy (w oświadczeniu scptokenu ) w celu uzyskania dostępu do części interfejsu API FHIR, do którego klient próbuje uzyskać dostęp. Obecnie usługa Azure API for FHIR i serwer FHIR dla platformy Azure nie weryfikują zakresów tokenów.

Następne kroki

Teraz, gdy wiesz, jak przejść przez walidację tokenu, możesz ukończyć samouczek, aby utworzyć aplikację JavaScript i przeczytać dane Fast Healthcare Interoperability Resources (FHIR®).

FHIR® jest zastrzeżonym znakiem towarowym HL7 i jest używany z uprawnieniem HL7 .