Поделиться через


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

Организации здравоохранения могут использовать Azure Active Directory B2C (Azure AD B2C) со службой FHIR® в Службах данных Работоспособности Azure для предоставления доступа к приложениям и пользователям.

Создание клиента Azure AD B2C для службы FHIR

Создание клиента Azure AD B2C для службы FHIR настраивает безопасную инфраструктуру для управления удостоверениями пользователей в приложениях здравоохранения.

Если вы уже создали клиент Azure AD B2C, можно перейти к развертыванию службы FHIR с помощью Azure AD B2C.

Развертывание клиента Azure AD B2C с помощью шаблона ARM

Используйте PowerShell или Azure CLI для программного развертывания шаблона ARM в подписке Azure. Дополнительные сведения о синтаксисе, свойствах и использовании шаблона см. в статье "Развертывание экземпляра Azure Active Directory B2C".

Запустите код в Azure Cloud Shell или в PowerShell локально в Visual Studio Code, чтобы развернуть службу FHIR в клиенте Azure AD B2C.

  1. Используется Connect-AzAccount для входа в Azure. После входа используйте Get-AzContext для проверки подписки и клиента, которую вы хотите использовать. При необходимости измените подписку и клиент.

  2. Создайте новую группу ресурсов (или используйте существующую), пропустив шаг "Создать группу ресурсов" или закомментируя строку, начиная с New-AzResourceGroup.

### variables
$tenantid="your tenant id"
$subscriptionid="your subscription id"
$resourcegroupname="your resource group name"
$b2cName="your b2c tenant name"

### login to azure
Connect-AzAccount -Tenant $tenantid -SubscriptionId $subscriptionid 

### create resource group
New-AzResourceGroup -Name $resourcegroupname -Location $region

### deploy the resource
New-AzResourceGroupDeployment -ResourceGroupName $resourcegroupname -TemplateUri https://raw.githubusercontent.com/Azure-Samples/azure-health-data-and-ai-samples/main/samples/fhir-aad-b2c/b2c-arm-template.json -b2cName $b2cNa

Добавление тестового пользователя B2C в клиент Azure AD B2C

Вам нужен тестовый пользователь B2C, чтобы связаться с определенным ресурсом пациента в службе FHIR, и убедиться, что поток проверки подлинности работает должным образом.

  1. В портал Azure перейдите к ресурсу B2C. Выберите "Открыть клиент B2C".

    Снимок экрана: ресурс B2C.

  2. На левой панели выберите "Пользователи".

    Снимок экрана: домашний пользователь.

  3. Выберите +Создать пользователя.

    Снимок экрана: добавление нового пользователя.

Настраиваемый fhirUser атрибут пользователя используется для связывания пользователя B2C с ресурсом пользователя в службе FHIR. В этом примере пользователь с именем Test Patient1 создается в клиенте B2C. На следующем шаге ресурс пациента создается в службе FHIR. Пользователь Test Patient1 связан с ресурсом пациента, задав fhirUser значение атрибута идентификатору ресурса пациента. Дополнительные сведения о пользовательских атрибутах пользователя см. в разделе "Пользовательские атрибуты потока пользователей" в Azure Active Directory B2C.

  1. На странице Azure AD B2C в левой области выберите атрибуты пользователя.

  2. Нажмите кнопку + Добавить.

  3. В поле "Имя" введите fhirUser (учитывает регистр).

  4. В раскрывающемся списке "Тип данных" выберите "Строка".

  5. Выберите Создать.

    Снимок экрана: атрибут B2C.

Создание нового потока пользователя B2C

Потоки пользователей определяют последовательность шагов, которые пользователи должны выполнять для входа. В этом примере определяется поток пользователя, чтобы при входе пользователя и предоставленном маркере доступа было указано fhirUser утверждение. Дополнительные сведения см. в статье "Создание потоков пользователей и пользовательских политик в Azure Active Directory B2C".

  1. На странице Azure AD B2C в левой области выберите потоки пользователей.

  2. Выберите +Создать поток пользователя.

    Снимок экрана: поток пользователя B2C.

  3. Присвойте потоку пользователя имя, уникальное для клиента B2C. Имя не должно быть глобально уникальным. В этом примере имя потока пользователя — USER_FLOW_1. Запишите имя.

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

    Снимок экрана: конфигурация пользовательского потока B2C.

  5. На странице создания потока пользователя прокрутите страницу до раздела 5. Утверждения приложения, а затем выберите "Показать больше", чтобы отобразить список всех доступных утверждений.

  6. Выберите утверждение fhirUser.

  7. Выберите OK.

  8. Выберите Создать.

    Снимок экрана: конфигурация потока пользователя B2C с утверждением пользователя FHIR.

Создание нового приложения ресурсов B2C

