Share via


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.

  1. Use Connect-AzAccount para iniciar sesión en Azure. Después de iniciar sesión, use Get-AzContext para comprobar la suscripción y el inquilino que desea usar. Cambie la suscripción y el inquilino si es necesario.

  2. Cree un nuevo grupo de recursos o use uno existente omitiendo el paso o marcando como comentario 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.

  1. En Azure Portal, vaya al recurso B2C. Elija Abrir inquilino B2C.

    Captura de pantalla que muestra un recurso B2C.

  2. En el panel izquierdo, elija Usuarios.

    Captura de pantalla que muestra el usuario principal.

  3. Elija + Nuevo usuario.

    Captura de pantalla que muestra la adición de un nuevo usuario.

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 y, en un paso posterior, se crea un recurso de 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.

  1. En la página Azure AD B2C del panel izquierdo, elija Atributos de usuario.

  2. Elija + Agregar.

  3. En el campo Nombre, escriba fhirUser (distingue mayúsculas de minúsculas).

  4. En la lista desplegable Tipo de datos, seleccione Cadena.

  5. Seleccione Crear.

    Captura de pantalla que muestra el atributo B2C.

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, 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.

  1. En la página Azure AD B2C del panel izquierdo, elija Flujos de usuario.

  2. Elija + Nuevo flujo de usuario.

    Captura de pantalla que muestra el flujo de usuario B2C.

  3. 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.

  4. 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.

    Captura de pantalla que muestra la configuración del flujo de usuario B2C.

  5. 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.

  6. Seleccione la notificación fhirUser.

  7. Elija Aceptar.

  8. Seleccione Crear.

    Captura de pantalla que muestra la configuración del flujo de usuario B2C con la notificación de usuario de FHIR.

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.

  1. En la página Azure AD B2C del panel izquierdo, elija Registros de aplicaciones.

  2. Elija + Nuevo registro.

    Captura de pantalla que muestra la nueva aplicación B2C.

  3. Escribe un nombre para mostrar. En este ejemplo se usa el servicio FHIR.

  4. 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).

  5. 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. El URI de devolución de llamada es para pruebas.

  6. En la sección Permisos, seleccione Conceda consentimiento del administrador a los permisos openid y offline_access.

  7. 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.

    Captura de pantalla que muestra el registro de aplicaciones B2C.

Configuración de los permisos de API para la aplicación

  1. En la página Registros de aplicaciones del panel izquierdo, elija Manifiesto.

  2. 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.

  3. Una vez rellenada la matriz oauth2Permissions, elija Guardar.

    Captura de pantalla que muestra el manifiesto de aplicación B2C.

Exposición de la API web y asignación de un URI de identificador de aplicación

  1. En la página Registros de aplicaciones del panel izquierdo, elija Exponer una API.

  2. Haga clic en Agregar.

  3. 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.

  4. Elija Guardar.

    Captura de pantalla que muestra la API de aplicación B2C.

  5. En la página Registros de aplicaciones del panel izquierdo, elija Permisos de API.

  6. Elija + Agregar un permiso.

    Captura de pantalla que muestra el permiso de API de B2C.

  7. En el panel Solicitar permisos de API, seleccione API que usa mi organización.

  8. Seleccione la aplicación de recursos de la lista.

    Captura de pantalla que muestra los permisos de API de B2C con las API usadas.

  9. 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 ámbito patient.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.

  10. Elija Agregar permisos.

    Captura de pantalla que muestra los permisos de API de B2C con permisos agregados.

  11. En la página Permisos de API de la sección Permisos configurados, elija Conceder consentimiento del administrador.

    Captura de pantalla que muestra los permisos de API de B2C para el 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.

  1. 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
    
  2. 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
    
  3. Recupere el identificador de cliente de la página de información general de la aplicación de recursos.

    Captura de pantalla que muestra la página de información general de la aplicación B2C.

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.

  1. Use Connect-AzAccount para iniciar sesión en Azure. Use Get-AzContext para comprobar la suscripción y el inquilino que desea usar. Cambie la suscripción y el inquilino si es necesario.

  2. Cree un nuevo grupo de recursos o use uno existente omitiendo el paso o marcando como comentario 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 recursos GET 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 esté vinculado a un recurso de FHIR, por ejemplo, como paciente o profesional. Un usuario con el rol FhirDataWriter o FhirDataContributor en Microsoft Entra ID donde está el inquilino del servicio FHIR debe realizar este paso.

  1. 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"
            ]
        }
    ]
}
  1. 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.

Debe crear 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.

  1. Vaya al inquilino de B2C. En el panel izquierdo, elija Registros de aplicaciones.

  2. Seleccione Todas las aplicaciones.

  3. Seleccione la aplicación con el prefijo b2c-extensions-app.

    Captura de pantalla que muestra la lista de aplicaciones B2C.

  4. Anote el valor de Id. de aplicación (cliente).

    Captura de pantalla que muestra la aplicación de extensiones B2C.

  5. Vuelva a la página principal del inquilino de B2C y, en el panel izquierdo, seleccione Usuarios.

    Captura de pantalla que muestra el usuario principal de B2C.

  6. Seleccione Test Patient1.

    Captura de pantalla que muestra la lista de usuarios de B2C.

  7. Anote el valor de Id. de objeto.

    Captura de pantalla que muestra el identificador de usuario de B2C.

  8. 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).

    Captura de pantalla que muestra el inicio de sesión de Graph.

  9. Seleccione el avatar del usuario y, a continuación, elija Consentimiento para los permisos.

    Captura de pantalla que muestra el consentimiento de Graph para el usuario de prueba.

  10. 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.

    Captura de pantalla que muestra el consentimiento de Graph para la notificación fhirUser.

  11. 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 cuerpo PATCH es un único par clave-valor, donde el formato de clave es extension_{B2C_EXTENSION_APP_ID_NO_HYPHENS}_fhirUser y el valor es el identificador de recurso de FHIR completo para el paciente https://{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.

  12. 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.

    Captura de pantalla que muestra la revisión de Graph.

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.

  1. 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.

    Captura de pantalla que muestra la nueva colección de Postman.

  2. Seleccione la pestaña Autorización en la información general de la colección.

  3. En la lista desplegable Tipo, seleccione OAuth 2.0.

    Captura de pantalla que muestra la autenticación de Postman.

  4. Desplácese hasta la sección Configurar nuevo token y escriba estos 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.

  5. 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 de pantalla que muestra las direcciones URL de Postman.

Captura del recurso del paciente mediante el usuario B2C

Compruebe que los usuarios de Azure AD B2C pueden acceder a los recursos de FHIR.

  1. 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.

    Captura de pantalla que muestra la obtención del token de acceso de Postman.

  2. Use las credenciales de Test Patient para iniciar sesión.

    Captura de pantalla que muestra la obtención del token de Postman.

  3. Elija Usar token para usar el token de acceso para las solicitudes de la colección.

    Captura de pantalla que muestra el token de uso de Postman.

  4. 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.

    Captura de pantalla que muestra la solicitud de Postman agregada.

  5. Establezca el método en GET, escriba la dirección URL del servicio FHIR completa y agregue la ruta de acceso /Patient.

  6. Elija Enviar.

  7. Compruebe que la respuesta contiene el recurso de paciente único.

    Captura de pantalla que muestra la respuesta de solicitud de Postman.

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.