Dela via


Använd 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.

    Skärmbild som visar en B2C-resurs.

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

    Skärmbild som visar hemanvändare.

  3. Välj + Ny användare.

    Skärmbild som visar hur du lägger till en ny användare.

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.

    Skärmbild som visar B2C-attribut.

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.

    Skärmbild som visar B2C-användarflöde.

  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.

    Skärmbild som visar konfiguration av B2C-användarflöde.

  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.

    Skärmbild som visar B2C-användarflödeskonfiguration med FHIR-användaranspråk.

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.

    Skärmbild som visar ett nytt B2C-program.

  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.

    Skärmbild som visar B2C-programregistrering.

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.

    Skärmbild som visar B2C-programmanifestet.

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.

    Skärmbild som visar API för B2C-program.

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

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

    Skärmbild som visar B2C API-behörighet.

  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.

    Skärmbild som visar B2C API-behörigheter med API:er som används.

  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.

    Skärmbild som visar B2C API-behörigheter med tillagda behörigheter.

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

    Skärmbild som visar B2C API-behörigheter för administratörsmedgivande.

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.

    Skärmbild som visar B2C-programöversiktssidan.

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.

    Skärmbild som visar B2C-applistan.

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

    Skärmbild som visar B2C-tilläggsappen.

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

    Skärmbild som visar B2C-hemanvändare.

  6. Välj Test patient1.

    Skärmbild som visar B2C-användarlistan.

  7. Observera objekt-ID-värdet.

    Skärmbild som visar B2C-användar-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.)

    Skärmbild som visar Graph-inloggning.

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

    Skärmbild som visar Graph-medgivande för testanvändare.

  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 .

    Skärmbild som visar Graph-medgivande för fhirUser-anspråk.

  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.

    Skärmbild som visar Graph-korrigering.

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.

    Skärmbild som visar Postmans nya samling.

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

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

    Skärmbild som visar Postman-autentisering.

  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
    

    Skärmbild som visar Postman-URL:er.

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.

    Skärmbild som visar Postman hämta åtkomsttoken.

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

    Skärmbild som visar Postman get-token.

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

    Skärmbild som visar Postman-användningstoken.

  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.

    Skärmbild som visar att Postman-begäran har lagts till.

  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.

    Skärmbild som visar Svar på Postman-begäran.

Nästa steg

Konfigurera flera identitetsprovidrar

Felsök konfiguration av identitetsprovider

Kommentar

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