Använda Azure Active Directory B2C för att bevilja åtkomst till FHIR-tjänsten

Sjukvårdsorganisationer kan använda Azure Active Directory B2C (Azure AD B2C) med FHIR-tjänsten® i Azure Health Data Services för att ge åtkomst till sina program och användare.

Skapa en Azure AD B2C-klientorganisation för FHIR-tjänsten

När du skapar en Azure AD B2C-klient för FHIR-tjänsten konfigureras en säker infrastruktur för hantering av användaridentiteter i dina sjukvårdsprogram.

Om du redan har skapat en Azure AD B2C-klient kan du gå vidare till Distribuera FHIR-tjänsten med Azure AD B2C.

Distribuera en Azure AD B2C-klientorganisation med hjälp av en ARM-mall

Använd PowerShell eller Azure CLI för att distribuera ARM-mallen programmatiskt till en Azure-prenumeration. Mer information om syntax, egenskaper och användning av mallen finns i Distribuera en instans av Azure Active Directory B2C.

Kör koden i Azure Cloud Shell eller i PowerShell lokalt i Visual Studio Code för att distribuera FHIR-tjänsten till Azure AD B2C-klientorganisationen.

  1. Använd Connect-AzAccount för att logga in på Azure. När du har loggat in använder Get-AzContext du för att verifiera den prenumeration och klientorganisation som du vill använda. Ändra prenumerationen och klientorganisationen om det behövs.

  2. Skapa en ny resursgrupp eller använd en befintlig genom att hoppa över steget eller kommentera ut raden från och med 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

Lägga till en B2C-testanvändare i Azure AD B2C-klientorganisationen

Du behöver en B2C-testanvändare för att associera med en specifik patientresurs i FHIR-tjänsten och för att verifiera att autentiseringsflödet fungerar som förväntat.

  1. Gå till B2C-resursen i Azure-portalen. Välj Öppna B2C-klientorganisation.

    Screenshot showing a B2C resource.

  2. Välj Användare i den vänstra rutan.

    Screenshot showing home user.

  3. Välj + Ny användare.

    Screenshot showing adding new user.

Det fhirUser anpassade användarattributet används för att länka en B2C-användare med en användarresurs i FHIR-tjänsten. I det här exemplet skapas en användare med namnet Test Patient1 i B2C-klientorganisationen och i ett senare steg skapas en patientresurs i FHIR-tjänsten. Testpatient1-användaren är länkad till patientresursen genom att ange fhirUser attributvärdet till patientens resursidentifierare. Mer information om anpassade användarattribut finns i Anpassade attribut för användarflöden i Azure Active Directory B2C.

  1. På sidan Azure AD B2C i den vänstra rutan väljer du Användarattribut.

  2. Välj + Lägg till.

  3. I fältet Namn anger du fhirUser (skiftlägeskänslig).

  4. I listrutan Datatyp väljer du Sträng.

  5. Välj Skapa.

    Screenshot showing B2C attribute.

Skapa ett nytt B2C-användarflöde

Användarflöden definierar sekvensen med steg som användare måste följa för att logga in. I det här exemplet definieras ett användarflöde så att när en användare loggar in inkluderar den angivna åtkomsttoken anspråket fhirUser . Mer information finns i Skapa användarflöden och anpassade principer i Azure Active Directory B2C.

  1. På sidan Azure AD B2C i den vänstra rutan väljer du Användarflöden.

  2. Välj + Nytt användarflöde.

    Screenshot showing B2C user flow.

  3. Ge användarflödet ett namn som är unikt för B2C-klientorganisationen. (Namnet behöver inte vara globalt unikt.) I det här exemplet är namnet på användarflödet USER_FLOW_1. Anteckna namnet.

  4. Kontrollera att E-postinloggning är aktiverat för lokala konton så att testanvändaren kan logga in och hämta en åtkomsttoken för FHIR-tjänsten.

    Screenshot showing B2C user flow configuration.

  5. På sidan Skapa ett användarflöde rullar du till avsnitt 5. Programanspråk och välj sedan Visa mer... för att visa en lista över alla tillgängliga anspråk.

  6. Välj anspråket fhirUser .

  7. Välj OK.

  8. Välj Skapa.

    Screenshot showing B2C user flow configuration with FHIR user claim.

Skapa ett nytt B2C-resursprogram

