Устранение неполадок с конфигурацией поставщика удостоверений для службы FHIR

API версии 2023-12-01 службы FHIR® в Службах данных Работоспособности Azure поддерживает два поставщика удостоверений в дополнение к идентификатору Microsoft Entra. Чтобы предоставить ограниченный доступ пользователям, необходимо настроить два поставщика удостоверений, заполнив раздел smartIdentityProviders объекта authenticationConfiguration.

Сообщения об ошибках

Ниже приведены сообщения об ошибках, возникающие при сбое поставщиков удостоверений SMART службы FHIR, и рекомендуемые действия для устранения проблемы.

Ошибка Причина Fix
Максимальное число поставщиков удостоверений SMART — 2. Число настроенных поставщиков удостоверений превышает два. Уменьшите число поставщиков удостоверений до двух или меньше.
Одно или несколько значений центра поставщика удостоверений SMART имеют значение NULL, пустое или недопустимое значение. Элемент authority конфигурации поставщика удостоверений должен быть полным URL-адресом. Убедитесь, что все значения authority являются полными URL-адресами.
Все центры поставщика удостоверений SMART должны быть уникальными. Элементы authority двух конфигураций поставщика удостоверений совпадают. Убедитесь, что все значения authority являются полными URL-адресами.
Максимальное число приложений поставщика удостоверений SMART — 2. Число приложений поставщика удостоверений в конфигурации поставщика удостоверений составляет более двух. Уменьшите число приложений поставщика удостоверений до одного или двух на каждого поставщика удостоверений.
Одно или несколько приложений SMART имеют значение NULL. Элемент applications для одного или нескольких поставщиков удостоверений имеет значение NULL или не содержит приложений. Убедитесь, что для всех конфигураций поставщика удостоверений настроено по крайней мере одно приложение.
Одно или несколько приложений SMART allowedDataActions содержат повторяющиеся элементы. Массив allowedDataActions в одной или нескольких конфигурациях приложения содержит повторяющиеся значения. Удалите все повторяющиеся значения в allowedDataActions массивах.
Одно или несколько значений приложения SMART allowedDataActions недопустимы. Единственным допустимым значением в массиве allowedDataActions является Read. Удалите все несоответствующие значения из массивов allowedDataActions.
Одно или несколько значений приложения SMART allowedDataActions пусты, NULL или недопустимы. Массив allowedDataActions в одной или нескольких конфигурациях приложения имеет значение NULL, пустой или неправильный. Единственным допустимым значением в массиве allowedDataActions является Read.
Одно или несколько значений приложения SMART audience пусты, NULL или недопустимы. Строка audience в одной или нескольких конфигурациях приложения имеет значение NULL, является пустой или неправильной. Убедитесь, audience что строка не имеет значения NULL, не является пустой, а значение имеет тип строки.
Все идентификаторы клиента приложения поставщика удостоверений SMART должны быть уникальными. Значение clientId в одной или нескольких конфигурациях приложений совпадает с другим значением clientId. Убедитесь, что все значения clientId уникальны (включая конфигурации поставщика удостоверений).
Одно или несколько значений идентификатора клиента приложения SMART пусты, NULL или недопустимы. Строка clientId в одной или нескольких конфигурациях приложения имеет значение NULL, является пустой или неправильной. Убедитесь, clientId что строка не имеет значения NULL, не является пустой, а значение имеет тип строки.

Ошибки запроса API FHIR

При использовании маркера, выданного поставщиком удостоверений SMART для выполнения запросов к службе FHIR, может возникнуть два распространенных кода ошибок: 401 Unauthorized или 403 Forbidden. Чтобы начать устранение неполадок, проверьте конфигурацию элемента smartIdentityProviders, особенно если служба FHIR является новой.