Приложение ресурсов B2C обрабатывает запросы проверки подлинности из приложения здравоохранения в Azure Active Directory B2C.

  1. На странице Azure AD B2C в левой области выберите Регистрация приложений.

  2. Нажмите кнопку + Создать регистрацию.

    Снимок экрана: новое приложение B2C.

  3. Введите отображаемое имя. В этом примере используется служба FHIR.

  4. В списке поддерживаемых типов учетных записей выберите учетные записи в любом поставщике удостоверений или каталоге организации (для проверки подлинности пользователей с помощью потоков пользователей).

  5. В раскрывающемся списке URI перенаправления (рекомендуется) выберите *Общедоступный клиент/собственный (мобильный и классический). Заполните значение URI обратного вызова Postman.https://oauth.pstmn.io/v1/callback Этот URI обратного вызова предназначен для тестирования.

  6. В разделе "Разрешения" выберите "Предоставить согласие администратора" для открытия и offline_access разрешений.

  7. Нажмите кнопку Зарегистрировать. Дождитесь завершения регистрации приложения. Браузер автоматически переходит на страницу обзора приложения.

    Снимок экрана: регистрация приложения B2C.

Настройка разрешений API для приложения

  1. На странице Регистрация приложений в левой области выберите "Манифест".

  2. Прокрутите страницу, пока не найдете oauth2Permissions массив. Замените массив одним или несколькими значениями в файле oauth2Permissions.json . Скопируйте весь массив или отдельные разрешения.

    При добавлении разрешения в список любой пользователь в клиенте B2C может получить маркер доступа с разрешением API. Если уровень доступа не подходит для пользователя в клиенте B2C, не добавляйте его в массив, так как нет способа ограничить разрешения на подмножество пользователей.

  3. После заполнения массива oauth2Permissions нажмите кнопку "Сохранить".

    Снимок экрана: манифест приложения B2C.

Предоставление веб-API и назначение URI идентификатора приложения

  1. На странице Регистрация приложений в левой области выберите "Предоставить API".

  2. Нажмите кнопку Добавить.

  3. По умолчанию поле URI идентификатора приложения заполняется идентификатором приложения (клиента). При желании измените значение. В этом примере значение равно fhir.

  4. Нажмите кнопку Сохранить.

    Снимок экрана: API приложения B2C.

  5. На странице Регистрация приложений в левой области выберите разрешения API.

  6. Нажмите кнопку " + Добавить разрешение".

    Снимок экрана: разрешение API B2C.

  7. В области разрешений API запроса выберите API, которые используются в моей организации.

  8. Выберите приложение ресурсов из списка.

    Снимок экрана: разрешения API B2C с используемыми API.

  9. В области разрешений API запросов в разделе "Пациент" выберите по крайней мере одно разрешение. В этом примере выбрано разрешение patient.all.read , которое означает, что пользователь, запрашивающий маркер доступа с областью patient.all.read , имеет права на чтение (пациент.all).чтение) для всех ресурсов FHIR (пациент).all.read) в отсеке пациента (пациент.all.read) Дополнительные сведения см . в разделе "Пациент".

  10. Нажмите кнопку "Добавить разрешения".

    Снимок экрана: разрешения API B2C с добавленными разрешениями.

  11. На странице разрешений API в разделе "Настроенные разрешения" выберите "Предоставить согласие администратора".

    Снимок экрана: разрешения API B2C для согласия администратора.

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

Развертывание службы FHIR с помощью Azure Active Directory B2C в качестве поставщика удостоверений позволяет службе FHIR проходить проверку подлинности пользователей на основе учетных данных Azure AD B2C, обеспечивая доступ только авторизованных пользователей к конфиденциальной информации о пациенте.

Получение центра B2C и идентификатора клиента

Используйте параметры центра и идентификатора клиента (или идентификатора приложения), чтобы настроить службу FHIR для использования клиента Azure AD B2C в качестве поставщика удостоверений.

  1. Создайте строку центра с помощью имени клиента B2C и имени потока пользователя.

    https://<YOUR_B2C_TENANT_NAME>.b2clogin.com/<YOUR_B2C_TENANT_NAME>.onmicrosoft.com/<YOUR_USER_FLOW_NAME>/v2.0
    
  2. Проверьте строку центра, выполнив запрос к конечной точке .well-known/openid-configuration . Введите строку в браузер, чтобы подтвердить, что она переходит к JSON-файлу конфигурации OpenId. Если json конфигурации OpenId не загружается, убедитесь, что имя клиента B2C и имя потока пользователя правильно.

    https://<YOUR_B2C_TENANT_NAME>.b2clogin.com/<YOUR_B2C_TENANT_NAME>.onmicrosoft.com/<YOUR_USER_FLOW_NAME>/v2.0/.well-known/openid-configuration
    
  3. Получите идентификатор клиента на странице обзора приложения ресурсов.

    Снимок экрана: страница обзора приложения B2C.