B2C-resursprogrammet hanterar autentiseringsbegäranden från ditt sjukvårdsprogram till Azure Active Directory B2C.

  1. På sidan Azure AD B2C i den vänstra rutan väljer du Appregistreringar.

  2. Välj + Ny registrering.

    Screenshot showing B2C new application.

  3. Ange ett visningsnamn. I det här exemplet används FHIR-tjänsten.

  4. I listan Kontotyper som stöds väljer du Konton i en identitetsprovider eller organisationskatalog (för att autentisera användare med användarflöden).

  5. I listrutan Omdirigerings-URI (rekommenderas) väljer du *Offentlig klient/intern (mobil och skrivbord). Fyll i värdet med Återanrops-URIhttps://oauth.pstmn.io/v1/callback:n för Postman . Återanrops-URI:n är avsedd för testning.

  6. I avsnittet Behörigheter väljer du Bevilja administratörsmedgivande till openid- och offline_access behörigheter.

  7. Välj Registrera. Vänta tills programregistreringen har slutförts. Webbläsaren navigerar automatiskt till programöversiktssidan.

    Screenshot showing B2C application register.

Konfigurera API-behörigheter för appen

  1. På sidan Appregistreringar i den vänstra rutan väljer du Manifest.

  2. Rulla tills du hittar matrisen oauth2Permissions . Ersätt matrisen med ett eller flera värden i oauth2Permissions.json-filen. Kopiera hela matrisen eller enskilda behörigheter.

    Om du lägger till en behörighet i listan kan alla användare i B2C-klienten hämta en åtkomsttoken med API-behörigheten. Om en åtkomstnivå inte är lämplig för en användare i B2C-klientorganisationen ska du inte lägga till i matrisen eftersom det inte finns något sätt att begränsa behörigheter till en delmängd användare.

  3. När matrisen oauth2Permissions har fyllts i väljer du Spara.

    Screenshot showing B2C application manifest.

Exponera webb-API:et och tilldela en program-ID-URI

  1. På sidan Appregistreringar i den vänstra rutan väljer du Exponera ett API.

  2. Välj Lägg till.

  3. Som standard fylls fältet Program-ID-URI i med program-ID:t (klient). Ändra värdet om du vill. I det här exemplet är värdet fhir.

  4. Välj Spara.

    Screenshot showing B2C application API.

  5. På sidan Appregistreringar i den vänstra rutan väljer du API-behörigheter.

  6. Välj + Lägg till en behörighet.

    Screenshot showing B2C API permission.

  7. I fönstret Api-behörigheter för begäran väljer du API:er som min organisation använder.

  8. Välj resursprogrammet i listan.

    Screenshot showing B2C API permissions with APIs used.

  9. I fönstret Api-behörigheter för begäran i avsnittet Patient väljer du minst en behörighet. I det här exemplet är behörigheten patient.all.read markerad, vilket innebär att en användare som begär en åtkomsttoken med omfånget patient.all.read har läsbehörighet (patient.all.läs) för alla FHIR-resurser (patient.all.read) i patientutrymmet (patient.all.read) Mer information finns i Patientutrymme.

  10. Välj Lägg till behörigheter.

    Screenshot showing B2C API permissions with permissions added.

  11. På sidan API-behörigheter i avsnittet Konfigurerade behörigheter väljer du Bevilja administratörsmedgivande.

    Screenshot showing B2C API permissions for admin consent.

Distribuera FHIR-tjänsten med Azure Active Directory B2C som identitetsprovider

Genom att distribuera FHIR-tjänsten med Azure Active Directory B2C som identitetsprovider kan FHIR-tjänsten autentisera användare baserat på deras Azure AD B2C-autentiseringsuppgifter, vilket säkerställer att endast behöriga användare kan komma åt känslig patientinformation

Hämta B2C-utfärdaren och klient-ID:t

Använd parametrarna utfärdare och klient-ID (eller program-ID) för att konfigurera FHIR-tjänsten att använda en Azure AD B2C-klientorganisation som identitetsprovider.

  1. Skapa utfärdarsträngen med hjälp av namnet på B2C-klientorganisationen och namnet på användarflödet.

    https://<YOUR_B2C_TENANT_NAME>.b2clogin.com/<YOUR_B2C_TENANT_NAME>.onmicrosoft.com/<YOUR_USER_FLOW_NAME>/v2.0
    
  2. Testa utfärdarsträngen genom att göra en begäran till .well-known/openid-configuration slutpunkten. Ange strängen i en webbläsare för att bekräfta att den navigerar till OpenId Configuration JSON-filen. Om OpenId Configuration JSON inte kan läsas in kontrollerar du att B2C-klientorganisationens namn och användarnamn är korrekta.

    https://<YOUR_B2C_TENANT_NAME>.b2clogin.com/<YOUR_B2C_TENANT_NAME>.onmicrosoft.com/<YOUR_USER_FLOW_NAME>/v2.0/.well-known/openid-configuration
    
  3. Hämta klient-ID:t från översiktssidan för resursprogrammet.

    Screenshot showing B2C application overview page.