Выполните следующие действия, чтобы проверить корректность конфигурации элемента smartIdentityProviders.

  1. Убедитесь, что элемент smartIdentityProviders настроен правильно.

  2. Проверьте правильность строки authority. Убедитесь, что строка authority является центром маркера для поставщика удостоверений, выдавшего маркер доступа.

  3. Убедитесь, что строка authority является допустимым центром маркера. Выполните запрос к конфигурации openid-connect. Добавьте /.well-known/openid-configuration в конец строки aubrowser navigatesthority и вставьте ее в браузер. Если значение правильно, браузер переходит к openid-connect configuration. Если это не так, значит возникла проблема со строкой.

    Пример:

    https://<YOUR_IDENTITY_PROVIDER_AUTHORITY>/authority/v2.0/.well-known/openid-configuration
    
    
  4. Проверьте правильность строки clientId. Убедитесь, что строка clientId соответствует идентификатору клиента (или идентификатору приложения), определенному в поставщике удостоверений.

  5. Убедитесь, что метод запроса — ПОЛУЧЕНИЕ. Единственным поддерживаемым типом запроса является GET, так как значения allowedDataActions поддерживают только Read.

  6. Проверьте утверждения JSON Web Token (JWT). Если маркер доступа доступен, декодируйте его с помощью онлайн-инструментов, таких как jwt.ms. После декодирования маркера утверждения можно проверить на корректность.

    Screenshot showing jwt web token claims.

  7. Проверьте iss (утверждение издателя). Убедитесь, что утверждение iss точно соответствует значению issuer в конфигурации OpenId поставщиков удостоверений.

    Введите значение authority из конфигурации smartIdentityProvider поставщика удостоверений, добавьте в него /.well-known/openid-configuration, затем вставьте полученное значение в браузер. Если значение верно, браузер переходит к конфигурации openid-connect.

    Пример:

    https://<YOUR_IDENTITY_PROVIDER_AUTHORITY>/authority/v2.0/.well-known/openid-configuration
    
  8. Проверьте azp или appid (авторизованная сторона или утверждение appid). Утверждение azp или appid должны точно соответствовать значению clientId, предоставленному в конфигурации поставщика удостоверений smartIdentityProvider.

  9. Проверьте aud (утверждение аудитории). Утверждение aud должно точно соответствовать значению audience, предоставленному в конфигурации поставщика удостоверений smartIdentityProvider.

  10. Проверьте scp (утверждение области). Утверждение scp является обязательным. Если оно отсутствует, запрос завершается ошибкой. Формат утверждения scp должен соответствовать областям SMART on FHIR версии 1. Важно отметить, что служба FHIR в настоящее время поддерживает только области чтения. Допустимый вариант областей SMART on FHIR версии 1 заменяет любую косую черту (/) точкой (.) и звездочкой (*).all Например, допустимой версией области SMART on FHIR patient/*.read является patient.all.read.

Примечание.

Поддерживаются только read область.

  1. Проверьте fhirUser или extension_fhirUser (утверждение пользователя FHIR). Утверждение fhirUser или extension_fhirUser является обязательным. Если оно отсутствует, запрос завершается ошибкой. Это утверждение связывает пользователя в поставщике удостоверений с ресурсом пользователя в службе FHIR. Значение должно быть полным URL-адресом ресурса в службе FHIR, представляющей лицо, которому выдан маркер доступа. Например, маркер доступа, выданный пациенту, вошедшему в систему, должен иметь утверждение fhirUser или extension_fhirUser с полным URL-адресом ресурса пациента в службе FHIR.

Схема настройки поставщиков удостоверений

Элемент smartIdentityProviders представляет собой массив JSON, содержащий один или два identity provider configurations. identity provider configuration состоит из перечисленных ниже элементов.

  • authority Строковое значение, которое должно быть полным URL-адресом центра маркеров поставщиков удостоверений.

  • Массив applications, содержащий ресурс application configurations поставщика удостоверений.

{
  "properties": {
    "authenticationConfiguration": {
      "authority": "string",
      "audience": "string",
      "smartProxyEnabled": "bool",
      "smartIdentityProviders": [
        {
          "authority": "string",
          "applications": [
            {
              "clientId": "string",
              "allowedDataActions": "array",
              "audience": "string"
            }
          ]
        }
      ]
    }
  }
}

Элемент applications представляет собой массив JSON, содержащий один или два application configurations.

В состав application configuration входит следующее:

  • clientId Строковое значение для идентификатора клиента (также известного как идентификатор приложения) приложения ресурсов поставщика удостоверений.

  • Строка audience, используемая для проверки утверждения aud в маркерах доступа.

  • Массив объектов allowedDataActions. Массив allowedDataActions может содержать только строковое значение Read.

{
  "authority": "string",
  "applications": [
    {
      "clientId": "string",
      "allowedDataActions": "array",
      "audience": "string"
    }
  ]
}
{
  "clientId": "string",
  "allowedDataActions": "array",
  "audience": "string"
}

Следующие шаги

Предоставление доступа к службе FHIR с помощью Azure Active Directory B2C

Настройка нескольких поставщиков удостоверений

Примечание.

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