Развертывание службы FHIR с помощью шаблона ARM

Используйте шаблон ARM для упрощения развертывания службы FHIR. Используйте PowerShell или Azure CLI для развертывания шаблона ARM в подписке Azure.

Запустите код в Azure Cloud Shell или в PowerShell локально в Visual Studio Code, чтобы развернуть службу FHIR в клиенте Azure AD B2C.

  1. Используется Connect-AzAccount для входа в Azure. Используется Get-AzContext для проверки подписки и клиента, которую вы хотите использовать. При необходимости измените подписку и клиент.

  2. Создайте новую группу ресурсов (или используйте существующую), пропустив шаг "Создать группу ресурсов" или закомментируя строку, начиная с New-AzResourceGroup.

### variables
$tenantid="your tenant id"
$subscriptionid="your subscription id"
$resourcegroupname="your resource group name"
$region="your desired region"
$workspacename="your workspace name"
$fhirServiceName="your fhir service name"
$smartAuthorityUrl="your authority (from previous step)"
$smartClientId="your client id (from previous step)"

### login to azure
Connect-AzAccount 
#Connect-AzAccount SubscriptionId $subscriptionid
Set-AzContext -Subscription $subscriptionid
Connect-AzAccount -Tenant $tenantid -SubscriptionId $subscriptionid
#Get-AzContext 

### create resource group
New-AzResourceGroup -Name $resourcegroupname -Location $region

### deploy the resource
New-AzResourceGroupDeployment -ResourceGroupName $resourcegroupname -TemplateUri https://raw.githubusercontent.com/Azure-Samples/azure-health-data-and-ai-samples/main/samples/fhir-aad-b2c/fhir-service-arm-template.json -tenantid $tenantid -region $region -workspaceName $workspacename -fhirServiceName $fhirservicename -smartAuthorityUrl $smartAuthorityUrl -smartClientId $smartClientId

Проверка доступа пользователей Azure AD B2C к ресурсам FHIR

Процесс проверки включает создание ресурса пациента в службе FHIR, связывание ресурса пациента с пользователем Azure AD B2C и настройка Postman для получения маркера доступа для пользователей B2C. После завершения процесса проверки можно получить ресурс пациента с помощью тестового пользователя B2C.

Запустите Postman, чтобы получить маркер доступа

Запустите приложение Postman локально или в веб-браузере. Инструкции по получению правильного доступа к службе FHIR см. в разделе "Доступ к службе FHIR" с помощью Postman.

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

Создание ресурса пациента в службе FHIR

Важно отметить, что пользователи в клиенте B2C не могут читать какие-либо ресурсы, пока пользователь (например, пациент или врач) не связан с ресурсом FHIR. Пользователь с FhirDataWriter ролью или FhirDataContributor ролью в идентификаторе Microsoft Entra, где служба FHIR находится в клиенте, должна выполнить этот шаг.

  1. Создайте пациента с определенным идентификатором, изменив метод PUT и выполнив запрос на {{fhirurl}}/Patient/1 этот текст:
{
    "resourceType": "Patient",
    "id": "1",
    "name": [
        {
            "family": "Patient1",
            "given": [
                "Test"
            ]
        }
    ]
}
  1. Убедитесь, что пациент создан, изменив метод обратно GET на и убедившись, что запрос на {{fhirurl}}/Patient возвращение вновь созданного пациента.