Distribuera FHIR-tjänsten med hjälp av en ARM-mall

Använd en ARM-mall för att förenkla distributionen av FHIR-tjänsten. Använd PowerShell eller Azure CLI för att distribuera ARM-mallen till en Azure-prenumeration.

Kör koden i Azure Cloud Shell eller i PowerShell lokalt i Visual Studio Code för att distribuera FHIR-tjänsten till Azure AD B2C-klientorganisationen.

  1. Använd Connect-AzAccount för att logga in på Azure. Använd Get-AzContext för att verifiera den prenumeration och klientorganisation som du vill använda. Ändra prenumerationen och klientorganisationen om det behövs.

  2. Skapa en ny resursgrupp eller använd en befintlig genom att hoppa över steget eller kommentera ut raden från och med 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

Verifiera att Azure AD B2C-användare kan komma åt FHIR-resurser

Valideringsprocessen omfattar att skapa en patientresurs i FHIR-tjänsten, länka patientresursen till Azure AD B2C-användaren och konfigurera Postman för att hämta en åtkomsttoken för B2C-användare. När valideringsprocessen är klar kan du hämta patientresursen med hjälp av B2C-testanvändaren.

Kör Postman för att hämta en åtkomsttoken

Kör Postman-programmet lokalt eller i en webbläsare. Anvisningar för att få rätt åtkomst till FHIR-tjänsten finns i Åtkomst till FHIR-tjänsten med Postman.

När du följer stegen i avsnittet GET FHIR-resurs returnerar begäran ett tomt svar eftersom FHIR-tjänsten är ny och inte har några patientresurser.

Skapa en patientresurs i FHIR-tjänsten

Det är viktigt att observera att användare i B2C-klientorganisationen inte kan läsa några resurser förrän användaren är länkad till en FHIR-resurs, till exempel som patient eller utövare. En användare med FhirDataWriter rollen eller FhirDataContributor i Microsoft Entra-ID:t där FHIR-tjänsten är klient måste utföra det här steget.

  1. Skapa en patient med en specifik identifierare genom att ändra metoden till PUT och köra en begäran till {{fhirurl}}/Patient/1 med den här brödtexten:
{
    "resourceType": "Patient",
    "id": "1",
    "name": [
        {
            "family": "Patient1",
            "given": [
                "Test"
            ]
        }
    ]
}
  1. Kontrollera att patienten har skapats genom att ändra tillbaka metoden till GET och verifiera att en begäran om att {{fhirurl}}/Patient returnera den nyligen skapade patienten.

Du måste skapa en explicit länk mellan testanvändaren i B2C-klientorganisationen och resursen i FHIR-tjänsten. Skapa länken med hjälp av tilläggsattribut i Microsoft Graph. Mer information finns i Definiera anpassade attribut i Azure Active Directory B2C.

  1. Gå till B2C-klientorganisationen. Välj Appregistreringar i den vänstra rutan.

  2. Välj Alla program.

  3. Välj programmet med prefixet b2c-extensions-app.

    Screenshot showing B2C app list.

  4. Observera värdet för program-ID (klient).

    Screenshot showing B2C extensions app.

  5. Gå tillbaka till startsidan för B2C-klientorganisationen och välj Användare i den vänstra rutan.

    Screenshot showing B2C home user.

  6. Välj Test patient1.

    Screenshot showing B2C user list.

  7. Observera objekt-ID-värdet.

    Screenshot showing B2C user ID.

  8. Öppna Microsoft Graph Explorer. Logga in med en användare som tilldelats rollen Global administratör för B2C-klientorganisationen. (Det är en bra idé att skapa en ny administratörsanvändare i B2C-klientorganisationen för att hantera användare i klientorganisationen.)

    Screenshot showing Graph login.

  9. Välj avataren för användaren och välj sedan Medgivande till behörigheter.

    Screenshot showing Graph consent for test user.

  10. Rulla till Användare. Samtycke till User.ReadWrite.All. Med den här behörigheten kan du uppdatera Test Patient1-användaren med anspråksvärdet fhirUser .

    Screenshot showing Graph consent for fhirUser claim.

  11. När medgivandeprocessen har slutförts uppdaterar du användaren. Du behöver program-ID:t b2c-extensions-app (klient) och användarens objekt-ID.

    • Ändra metoden till PATCH.

    • Ändra URL:en till https://graph.microsoft.com/v1.0/users/{USER_OBJECT_ID}.

    • Skapa brödtexten PATCH . En PATCH brödtext är ett enda nyckel/värde-par, där nyckelformatet är extension_{B2C_EXTENSION_APP_ID_NO_HYPHENS}_fhirUser och värdet är det fullständigt kvalificerade FHIR-resurs-ID:t för patienten https://{YOUR_FHIR_SERVICE}.azurehealthcareapis.com/Patient/1".

    Mer information finns i Hantera tilläggsattribut via Microsoft Graph.

  12. När begäran har formaterats väljer du Kör fråga. Vänta på ett lyckat svar som bekräftar att användaren i B2C-klienten är länkad till patientresursen i FHIR-tjänsten.

    Screenshot showing Graph patch.

