Предоставление доступа к службе 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.
Используется
Connect-AzAccount
для входа в Azure. После входа используйтеGet-AzContext
для проверки подписки и клиента, которую вы хотите использовать. При необходимости измените подписку и клиент.Создайте новую группу ресурсов (или используйте существующую), пропустив шаг "Создать группу ресурсов" или закомментируя строку, начиная с
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, и убедиться, что поток проверки подлинности работает должным образом.
В портал Azure перейдите к ресурсу B2C. Выберите "Открыть клиент B2C".
На левой панели выберите "Пользователи".
Выберите +Создать пользователя.
Связывание пользователя B2C с пользовательским атрибутом fhirUser
пользователя
Настраиваемый fhirUser
атрибут пользователя используется для связывания пользователя B2C с ресурсом пользователя в службе FHIR. В этом примере пользователь с именем Test Patient1 создается в клиенте B2C. На следующем шаге ресурс пациента создается в службе FHIR.
Пользователь Test Patient1 связан с ресурсом пациента, задав fhirUser
значение атрибута идентификатору ресурса пациента. Дополнительные сведения о пользовательских атрибутах пользователя см. в разделе "Пользовательские атрибуты потока пользователей" в Azure Active Directory B2C.
На странице Azure AD B2C в левой области выберите атрибуты пользователя.
Нажмите кнопку + Добавить.
В поле "Имя" введите fhirUser (учитывает регистр).
В раскрывающемся списке "Тип данных" выберите "Строка".
Выберите Создать.
Создание нового потока пользователя B2C
Потоки пользователей определяют последовательность шагов, которые пользователи должны выполнять для входа. В этом примере определяется поток пользователя, чтобы при входе пользователя и предоставленном маркере доступа было указано fhirUser
утверждение. Дополнительные сведения см. в статье "Создание потоков пользователей и пользовательских политик в Azure Active Directory B2C".
На странице Azure AD B2C в левой области выберите потоки пользователей.
Выберите +Создать поток пользователя.
Присвойте потоку пользователя имя, уникальное для клиента B2C. Имя не должно быть глобально уникальным. В этом примере имя потока пользователя — USER_FLOW_1. Запишите имя.
Убедитесь, что вход электронной почты включен для локальных учетных записей, чтобы тестовый пользователь смог войти и получить маркер доступа для службы FHIR.
На странице создания потока пользователя прокрутите страницу до раздела 5. Утверждения приложения, а затем выберите "Показать больше", чтобы отобразить список всех доступных утверждений.
Выберите утверждение fhirUser.
Выберите OK.
Выберите Создать.
Создание нового приложения ресурсов B2C
Приложение ресурсов B2C обрабатывает запросы проверки подлинности из приложения здравоохранения в Azure Active Directory B2C.
На странице Azure AD B2C в левой области выберите Регистрация приложений.
Нажмите кнопку + Создать регистрацию.
Введите отображаемое имя. В этом примере используется служба FHIR.
В списке поддерживаемых типов учетных записей выберите учетные записи в любом поставщике удостоверений или каталоге организации (для проверки подлинности пользователей с помощью потоков пользователей).
В раскрывающемся списке URI перенаправления (рекомендуется) выберите *Общедоступный клиент/собственный (мобильный и классический). Заполните значение URI обратного вызова Postman.https://oauth.pstmn.io/v1/callback Этот URI обратного вызова предназначен для тестирования.
В разделе "Разрешения" выберите "Предоставить согласие администратора" для открытия и offline_access разрешений.
Нажмите кнопку Зарегистрировать. Дождитесь завершения регистрации приложения. Браузер автоматически переходит на страницу обзора приложения.
Настройка разрешений API для приложения
На странице Регистрация приложений в левой области выберите "Манифест".
Прокрутите страницу, пока не найдете
oauth2Permissions
массив. Замените массив одним или несколькими значениями в файле oauth2Permissions.json . Скопируйте весь массив или отдельные разрешения.При добавлении разрешения в список любой пользователь в клиенте B2C может получить маркер доступа с разрешением API. Если уровень доступа не подходит для пользователя в клиенте B2C, не добавляйте его в массив, так как нет способа ограничить разрешения на подмножество пользователей.
После заполнения массива oauth2Permissions нажмите кнопку "Сохранить".
Предоставление веб-API и назначение URI идентификатора приложения
На странице Регистрация приложений в левой области выберите "Предоставить API".
Нажмите кнопку Добавить.
По умолчанию поле URI идентификатора приложения заполняется идентификатором приложения (клиента). При желании измените значение. В этом примере значение равно fhir.
Нажмите кнопку Сохранить.
На странице Регистрация приложений в левой области выберите разрешения API.
Нажмите кнопку " + Добавить разрешение".
В области разрешений API запроса выберите API, которые используются в моей организации.
Выберите приложение ресурсов из списка.
В области разрешений API запросов в разделе "Пациент" выберите по крайней мере одно разрешение. В этом примере выбрано разрешение
patient.all.read
, которое означает, что пользователь, запрашивающий маркер доступа с областьюpatient.all.read
, имеет права на чтение (пациент.all).чтение) для всех ресурсов FHIR (пациент).all.read) в отсеке пациента (пациент.all.read) Дополнительные сведения см . в разделе "Пациент".Нажмите кнопку "Добавить разрешения".
На странице разрешений API в разделе "Настроенные разрешения" выберите "Предоставить согласие администратора".
Развертывание службы FHIR с помощью Azure Active Directory B2C в качестве поставщика удостоверений
Развертывание службы FHIR с помощью Azure Active Directory B2C в качестве поставщика удостоверений позволяет службе FHIR проходить проверку подлинности пользователей на основе учетных данных Azure AD B2C, обеспечивая доступ только авторизованных пользователей к конфиденциальной информации о пациенте.
Получение центра B2C и идентификатора клиента
Используйте параметры центра и идентификатора клиента (или идентификатора приложения), чтобы настроить службу FHIR для использования клиента Azure AD B2C в качестве поставщика удостоверений.
Создайте строку центра с помощью имени клиента B2C и имени потока пользователя.
https://<YOUR_B2C_TENANT_NAME>.b2clogin.com/<YOUR_B2C_TENANT_NAME>.onmicrosoft.com/<YOUR_USER_FLOW_NAME>/v2.0
Проверьте строку центра, выполнив запрос к конечной точке
.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
Получите идентификатор клиента на странице обзора приложения ресурсов.
Развертывание службы FHIR с помощью шаблона ARM
Используйте шаблон ARM для упрощения развертывания службы FHIR. Используйте PowerShell или Azure CLI для развертывания шаблона ARM в подписке Azure.
Запустите код в Azure Cloud Shell или в PowerShell локально в Visual Studio Code, чтобы развернуть службу FHIR в клиенте Azure AD B2C.
Используется
Connect-AzAccount
для входа в Azure. ИспользуетсяGet-AzContext
для проверки подписки и клиента, которую вы хотите использовать. При необходимости измените подписку и клиент.Создайте новую группу ресурсов (или используйте существующую), пропустив шаг "Создать группу ресурсов" или закомментируя строку, начиная с
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 находится в клиенте, должна выполнить этот шаг.
- Создайте пациента с определенным идентификатором, изменив метод
PUT
и выполнив запрос на{{fhirurl}}/Patient/1
этот текст:
{
"resourceType": "Patient",
"id": "1",
"name": [
{
"family": "Patient1",
"given": [
"Test"
]
}
]
}
- Убедитесь, что пациент создан, изменив метод обратно
GET
на и убедившись, что запрос на{{fhirurl}}/Patient
возвращение вновь созданного пациента.
Связывание ресурса пациента с пользователем Azure AD B2C
Создайте явную связь между тестовым пользователем в клиенте B2C и ресурсом в службе FHIR. Создайте ссылку с помощью атрибутов расширения в Microsoft Graph. Дополнительные сведения см. в статье Определение настраиваемых атрибутов в Azure Active Directory B2C.
Перейдите к клиенту B2C. На левой панели выберите Регистрация приложений.
Выберите Все приложения.
Выберите приложение с префиксом b2c-extensions-app.
Обратите внимание на значение идентификатора приложения (клиента).
Вернитесь на домашнюю страницу клиента B2C на левой панели выберите "Пользователи".
Выберите тестовый пациент1.
Обратите внимание на значение идентификатора объекта.
Откройте Microsoft Graph Explorer. Войдите с помощью пользователя, назначенного роли глобального администратора для клиента B2C. (Рекомендуется создать нового администратора в клиенте B2C для управления пользователями в клиенте B2C.)
Выберите аватар пользователя, а затем выберите "Согласие на разрешения".
Прокрутите страницу до пользователя. Согласие на user.ReadWrite.All. Это разрешение позволяет обновить пользователя Test Patient1 со значением
fhirUser
утверждения.После завершения процесса согласия обновите пользователя. Вам нужен идентификатор приложения 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".
После форматирования запроса нажмите кнопку "Выполнить запрос". Дождитесь успешного ответа, который подтверждает, что пользователь в клиенте B2C связан с ресурсом пациента в службе FHIR.
Настройка Postman для получения маркера доступа для пользователей B2C
Получите маркер доступа для проверки потока проверки подлинности.
Запустите приложение Postman и создайте новую пустую коллекцию. В этом примере коллекция называется FHIR Patient.
Перейдите на вкладку "Авторизация " в обзоре коллекции.
В раскрывающемся списке "Тип " выберите OAuth 2.0.
Прокрутите страницу до раздела "Настройка нового маркера" и введите следующие значения.
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
.
Скопируйте полную область из раздела "Предоставление API" приложения ресурсов B2C.
{YOUR_APPLICATION_ID_URI}/patient.all.read
Получение ресурса пациента с помощью пользователя B2C
Убедитесь, что пользователи Azure AD B2C могут получить доступ к ресурсам FHIR.
Когда настройка авторизации в Postman настроена для запуска потока пользователя B2C, выберите "Получить новый маркер доступа", чтобы получить маркер доступа.
Используйте учетные данные тестового пациента для входа.
Выберите "Использовать маркер", чтобы использовать маркер доступа для любых запросов в коллекции.
Создайте новый запрос для поиска ресурсов пациентов в службе FHIR. Нажмите кнопку с многоточием (...) рядом с именем коллекции, а затем нажмите кнопку "Добавить запрос".
Задайте для метода
GET
значение , введите полный URL-адрес службы FHIR, а затем добавьте путь/Patient
.Нажмите кнопку "Отправить".
Убедитесь, что ответ содержит ресурс одного пациента.
Следующие шаги
Настройка нескольких поставщиков удостоверений
Устранение неполадок с конфигурацией поставщика удостоверений
Примечание.
FHIR® является зарегистрированным товарным знаком HL7 и используется с разрешением HL7 .