Создайте явную связь между тестовым пользователем в клиенте B2C и ресурсом в службе FHIR. Создайте ссылку с помощью атрибутов расширения в Microsoft Graph. Дополнительные сведения см. в статье Определение настраиваемых атрибутов в Azure Active Directory B2C.

  1. Перейдите к клиенту B2C. На левой панели выберите Регистрация приложений.

  2. Выберите Все приложения.

  3. Выберите приложение с префиксом b2c-extensions-app.

    Снимок экрана: список приложений B2C.

  4. Обратите внимание на значение идентификатора приложения (клиента).

    Снимок экрана: приложение расширений B2C.

  5. Вернитесь на домашнюю страницу клиента B2C на левой панели выберите "Пользователи".

    Снимок экрана: домашний пользователь B2C.

  6. Выберите тестовый пациент1.

    Снимок экрана: список пользователей B2C.

  7. Обратите внимание на значение идентификатора объекта.

    Снимок экрана: идентификатор пользователя B2C.

  8. Откройте Microsoft Graph Explorer. Войдите с помощью пользователя, назначенного роли глобального администратора для клиента B2C. (Рекомендуется создать нового администратора в клиенте B2C для управления пользователями в клиенте B2C.)

    Снимок экрана: имя входа Graph.

  9. Выберите аватар пользователя, а затем выберите "Согласие на разрешения".

    Снимок экрана: согласие Graph для тестового пользователя.

  10. Прокрутите страницу до пользователя. Согласие на user.ReadWrite.All. Это разрешение позволяет обновить пользователя Test Patient1 со значением fhirUser утверждения.

    Снимок экрана: согласие Graph для утверждения fhirUser.

  11. После завершения процесса согласия обновите пользователя. Вам нужен идентификатор приложения b2c-extensions-app (клиент) и идентификатор объекта пользователя.

    • Измените метод PATCHна .

    • Изменить URL-адрес на https://graph.microsoft.com/v1.0/users/{USER_OBJECT_ID}.

    • PATCH Создайте текст. PATCH Текст является одной парой "ключ-значение", где формат ключа и extension_{B2C_EXTENSION_APP_ID_NO_HYPHENS}_fhirUser значение является полным идентификатором ресурса FHIR для пациентаhttps://{YOUR_FHIR_SERVICE}.azurehealthcareapis.com/Patient/1".

    Дополнительные сведения см. в разделе "Управление атрибутами расширения с помощью Microsoft Graph".

  12. После форматирования запроса нажмите кнопку "Выполнить запрос". Дождитесь успешного ответа, который подтверждает, что пользователь в клиенте B2C связан с ресурсом пациента в службе FHIR.

    Снимок экрана: исправление Graph.

Настройка Postman для получения маркера доступа для пользователей B2C

Получите маркер доступа для проверки потока проверки подлинности.

  1. Запустите приложение Postman и создайте новую пустую коллекцию. В этом примере коллекция называется FHIR Patient.

    Снимок экрана: новая коллекция Postman.

  2. Перейдите на вкладку "Авторизация " в обзоре коллекции.

  3. В раскрывающемся списке "Тип " выберите OAuth 2.0.

    Снимок экрана: проверка подлинности Postman.

  4. Прокрутите страницу до раздела "Настройка нового маркера" и введите следующие значения.

    • URL-адрес обратного вызова. Это значение настраивается при создании приложения ресурсов B2C.

      https://oauth.pstmn.io/v1/callback
      
    • URL-адрес проверки подлинности. Это значение можно создать с помощью имени клиента B2C и имени потока пользователя.

      https://{YOUR_B2C_TENANT_NAME}.b2clogin.com/{YOUR_B2C_TENANT_NAME}.onmicrosoft.com/{YOUR_USER_FLOW_NAME}/oauth2/v2.0/authorize
      
    • URL-адрес маркера доступа. Это значение можно создать с помощью имени клиента B2C и имени потока пользователя.

      https://{YOUR_B2C_TENANT_NAME}.b2clogin.com/{YOUR_B2C_TENANT_NAME}.onmicrosoft.com/{YOUR_USER_FLOW_NAME}/oauth2/v2.0/token
      
    • Идентификатор клиента. Это значение — это идентификатор приложения (клиента) приложения ресурсов B2C.

      {YOUR_APPLICATION_ID}
      
    • Область. Это значение определяется в приложении ресурсов B2C в разделе "Предоставление API ". Область предоставлена.patient.all.read Запрос области должен быть полным URL-адресом, например https://testb2c.onmicrosoft.com/fhir/patient.all.read.

  5. Скопируйте полную область из раздела "Предоставление API" приложения ресурсов B2C.

    {YOUR_APPLICATION_ID_URI}/patient.all.read
    

    Снимок экрана: URL-адреса Postman.

Получение ресурса пациента с помощью пользователя B2C

Убедитесь, что пользователи Azure AD B2C могут получить доступ к ресурсам FHIR.

  1. Когда настройка авторизации в Postman настроена для запуска потока пользователя B2C, выберите "Получить новый маркер доступа", чтобы получить маркер доступа.

    Снимок экрана: Postman получает маркер доступа.

  2. Используйте учетные данные тестового пациента для входа.

    Снимок экрана: маркер получения Postman.

  3. Выберите "Использовать маркер", чтобы использовать маркер доступа для любых запросов в коллекции.

    Снимок экрана: маркер использования Postman.

  4. Создайте новый запрос для поиска ресурсов пациентов в службе FHIR. Нажмите кнопку с многоточием (...) рядом с именем коллекции, а затем нажмите кнопку "Добавить запрос".

    Снимок экрана: добавлен запрос Postman.

  5. Задайте для метода GETзначение , введите полный URL-адрес службы FHIR, а затем добавьте путь /Patient.

  6. Нажмите кнопку "Отправить".

  7. Убедитесь, что ответ содержит ресурс одного пациента.

    Снимок экрана: ответ на запрос Postman.

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

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

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

Примечание.

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