Konfigurera Postman för att hämta en åtkomsttoken för B2C-användare

Hämta en åtkomsttoken för att testa autentiseringsflödet.

  1. Starta Postman-programmet och skapa sedan en ny Tom samling. I det här exemplet heter samlingen FHIR Patient.

    Screenshot showing Postman new collection.

  2. Välj fliken Auktorisering i samlingsöversikten.

  3. I listrutan Typ väljer du OAuth 2.0.

    Screenshot showing Postman auth.

  4. Bläddra till avsnittet Konfigurera ny token och ange följande värden:

    • Återanrops-URL. Det här värdet konfigureras när B2C-resursprogrammet skapas.

      https://oauth.pstmn.io/v1/callback
      
    • Autentiserings-URL. Det här värdet kan skapas med namnet på B2C-klientorganisationen och namnet på användarflödet.

      https://{YOUR_B2C_TENANT_NAME}.b2clogin.com/{YOUR_B2C_TENANT_NAME}.onmicrosoft.com/{YOUR_USER_FLOW_NAME}/oauth2/v2.0/authorize
      
    • Url för åtkomsttoken. Det här värdet kan skapas med namnet på B2C-klientorganisationen och namnet på användarflödet.

      https://{YOUR_B2C_TENANT_NAME}.b2clogin.com/{YOUR_B2C_TENANT_NAME}.onmicrosoft.com/{YOUR_USER_FLOW_NAME}/oauth2/v2.0/token
      
    • Klient-ID. Det här värdet är program-ID:t (klient) för B2C-resursprogrammet.

      {YOUR_APPLICATION_ID}
      
    • Omfång. Det här värdet definieras i B2C-resursprogrammet i avsnittet Exponera ett API . Det beviljade omfånget är patient.all.read. Omfångsbegäran måste vara en fullständigt kvalificerad URL, till exempel https://testb2c.onmicrosoft.com/fhir/patient.all.read.

  5. Kopiera det fullständigt kvalificerade omfånget från avsnittet Exponera ett API i B2C-resursprogrammet.

    {YOUR_APPLICATION_ID_URI}/patient.all.read
    

    Screenshot showing Postman URLs.

Hämta patientresursen med B2C-användaren

Kontrollera att Azure AD B2C-användare kan komma åt FHIR-resurser.

  1. När auktoriseringskonfigurationen i Postman har konfigurerats för att starta B2C-användarflödet väljer du Hämta ny åtkomsttoken för att hämta en åtkomsttoken.

    Screenshot showing Postman get access token.

  2. Använd autentiseringsuppgifterna för testpatienten för att logga in.

    Screenshot showing Postman get token.

  3. Välj Använd token för att använda åtkomsttoken för alla begäranden i samlingen.

    Screenshot showing Postman use token.

  4. Skapa en ny begäran om att söka efter patientresurser i FHIR-tjänsten. Välj ellipsknappen (...) bredvid namnet på samlingen och välj sedan Lägg till begäran.

    Screenshot showing Postman request added.

  5. Ange metoden till GET, ange den fullständigt kvalificerade FHIR-tjänst-URL:en och lägg sedan till sökvägen /Patient.

  6. Välj Skicka.

  7. Kontrollera att svaret innehåller den enda patientresursen.

    Screenshot showing Postman request response.

Nästa steg

Konfigurera flera identitetsprovidrar

Felsöka konfiguration av identitetsprovider

Kommentar

FHIR® är ett registrerat varumärke som tillhör HL7 och används med tillstånd av HL7.