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


Предоставление доступа к службе 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 обратного вызова. Этот 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 и настройку REST Client для получения маркера доступа для пользователей B2C. После завершения процесса проверки можно получить ресурс пациента с помощью тестового пользователя B2C.

Получение маркера доступа с помощью КЛИЕНТА REST

Инструкции по получению правильного доступа к службе FHIR см. в статье Access the FHIR service using REST Client.

При выполнении действий в разделе "Получение данных пациента 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.

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

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

Примечание.

authorization_code Используется grant_type для получения маркера доступа. Доступны средства, предлагающие интуитивно понятные интерфейсы для тестирования и разработки API.

  1. Запустите тестовое приложение API.

  2. Выберите вкладку "Авторизация " в средстве.

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

  4. Введите следующие значения.

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

    • 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
    

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

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

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

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

  3. Скопируйте маркер доступа и используйте его при выборе данных пациента

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

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

  2. Используйте маркер получения в параметре авторизации.

  3. Выберите "Отправить запрос".

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

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

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

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

Примечание.

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