Проверка маркера доступа Azure API для FHIR

Способ проверки маркера доступа в Api Azure для FHIR будет зависеть от реализации и конфигурации. В этой статье мы рассмотрим действия по проверке, которые могут быть полезны при устранении неполадок с доступом.

Проверка маркера не имеет проблем с поставщиком удостоверений

Первым шагом проверки маркера является проверка того, что маркер был выдан правильным поставщиком удостоверений и что он не был изменен. Сервер FHIR будет настроен для использования определенного поставщика удостоверений, известного как центр Authority. Сервер FHIR получит сведения о поставщике удостоверений из конечной /.well-known/openid-configuration точки. При использовании Azure Active Directory (Azure AD) полный URL-адрес:

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

где <TENANT-ID> — конкретный клиент Azure AD (идентификатор клиента или доменное имя).

Azure AD вернет такой документ на сервер 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"
}

Важными свойствами сервера FHIR являются jwks_uri, которые сообщают серверу, где получить ключи шифрования, необходимые для проверки подписи маркера, и issuer, которые сообщают серверу, что будет в утверждении издателя (iss) маркеров, выданных этим сервером. Сервер FHIR может использовать его для проверки получения подлинного маркера.

Проверка утверждений маркера

После того как сервер проверит подлинность маркера, сервер FHIR будет проверять наличие у клиента необходимых утверждений для доступа к маркеру.

При использовании Azure API для FHIR сервер проверит:

  1. Маркер имеет право Audience (aud утверждение).
  2. Пользователю или субъекту, для который был выдан маркер, разрешен доступ к плоскости данных сервера FHIR. Утверждение oid маркера содержит идентификатор объекта удостоверения, который уникальным образом идентифицирует пользователя или участника.

Рекомендуется настроить службу FHIR для использования Azure RBAC для управления назначениями ролей плоскости данных. Однако можно также настроить локальный RBAC, если служба FHIR использует внешний или дополнительный клиент Azure AD.

При использовании сервера OSS Microsoft FHIR для Azure сервер будет проверять:

  1. Маркер имеет право Audience (aud утверждение).
  2. Маркер имеет роль в утверждении roles , которая предоставляет доступ к серверу FHIR.

Ознакомьтесь с подробными сведениями о том, как определить роли на сервере FHIR.

Сервер FHIR также может проверить, имеет ли маркер доступа области (в утверждении scpмаркера ) для доступа к части API FHIR, к которому пытается получить доступ клиент. В настоящее время Api Azure для FHIR и сервер FHIR для Azure не проверяют области маркеров.

Дальнейшие действия

Теперь, когда вы знаете, как пройти проверку маркеров, вы можете выполнить инструкции из руководства по созданию приложения JavaScript и чтению данных ресурсов быстрого взаимодействия в сфере здравоохранения (FHIR®).

FHIR® является зарегистрированным товарным знаком HL7 и используется с разрешения HL7.