Usare Azure Active Directory B2C per concedere l'accesso al servizio FHIR
Le organizzazioni sanitarie possono usare Azure Active Directory B2C (Azure AD B2C) con il servizio FHIR® in Servizi per i dati sanitari di Azure per concedere l'accesso alle applicazioni e agli utenti.
Creare un tenant di Azure AD B2C per il servizio FHIR
La creazione di un tenant di Azure AD B2C per il servizio FHIR configura un'infrastruttura sicura per la gestione delle identità utente nelle applicazioni sanitarie.
Se è già stato creato un tenant di Azure AD B2C, è possibile andare a Distribuire il servizio FHIR con Azure AD B2C.
Distribuire un tenant di Azure AD B2C usando un modello di ARM
Usare PowerShell o l'interfaccia della riga di comando di Azure per distribuire il modello di ARM a livello di codice in una sottoscrizione di Azure. Per altre informazioni su sintassi, proprietà e utilizzo del modello, vedere Distribuire un'istanza di Azure Active Directory B2C.
Eseguire il codice in Azure Cloud Shell o in PowerShell in locale in Visual Studio Code per distribuire il servizio FHIR nel tenant di Azure AD B2C.
Usare
Connect-AzAccount
per accedere ad Azure. Dopo l'accesso, usareGet-AzContext
per verificare la sottoscrizione e il tenant da usare. Modificare la sottoscrizione e il tenant, se necessario.Creare un nuovo gruppo di risorse (o usarne uno esistente) ignorando il passaggio "Crea gruppo di risorse" o commentando la riga che inizia con
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
Aggiungere un utente B2C di test al tenant di Azure AD B2C
È necessario un utente B2C di test da associare a una risorsa paziente specifica nel servizio FHIR e verificare che il flusso di autenticazione funzioni come previsto.
Nel portale di Azure andare alla nuova risorsa. Scegliere Apri tenant B2C.
Nel riquadro sinistro scegliere Utenti.
Scegliere + Nuovo utente.
Collegare un utente B2C con l'attributo utente personalizzato fhirUser
L'attributo utente personalizzato fhirUser
viene usato per collegare un utente B2C a una risorsa utente nel servizio FHIR. In questo esempio viene creato un utente denominato Test Patient1 nel tenant B2C. In un passaggio successivo viene creata una risorsa paziente nel servizio FHIR. L'utente Test Patient1 è collegato alla risorsa paziente impostando il valore dell'attributo fhirUser
sull'identificatore della risorsa paziente. Per altre informazioni sugli attributi utente personalizzati, vedere Attributi personalizzati del flusso utente in Azure Active Directory B2C.
Nella pagina Azure AD B2C nel riquadro sinistro scegliere Attributi utente.
Scegliere + Aggiungi.
Nel campo Nome immettere fhirUser (distinzione tra maiuscole e minuscole).
Nell'elenco a discesa Tipo di dati selezionare Stringa.
Scegliere Create (Crea).
Creare un nuovo flusso utente B2C
I flussi utente definiscono la sequenza di passaggi che gli utenti devono seguire per accedere. In questo esempio viene definito un flusso utente in modo che quando un utente accede e il token di accesso specificato includa l'attestazione fhirUser
. Per altre informazioni, vedere Creare flussi utente e criteri personalizzati in Azure Active Directory B2C.
Nella pagina Azure AD B2C nel riquadro sinistro scegliere Flussi utente.
Scegliere + Nuovo flusso utente.
Assegnare al flusso utente un nome univoco per il tenant B2C. Il nome non deve essere univoco a livello globale. In questo esempio il nome del flusso utente è USER_FLOW_1. Prendere nota del nome.
Assicurarsi che l'accesso tramite e-mail sia abilitato per gli account locali in modo che l'utente di test possa accedere e ottenere un token di accesso per il servizio FHIR.
Nella pagina Crea un flusso utente scorrere fino alla sezione 5. Attestazioni dell'applicazione, quindi selezionare Mostra altro... per visualizzare un elenco di tutte le attestazioni disponibili.
Selezionare l'attestazione fhirUser.
Scegli OK.
Scegliere Create (Crea).
Creare una nuova applicazione di risorse B2C
L'applicazione di risorse B2C gestisce le richieste di autenticazione dall'applicazione sanitaria ad Azure Active Directory B2C.
Nella pagina Azure AD B2C nel riquadro sinistro scegliere Registrazioni app.
Scegliere + Nuova registrazione.
Immetti un nome visualizzato. Questo esempio usa il Servizio FHIR.
Nell'elenco Tipi di account supportati selezionare Account in qualsiasi provider di identità o directory dell'organizzazione (per l'autenticazione di utenti con flussi utente).
Nell'elenco a discesa URI di reindirizzamento (scelta consigliata) selezionare *Client pubblico/nativo (mobile & desktop). Popolare il valore con l'URI di callback Postman https://oauth.pstmn.io/v1/callback. Questo URI di callback è destinato ai test.
In Autorizzazioni, selezionare Concedi consenso amministratore alle autorizzazioni openid e offline_access.
Scegliere Registra. Attendere il completamento della registrazione dell'applicazione. Il browser passa automaticamente alla pagina Panoramica dell'applicazione.
Configurare le autorizzazioni API per l'app
Nella pagina Registrazioni app nel riquadro sinistro scegliere Manifesto.
Scorrere fino a trovare l'array
oauth2Permissions
. Sostituire l'array con uno o più valori nel file oauth2Permissions.json. Copiare l'intero array o le singole autorizzazioni.Se si aggiunge un'autorizzazione all'elenco, qualsiasi utente nel tenant B2C può ottenere un token di accesso con l'autorizzazione API. Se un livello di accesso non è appropriato per un utente all'interno del tenant B2C, non aggiungerlo all’array perché non esiste un modo per limitare le autorizzazioni a un subset di utenti.
Dopo aver popolato l'array oauth2Permissions, scegliere Salva.
Esporre l'API Web e assegnare un URI ID applicazione
Nella pagina Registrazioni app nel riquadro sinistro scegliere Esporre un'API.
Scegliere Aggiungi.
Per impostazione predefinita, il campo URI ID applicazione viene popolato con l'ID applicazione (client). Modificare il valore, se necessario. In questo esempio il valore è fhir.
Scegliere Salva.
Nella pagina Registrazioni app nel riquadro sinistro scegliere Autorizzazioni API.
Scegliere + Aggiungi un'autorizzazione.
Nel riquadro Richiedi autorizzazioni API selezionare API usate dall'organizzazione.
Selezionare l'applicazione risorsa dall'elenco.
Nel riquadro Richiedi autorizzazioni API nella sezione Paziente selezionare almeno un'autorizzazione. In questo esempio viene selezionata l'autorizzazione
patient.all.read
, il che significa che un utente che richiede un token di accesso con l'ambitopatient.all.read
ha privilegi di lettura (patient.all.read) per tutte le risorse FHIR (patient.all.read) nello scomparto Pazienti (patient.all.read) Per altre informazioni, vedere lo scomparto Paziente.Scegliere Aggiungi autorizzazioni.
Nella pagina Autorizzazioni APInella sezione Autorizzazioni configurate scegliere Concedi consenso amministratore.
Distribuire il servizio FHIR con Azure Active Directory B2C come provider di identità
La distribuzione del servizio FHIR con Azure Active Directory B2C come provider di identità consente al servizio FHIR di autenticare gli utenti in base alle credenziali di Azure AD B2C, assicurandosi che solo gli utenti autorizzati possano accedere alle informazioni riservate dei pazienti
Ottenere l'autorità B2C e l'ID client
Usare i parametri autorità e ID client (o ID applicazione) per configurare il servizio FHIR per l'uso di un tenant di Azure AD B2C come provider di identità.
Creare la stringa dell'autorità usando il nome del tenant B2C e il nome del flusso utente.
https://<YOUR_B2C_TENANT_NAME>.b2clogin.com/<YOUR_B2C_TENANT_NAME>.onmicrosoft.com/<YOUR_USER_FLOW_NAME>/v2.0
Testare la stringa dell'autorità effettuando una richiesta all'endpoint
.well-known/openid-configuration
. Immettere la stringa in un browser per confermare che passa al file JSON di configurazione OpenId. Se il codice JSON di configurazione OpenId non viene caricato, assicurarsi che il nome del tenant B2C e il nome del flusso utente siano corretti.https://<YOUR_B2C_TENANT_NAME>.b2clogin.com/<YOUR_B2C_TENANT_NAME>.onmicrosoft.com/<YOUR_USER_FLOW_NAME>/v2.0/.well-known/openid-configuration
Recuperare l'ID client dalla pagina di panoramica dell'applicazione di risorse.
Distribuire il servizio FHIR usando un modello di ARM
Usare un modello di ARM per semplificare la distribuzione del servizio FHIR. Usare PowerShell o l'interfaccia della riga di comando di Azure per distribuire il modello di ARM in una sottoscrizione di Azure.
Eseguire il codice in Azure Cloud Shell o in PowerShell in locale in Visual Studio Code per distribuire il servizio FHIR nel tenant di Azure AD B2C.
Usare
Connect-AzAccount
per accedere ad Azure. UsareGet-AzContext
per verificare la sottoscrizione e il tenant da usare. Modificare la sottoscrizione e il tenant, se necessario.Creare un nuovo gruppo di risorse (o usarne uno esistente) ignorando il passaggio "Crea gruppo di risorse" o commentando la riga che inizia con
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
Verificare che gli utenti di Azure AD B2C siano in grado di accedere alle risorse FHIR
Il processo di convalida prevede la creazione di una risorsa paziente nel servizio FHIR, il collegamento della risorsa paziente all'utente di Azure AD B2C e la configurazione di Postman per ottenere un token di accesso per gli utenti B2C. Al termine del processo di convalida, è possibile recuperare la risorsa paziente usando l'utente di test B2C.
Eseguire Postman per ottenere un token di accesso
Eseguire l'applicazione Postman in locale o in un Web browser. Per i passaggi per ottenere l'accesso appropriato al servizio FHIR, vedere Accedere al servizio FHIR usando Postman.
Quando si seguono i passaggi nella sezione Ottenere la risorsa FHIR, la richiesta restituisce una risposta vuota perché il servizio FHIR è nuovo e non dispone di risorse dei pazienti.
Creare una risorsa paziente nel servizio FHIR
È importante notare che gli utenti nel tenant B2C non sono in grado di leggere risorse finché l'utente (ad esempio un paziente o un medico) non è collegato a una risorsa FHIR. Un utente con il ruolo FhirDataWriter
o FhirDataContributor
nell'ID Microsoft Entra in cui è tenant del servizio FHIR deve eseguire questo passaggio.
- Creare un paziente con un identificatore specifico modificando il metodo
PUT
in ed eseguendo una richiesta a{{fhirurl}}/Patient/1
con questo corpo:
{
"resourceType": "Patient",
"id": "1",
"name": [
{
"family": "Patient1",
"given": [
"Test"
]
}
]
}
- Verificare che il paziente venga creato modificando di nuovo il metodo in
GET
e verificando che una richiesta a{{fhirurl}}/Patient
restituisca il paziente appena creato.
Collegare la risorsa paziente all'utente di Azure AD B2C
Creare un collegamento esplicito tra l'utente di test nel tenant B2C e la risorsa nel servizio FHIR. Creare il collegamento usando attributi di estensione in Microsoft Graph. Per altre informazioni, vedere Definire attributi personalizzati in Azure Active Directory B2C.
Andare al tenant B2C. Nel riquadro sinistro scegliere Registrazioni app.
Selezionare Tutte le applicazioni.
Selezionare l'applicazione con il prefisso b2c-extensions-app.
Prendere nota del valore ID applicazione (client).
Tornare alla home page del tenant B2C, nel riquadro sinistro selezionare Utenti.
Selezionare Test Patient1.
Prendere nota del valore ID oggetto.
Aprire Microsoft Graph Explorer. Accedere con un utente assegnato al ruolo di amministratore globale per il tenant B2C. (è consigliabile creare un nuovo utente amministratore nel tenant B2C per gestire gli utenti nel tenant).
Selezionare l'avatar per l'utente e quindi scegliere Consenti alle autorizzazioni.
Scorrere fino a Utente. Consenso a User.ReadWrite.All. Questa autorizzazione consente di aggiornare l'utente Test Patient1 con il valore dell'attestazione
fhirUser
.Al termine del processo di consenso, aggiornare l'utente. Sono necessari l'ID applicazione b2c-extensions-app (client) e l'ID oggetto utente.
Modificare il metodo in
PATCH
.Modificare l'URL in https://graph.microsoft.com/v1.0/users/{USER_OBJECT_ID}.
Creare il corpo
PATCH
. Un corpoPATCH
è una singola coppia chiave-valore, in cui il formato della chiave èextension_{B2C_EXTENSION_APP_ID_NO_HYPHENS}_fhirUser
e il valore è l'ID risorsa FHIR completo per il pazientehttps://{YOUR_FHIR_SERVICE}.azurehealthcareapis.com/Patient/1"
.
Per altre informazioni, vedere Gestire gli attributi di estensione tramite Microsoft Graph.
Dopo aver formattato la richiesta, scegliere Esegui query. Attendere una risposta con esito positivo che conferma che l'utente nel tenant B2C è collegato alla risorsa paziente nel servizio FHIR.
Configurare Postman per ottenere un token di accesso per gli utenti B2C
Ottenere un token di accesso per testare il flusso di autenticazione.
Avviare l'applicazione Postman e quindi creare una nuova raccolta Blank. In questo esempio la raccolta è denominata FHIR Paziente.
Selezionare la scheda Autorizzazione nella panoramica della raccolta.
Nell'elenco a discesa Tipo di origine selezionare OAuth 2.0.
Scorrere fino alla sezione Configura nuovo token e immettere i valori seguenti.
URL di callback. Questo valore viene configurato quando viene creata l'applicazione di risorse B2C.
https://oauth.pstmn.io/v1/callback
URL autorizzazione. È possibile creare questo valore usando il nome del tenant B2C e il nome del flusso utente.
https://{YOUR_B2C_TENANT_NAME}.b2clogin.com/{YOUR_B2C_TENANT_NAME}.onmicrosoft.com/{YOUR_USER_FLOW_NAME}/oauth2/v2.0/authorize
URL token di accesso. È possibile creare questo valore usando il nome del tenant B2C e il nome del flusso utente.
https://{YOUR_B2C_TENANT_NAME}.b2clogin.com/{YOUR_B2C_TENANT_NAME}.onmicrosoft.com/{YOUR_USER_FLOW_NAME}/oauth2/v2.0/token
ID client. Questo valore è l'ID applicazione (client) dell'applicazione di risorse B2C.
{YOUR_APPLICATION_ID}
Ambito. Questo valore viene definito nell'applicazione di risorse B2C nella sezione Esporre un'API. L'autorizzazione concessa dall'ambito è
patient.all.read
. La richiesta di ambito deve essere un URL completo, ad esempiohttps://testb2c.onmicrosoft.com/fhir/patient.all.read
.
Copiare l'ambito completo dalla sezione Esporre un'API dell'applicazione di risorse B2C.
{YOUR_APPLICATION_ID_URI}/patient.all.read
Recuperare la risorsa paziente usando l'utente B2C
Verificare che gli utenti di Azure AD B2C possano accedere alle risorse FHIR.
Quando la configurazione dell'autorizzazione in Postman è configurata per avviare il flusso utente B2C, scegliere Ottieni nuovo token di accesso per ottenere un token di accesso.
Usare le credenziali del Paziente di test per accedere.
Scegliere Usa token per usare il token di accesso per tutte le richieste nella raccolta.
Creare una nuova richiesta per cercare le risorse dei pazienti nel servizio FHIR. Selezionare il pulsante con i puntini di sospensione (...) accanto al nome della raccolta e quindi scegliere Aggiungi richiesta.
Impostare il metodo su
GET
, immettere l'URL del servizio FHIR completo e quindi aggiungere il percorso/Patient
.Scegliere Invia.
Verificare che la risposta contenga la singola risorsa paziente.
Passaggi successivi
Configurare i provider di identità
Risolvere i problemi di configurazione del provider di identità
Nota
FHIR® è un marchio registrato di HL7 ed è usato con l'autorizzazione di HL7.