Uso de Azure Active Directory B2C para conceder acceso al servicio FHIR
Las organizaciones sanitarias pueden usar Azure Active Directory B2C (Azure AD B2C) con el servicio FHIR® en Azure Health Data Services para conceder acceso a sus aplicaciones y usuarios.
Creación de un inquilino de Azure AD B2C para el servicio FHIR
La creación de un inquilino de Azure AD B2C para el servicio FHIR configura una infraestructura segura para administrar identidades de usuario en las aplicaciones sanitarias.
Si ya ha creado un inquilino de Azure AD B2C, puede ir directamente a Implementación del servicio FHIR con Azure AD B2C.
Implementación de un inquilino de Azure AD B2C mediante una plantilla de ARM
Use PowerShell o la CLI de Azure para implementar la plantilla de ARM mediante programación en una suscripción de Azure. Para más información sobre la sintaxis, las propiedades y el uso de la plantilla, consulte Implementación de una instancia de Azure Active Directory B2C.
Ejecute el código en Azure Cloud Shell o en PowerShell localmente en Visual Studio Code para implementar el servicio FHIR en el inquilino de Azure AD B2C.
Use
Connect-AzAccount
para iniciar sesión en Azure. Después de iniciar sesión, useGet-AzContext
para comprobar la suscripción y el inquilino que desea usar. Cambie la suscripción y el inquilino si es necesario.Cree un nuevo grupo de recursos (o use uno existente) omitiendo el paso "crear grupo de recursos" o comentando la línea a partir de
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
Adición de un usuario de prueba B2C al inquilino de Azure AD B2C
Necesita un usuario de prueba B2C para asociarlo a un recurso de paciente específico en el servicio FHIR y comprobar que el flujo de autenticación funciona según lo previsto.
En Azure Portal, vaya al recurso B2C. Elija Abrir inquilino B2C.
En el panel izquierdo, elija Usuarios.
Elija + Nuevo usuario.
Vinculación de un usuario B2C con el atributo de usuario personalizado fhirUser
El atributo de usuario personalizado fhirUser
se usa para vincular un usuario B2C con un recurso de usuario en el servicio FHIR. En este ejemplo, se crea un usuario denominado Test Patient1 en el inquilino de B2C. En un paso posterior, se crea un recurso paciente en el servicio FHIR. El usuario Test Patient1 está vinculado al recurso de paciente estableciendo el valor del atributo fhirUser
en el identificador de recursos del paciente. Para más información sobre los atributos de usuario personalizados, consulte Atributos personalizados de flujo de usuario en Azure Active Directory B2C.
En la página Azure AD B2C del panel izquierdo, elija Atributos de usuario.
Elija + Agregar.
En el campo Nombre, escriba fhirUser (distingue mayúsculas de minúsculas).
En la lista desplegable Tipo de datos, seleccione Cadena.
Seleccione Crear.
Creación de un nuevo flujo de usuario B2C
Los flujos de usuario definen la secuencia de pasos que los usuarios deben seguir para iniciar sesión. En este ejemplo, se define un flujo de usuario para que cuando un usuario inicie sesión y el token de acceso proporcionado incluye la notificación fhirUser
. Para obtener más información, vea Creación de flujos de usuario y directivas personalizadas en Azure Active Directory B2C.
En la página Azure AD B2C del panel izquierdo, elija Flujos de usuario.
Elija + Nuevo flujo de usuario.
Asigne al flujo de usuario un nombre único para el inquilino de B2C. El nombre no tiene que ser único globalmente. En este ejemplo, el nombre del flujo de usuario es USER_FLOW_1. Anote el nombre.
Asegúrese de que el inicio de sesión de correo electrónico está habilitado para las cuentas locales para que el usuario de prueba pueda iniciar sesión y obtener un token de acceso para el servicio FHIR.
En la página Crear un flujo de usuario, desplácese hasta la sección 5. Notificaciones de aplicación y, a continuación, seleccione Mostrar más... para mostrar una lista de todas las notificaciones disponibles.
Seleccione la notificación fhirUser.
Elija Aceptar.
Seleccione Crear.
Creación de una nueva aplicación de recursos B2C
La aplicación de recursos B2C controla las solicitudes de autenticación de la aplicación sanitaria a Azure Active Directory B2C.
En la página Azure AD B2C del panel izquierdo, elija Registros de aplicaciones.
Elija + Nuevo registro.
Escribe un nombre para mostrar. En este ejemplo se usa el servicio FHIR.
En la lista Tipos de cuenta admitidos, seleccione Cuentas en cualquier proveedor de identidades o directorio de organización (para autenticar usuarios con flujos de usuario).
En la lista desplegable URI de redirección (recomendado), seleccione *Cliente público/nativo (móvil y escritorio). Rellene el valor con el URI de devolución de llamada https://oauth.pstmn.io/v1/callback de Postman. Este URI de devolución de llamada es para pruebas.
En la sección Permisos, seleccione Conceda consentimiento del administrador a los permisos openid y offline_access.
Elija Registro. Espere a que se complete el registro de la aplicación. El explorador navega automáticamente a la página Información general de la aplicación.
Configuración de los permisos de API para la aplicación
En la página Registros de aplicaciones del panel izquierdo, elija Manifiesto.
Desplácese hasta que encuentre la matriz
oauth2Permissions
. Reemplace la matriz por uno o varios valores en el archivo oauth2Permissions.json. Copie toda la matriz o los permisos individuales.Si agrega un permiso a la lista, cualquier usuario del inquilino de B2C puede obtener un token de acceso con el permiso de API. Si un nivel de acceso no es adecuado para un usuario dentro del inquilino de B2C, no lo agregue a la matriz porque no hay una manera de limitar los permisos a un subconjunto de usuarios.
Una vez rellenada la matriz oauth2Permissions, elija Guardar.
Exposición de la API web y asignación de un URI de identificador de aplicación
En la página Registros de aplicaciones del panel izquierdo, elija Exponer una API.
Haga clic en Agregar.
De forma predeterminada, el campo URI de id. de aplicación se rellena con el identificador de aplicación (cliente). Cambie el valor si lo desea. En este ejemplo, el valor es fhir.
Elija Guardar.
En la página Registros de aplicaciones del panel izquierdo, elija Permisos de API.
Elija + Agregar un permiso.
En el panel Solicitar permisos de API, seleccione API que usa mi organización.
Seleccione la aplicación de recursos de la lista.
En el panel Solicitar permisos de API en la sección Paciente, seleccione al menos un permiso. En este ejemplo, se selecciona el permiso
patient.all.read
, lo que significa que un usuario que solicita un token de acceso con el ámbitopatient.all.read
tiene privilegios de lectura (patient.all.read) para todos los recursos de FHIR (patient.all.read) en el compartimiento de Paciente (patient.all.read) Para obtener más información, consulte Compartimiento de Paciente.Elija Agregar permisos.
En la página Permisos de API de la sección Permisos configurados, elija Conceder consentimiento del administrador.
Implementación del servicio FHIR con Azure Active Directory B2C como proveedor de identidades
La implementación del servicio FHIR con Azure Active Directory B2C como proveedor de identidades permite al servicio FHIR autenticar a los usuarios en función de sus credenciales de Azure AD B2C, lo que garantiza que solo los usuarios autorizados puedan acceder a la información confidencial del paciente
Obtención de la entidad B2C y el identificador de cliente
Use los parámetros authority y client ID (o application ID) para configurar el servicio FHIR para usar un inquilino de Azure AD B2C como proveedor de identidades.
Cree la cadena de autoridad con el nombre del inquilino B2C y el nombre del flujo de usuario.
https://<YOUR_B2C_TENANT_NAME>.b2clogin.com/<YOUR_B2C_TENANT_NAME>.onmicrosoft.com/<YOUR_USER_FLOW_NAME>/v2.0
Pruebe la cadena de autoridad mediante la realización de una solicitud al punto de conexión
.well-known/openid-configuration
. Escriba la cadena en un explorador para confirmar que navega al archivo JSON de configuración de OpenId. Si el JSON de configuración de OpenId no se puede cargar, asegúrese de que el nombre del inquilino B2C y el nombre del flujo de usuario son correctos.https://<YOUR_B2C_TENANT_NAME>.b2clogin.com/<YOUR_B2C_TENANT_NAME>.onmicrosoft.com/<YOUR_USER_FLOW_NAME>/v2.0/.well-known/openid-configuration
Recupere el identificador de cliente de la página de información general de la aplicación de recursos.
Implementación del servicio FHIR mediante una plantilla de ARM
Use una plantilla de ARM para simplificar la implementación del servicio FHIR. Use PowerShell o la CLI de Azure para implementar la plantilla de ARM en una suscripción de Azure.
Ejecute el código en Azure Cloud Shell o en PowerShell localmente en Visual Studio Code para implementar el servicio FHIR en el inquilino de Azure AD B2C.
Use
Connect-AzAccount
para iniciar sesión en Azure. UseGet-AzContext
para comprobar la suscripción y el inquilino que desea usar. Cambie la suscripción y el inquilino si es necesario.Cree un nuevo grupo de recursos (o use uno existente) omitiendo el paso "crear grupo de recursos" o comentando la línea a partir de
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
Validación de que los usuarios de Azure AD B2C pueden acceder a los recursos de FHIR
El proceso de validación implica la creación de un recurso de paciente en el servicio FHIR, la vinculación del recurso de paciente al usuario de Azure AD B2C y la configuración de Postman para obtener un token de acceso para los usuarios de B2C. Una vez completado el proceso de validación, puede capturar el recurso del paciente mediante el usuario de prueba de B2C.
Ejecución de Postman para obtener un token de acceso
Ejecute la aplicación Postman localmente o en un explorador web. Para obtener los pasos necesarios para obtener el acceso adecuado al servicio FHIR, consulte Acceso al servicio FHIR mediante Postman.
Cuando siga los pasos descritos en la sección de Obtener el recurso de FHIR, la solicitud devuelve una respuesta vacía porque el servicio FHIR es nuevo y no tiene ningún recurso de paciente.
Creación de un recurso de paciente en el servicio FHIR
Es importante tener en cuenta que los usuarios del inquilino de B2C no pueden leer ningún recurso hasta que el usuario (como un paciente o un profesional) esté vinculado a un recurso de FHIR. Un usuario con el rol FhirDataWriter
o FhirDataContributor
en Microsoft Entra ID donde está el inquilino del servicio FHIR debe realizar este paso.
- Cree un paciente con un identificador específico cambiando el método a
PUT
y ejecutando una solicitud a{{fhirurl}}/Patient/1
con este cuerpo:
{
"resourceType": "Patient",
"id": "1",
"name": [
{
"family": "Patient1",
"given": [
"Test"
]
}
]
}
- Compruebe que el paciente se crea cambiando el método de nuevo a
GET
y comprobando que una solicitud{{fhirurl}}/Patient
devuelve el paciente recién creado.
Vinculación del recurso de paciente al usuario de Azure AD B2C
Cree un vínculo explícito entre el usuario de prueba en el inquilino de B2C y el recurso del servicio FHIR. Cree el vínculo mediante atributos de extensión en Microsoft Graph. Para obtener más información, vea Definición de atributos personalizados en Azure Active Directory B2C.
Vaya al inquilino de B2C. En el panel izquierdo, elija Registros de aplicaciones.
Seleccione Todas las aplicaciones.
Seleccione la aplicación con el prefijo b2c-extensions-app.
Anote el valor de Id. de aplicación (cliente).
Vuelva a la página principal del inquilino de B2C y, en el panel izquierdo, seleccione Usuarios.
Seleccione Test Patient1.
Anote el valor de Id. de objeto.
Abra el Explorador de Microsoft Graph. Inicie sesión con un usuario asignado al rol Administrador global para el inquilino de B2C. (Es una buena idea crear un nuevo usuario administrador en el inquilino de B2C para administrar usuarios en el inquilino).
Seleccione el avatar del usuario y, a continuación, elija Consentimiento para los permisos.
Desplácese hasta Usuario. Consentimiento para User.ReadWrite.All. Este permiso le permite actualizar el usuario Test Patient1 con el valor de notificación
fhirUser
.Una vez completado el proceso de consentimiento, actualice el usuario. Necesita el identificador de aplicación b2c-extensions-app (cliente) y el identificador de objeto de usuario.
Cambie el método a
PATCH
.Cambie la dirección URL a https://graph.microsoft.com/v1.0/users/{USER_OBJECT_ID}.
Cree el cuerpo
PATCH
. Un cuerpoPATCH
es un único par clave-valor, donde el formato de clave esextension_{B2C_EXTENSION_APP_ID_NO_HYPHENS}_fhirUser
y el valor es el identificador de recurso de FHIR completo para el pacientehttps://{YOUR_FHIR_SERVICE}.azurehealthcareapis.com/Patient/1"
.
Para obtener más información, consulte Administrar atributos de extensión a través de Microsoft Graph.
Después de dar formato a la solicitud, elija Ejecutar consulta. Espere una respuesta correcta que confirme que el usuario del inquilino B2C está vinculado al recurso de paciente en el servicio FHIR.
Configuración de Postman para obtener un token de acceso para los usuarios de B2C
Obtenga un token de acceso para probar el flujo de autenticación.
Inicie la aplicación Postman y, a continuación, cree una nueva colección vacía. En este ejemplo, la colección se denomina FHIR Patient.
Seleccione la pestaña Autorización en la información general de la colección.
En la lista desplegable Tipo, seleccione OAuth 2.0.
Desplácese hasta la sección Configurar nuevo token y escriba los siguientes valores.
Dirección URL de devolución de llamadas. Este valor se configura cuando se crea la aplicación de recursos B2C.
https://oauth.pstmn.io/v1/callback
Dirección URL de autenticación. Este valor se puede crear con el nombre del inquilino B2C y el nombre del flujo de usuario.
https://{YOUR_B2C_TENANT_NAME}.b2clogin.com/{YOUR_B2C_TENANT_NAME}.onmicrosoft.com/{YOUR_USER_FLOW_NAME}/oauth2/v2.0/authorize
Dirección URL de token de acceso. Este valor se puede crear con el nombre del inquilino B2C y el nombre del flujo de usuario.
https://{YOUR_B2C_TENANT_NAME}.b2clogin.com/{YOUR_B2C_TENANT_NAME}.onmicrosoft.com/{YOUR_USER_FLOW_NAME}/oauth2/v2.0/token
Id. de cliente. Este valor es el identificador de aplicación (cliente) de la aplicación de recursos B2C.
{YOUR_APPLICATION_ID}
Ámbito. Este valor se define en la aplicación de recursos B2C de la sección Exponer una API. El ámbito al que se conceden permisos es
patient.all.read
. La solicitud de ámbito debe ser una dirección URL completa, por ejemplo,https://testb2c.onmicrosoft.com/fhir/patient.all.read
.
Copie el ámbito completo de la sección Exponer una API de la aplicación de recursos B2C.
{YOUR_APPLICATION_ID_URI}/patient.all.read
Captura del recurso del paciente mediante el usuario B2C
Compruebe que los usuarios de Azure AD B2C pueden acceder a los recursos de FHIR.
Cuando se configura la configuración de autorización en Postman para iniciar el flujo de usuario B2C, elija Obtener nuevo token de acceso para obtener un token de acceso.
Use las credenciales de Test Patient para iniciar sesión.
Elija Usar token para usar el token de acceso para las solicitudes de la colección.
Cree una nueva solicitud para buscar recursos de pacientes en el servicio FHIR. Seleccione el botón de puntos suspensivos (...) situado junto al nombre de la colección y elija Agregar solicitud.
Establezca el método en
GET
, escriba la dirección URL del servicio FHIR completa y agregue la ruta de acceso/Patient
.Elija Enviar.
Compruebe que la respuesta contiene el recurso de paciente único.
Pasos siguientes
Configuración de varios proveedores de identidades
Solución de problemas de configuración del proveedor de identidades
Nota:
FHIR® es una marca registrada de HL7 y se usa con su permiso.