Condividi tramite


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.

  1. Usare Connect-AzAccount per accedere ad Azure. Dopo l'accesso, usare Get-AzContext per verificare la sottoscrizione e il tenant da usare. Modificare la sottoscrizione e il tenant, se necessario.

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

  1. Nel portale di Azure andare alla nuova risorsa. Scegliere Apri tenant B2C.

    Screenshot che mostra una risorsa B2C.

  2. Nel riquadro sinistro scegliere Utenti.

    Screenshot che mostra l'utente principale.

  3. Scegliere + Nuovo utente.

    Screenshot che mostra l'aggiunta di un nuovo utente.

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.

  1. Nella pagina Azure AD B2C nel riquadro sinistro scegliere Attributi utente.

  2. Scegliere + Aggiungi.

  3. Nel campo Nome immettere fhirUser (distinzione tra maiuscole e minuscole).

  4. Nell'elenco a discesa Tipo di dati selezionare Stringa.

  5. Scegliere Create (Crea).

    Screenshot che mostra l'attributo B2C.

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.

  1. Nella pagina Azure AD B2C nel riquadro sinistro scegliere Flussi utente.

  2. Scegliere + Nuovo flusso utente.

    Screenshot che mostra il flusso utente B2C.

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

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

    Screenshot che mostra la configurazione del flusso utente B2C.

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

  6. Selezionare l'attestazione fhirUser.

  7. Scegli OK.

  8. Scegliere Create (Crea).

    Screenshot che mostra la configurazione del flusso utente B2C con l'attestazione utente FHIR.

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.

  1. Nella pagina Azure AD B2C nel riquadro sinistro scegliere Registrazioni app.

  2. Scegliere + Nuova registrazione.

    Screenshot che mostra la nuova applicazione B2C.

  3. Immetti un nome visualizzato. Questo esempio usa il Servizio FHIR.

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

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

  6. In Autorizzazioni, selezionare Concedi consenso amministratore alle autorizzazioni openid e offline_access.

  7. Scegliere Registra. Attendere il completamento della registrazione dell'applicazione. Il browser passa automaticamente alla pagina Panoramica dell'applicazione.

    Screenshot che mostra la registrazione dell'applicazione B2C.

Configurare le autorizzazioni API per l'app

  1. Nella pagina Registrazioni app nel riquadro sinistro scegliere Manifesto.

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

  3. Dopo aver popolato l'array oauth2Permissions, scegliere Salva.

    Screenshot che mostra il manifesto dell'applicazione B2C.

Esporre l'API Web e assegnare un URI ID applicazione

  1. Nella pagina Registrazioni app nel riquadro sinistro scegliere Esporre un'API.

  2. Scegliere Aggiungi.

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

  4. Scegliere Salva.

    Screenshot che mostra l'API dell'applicazione B2C.

  5. Nella pagina Registrazioni app nel riquadro sinistro scegliere Autorizzazioni API.

  6. Scegliere + Aggiungi un'autorizzazione.

    Screenshot che mostra l'autorizzazione API B2C.

  7. Nel riquadro Richiedi autorizzazioni API selezionare API usate dall'organizzazione.

  8. Selezionare l'applicazione risorsa dall'elenco.

    Screenshot che mostra le autorizzazioni api B2C con le API usate.

  9. 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'ambito patient.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.

  10. Scegliere Aggiungi autorizzazioni.

    Screenshot che mostra le autorizzazioni dell'API B2C con le autorizzazioni aggiunte.

  11. Nella pagina Autorizzazioni APInella sezione Autorizzazioni configurate scegliere Concedi consenso amministratore.

    Screenshot che mostra le autorizzazioni API B2C per il consenso dell'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à.

  1. 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
    
  2. 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
    
  3. Recuperare l'ID client dalla pagina di panoramica dell'applicazione di risorse.

    Screenshot che mostra la pagina di panoramica dell'applicazione B2C.

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.

  1. Usare Connect-AzAccount per accedere ad Azure. Usare Get-AzContext per verificare la sottoscrizione e il tenant da usare. Modificare la sottoscrizione e il tenant, se necessario.

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

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

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.

  1. Andare al tenant B2C. Nel riquadro sinistro scegliere Registrazioni app.

  2. Selezionare Tutte le applicazioni.

  3. Selezionare l'applicazione con il prefisso b2c-extensions-app.

    Screenshot che mostra l'elenco di app B2C.

  4. Prendere nota del valore ID applicazione (client).

    Screenshot che mostra l'app delle estensioni B2C.

  5. Tornare alla home page del tenant B2C, nel riquadro sinistro selezionare Utenti.

    Screenshot che mostra l'utente home B2C.

  6. Selezionare Test Patient1.

    Screenshot che mostra l'elenco di utenti B2C.

  7. Prendere nota del valore ID oggetto.

    Screenshot che mostra l'ID utente B2C.

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

    Screenshot che mostra l'account di accesso a Graph.

  9. Selezionare l'avatar per l'utente e quindi scegliere Consenti alle autorizzazioni.

    Screenshot che mostra il consenso di Graph per l'utente di test.

  10. Scorrere fino a Utente. Consenso a User.ReadWrite.All. Questa autorizzazione consente di aggiornare l'utente Test Patient1 con il valore dell'attestazione fhirUser.

    Screenshot che mostra il consenso di Graph per l'attestazione fhirUser.

  11. 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 corpo PATCH è 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 paziente https://{YOUR_FHIR_SERVICE}.azurehealthcareapis.com/Patient/1".

    Per altre informazioni, vedere Gestire gli attributi di estensione tramite Microsoft Graph.

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

    Screenshot che mostra la patch Graph.

Configurare Postman per ottenere un token di accesso per gli utenti B2C

Ottenere un token di accesso per testare il flusso di autenticazione.

  1. Avviare l'applicazione Postman e quindi creare una nuova raccolta Blank. In questo esempio la raccolta è denominata FHIR Paziente.

    Screenshot che mostra la nuova raccolta Postman.

  2. Selezionare la scheda Autorizzazione nella panoramica della raccolta.

  3. Nell'elenco a discesa Tipo di origine selezionare OAuth 2.0.

    Screenshot che mostra l'autenticazione Postman.

  4. 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 esempio https://testb2c.onmicrosoft.com/fhir/patient.all.read.

  5. Copiare l'ambito completo dalla sezione Esporre un'API dell'applicazione di risorse B2C.

    {YOUR_APPLICATION_ID_URI}/patient.all.read
    

    Screenshot che mostra gli URL di Postman.

Recuperare la risorsa paziente usando l'utente B2C

Verificare che gli utenti di Azure AD B2C possano accedere alle risorse FHIR.

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

    Screenshot che mostra postman get access token ( Ottenere il token di accesso).

  2. Usare le credenziali del Paziente di test per accedere.

    Screenshot che mostra il token Ottieni Postman.

  3. Scegliere Usa token per usare il token di accesso per tutte le richieste nella raccolta.

    Screenshot che mostra il token Usa Postman.

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

    Screenshot che mostra la richiesta Postman aggiunta.

  5. Impostare il metodo su GET, immettere l'URL del servizio FHIR completo e quindi aggiungere il percorso /Patient.

  6. Scegliere Invia.

  7. Verificare che la risposta contenga la singola risorsa paziente.

    Screenshot che mostra la risposta alla richiesta Postman.

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.