Freigeben über


Verwenden von Azure Active Directory B2C zum Gewähren des Zugriffs auf den FHIR-Dienst

Organisationen im Gesundheitswesen können Azure Active Directory B2C (Azure AD B2C) mit dem FHIR®-Dienst in Azure Health Data Services verwenden, um Zugriff auf ihre Anwendungen und Benutzer*innen zu gewähren.

Erstellen eines Azure AD B2C-Mandanten für den FHIR-Dienst

Das Erstellen eines Azure AD B2C-Mandanten für den FHIR-Dienst richtet eine sichere Infrastruktur für die Verwaltung von Benutzeridentitäten in Ihren Gesundheitsanwendungen ein.

Wenn Sie bereits einen Azure AD B2C-Mandanten erstellt haben, können Sie fortfahren mit FHIR-Dienst mit Azure AD B2C bereitstellen.

Bereitstellen eines Azure AD B2C-Mandanten mithilfe einer ARM-Vorlage

Verwenden Sie PowerShell oder Azure CLI, um die ARM-Vorlage programmgesteuert in einem Azure-Abonnement bereitzustellen. Weitere Informationen zu Syntax, Eigenschaften und Verwendung der Vorlage finden Sie unter Bereitstellen einer Instanz von Azure Active Directory B2C.

Führen Sie den Code in Azure Cloud Shell oder in PowerShell lokal in Visual Studio Code aus, um den FHIR-Dienst im Azure AD B2C-Mandanten bereitzustellen.

  1. Verwenden Sie Connect-AzAccount, um sich bei Azure anzumelden. Verwenden Sie nach der Anmeldung Get-AzContext, um das Abonnement und den Mandanten zu überprüfen, die Sie verwenden möchten. Ändern Sie das Abonnement und den Mandanten bei Bedarf.

  2. Erstellen Sie eine neue Ressourcengruppe (oder verwenden Sie eine vorhandene, indem Sie den Schritt „Ressourcengruppe erstellen“ überspringen oder die Zeile beginnend mit New-AzResourceGroup auskommentieren).

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

Hinzufügen von B2C-Testbenutzer*innen zum Azure AD B2C-Mandanten

Sie benötigen B2C-Testbenutzer*innen, um eine bestimmte Patientenressource im FHIR-Dienst zuzuordnen und zu überprüfen, ob der Authentifizierungsflow wie erwartet funktioniert.

  1. Wechseln Sie im Azure-Portal zur B2C-Ressource. Wählen Sie B2C-Mandant öffnen aus.

    Screenshot einer B2C-Ressource.

  2. Wählen Sie im linken Bereich Benutzer*innen aus.

    Screenshot der Heimanwenderin oder des Heimanwenders.

  3. Wählen Sie + Neue Benutzer*innen aus.

    Screenshot, der das Hinzufügen eines neuen Benutzerkontos zeigt.

Das benutzerdefinierte fhirUser-Benutzerattribut wird verwendet, um B2C-Benutzer*innen mit einer Benutzerressource im FHIR-Dienst zu verknüpfen. In diesem Beispiel wird ein Benutzer mit dem Namen Testpatient1 im B2C-Mandanten erstellt. In einem späteren Schritt wird eine Patientenressource im FHIR-Dienst erstellt. Der/die Testpatient1-Benutzer*in wird mit der Patientenressource verknüpft, indem der fhirUser-Attributwert auf den Patientenressourcenbezeichner festgelegt wird. Weitere Informationen zu benutzerdefinierten Benutzerattributen finden Sie unter Benutzerflow für benutzerdefinierte Attribute in Azure Active Directory B2C.

  1. Wählen Sie auf der Seite Azure AD B2C im linken Bereich Benutzerattribute aus.

  2. Wählen Sie + Hinzufügen aus.

  3. Geben Sie im Feld Name den Wert fhirUser ein (Groß-/Kleinschreibung beachten).

  4. Wählen Sie in der Dropdownliste Datentyp die Option Zeichenfolge aus.

  5. Wählen Sie Erstellen.

    Screenshot des B2C-Attributs.

Erstellen eines neuen B2C-Benutzerflows

Benutzerflows definieren die Abfolge der Schritte, die Benutzer*innen ausführen müssen, um sich anzumelden. In diesem Beispiel wird ein Benutzerflow so definiert, dass bei der Anmeldung von Benutzern das bereitgestellte Zugriffstoken den fhirUser-Anspruch enthält. Weitere Informationen finden Sie unter Erstellen von Benutzerflows und benutzerdefinierten Richtlinien in Azure Active Directory B2C.

  1. Wählen Sie auf der Seite Azure AD B2C im linken Bereich Benutzerflows aus.

  2. Wählen Sie +Neuer Benutzerflowaus.

    Screenshot des B2C-Benutzerflows.

  3. Weisen Sie dem Benutzerflow einen für den B2C-Mandanten eindeutigen Namen zu. Der Name muss nicht global eindeutig sein. In diesem Beispiel ist der Name des Benutzerflows USER_FLOW_1. Notieren Sie sich den Namen.

  4. Stellen Sie sicher, dass die E-Mail-Anmeldung für lokale Konten aktiviert ist, damit sich Testbenutzer*innen anmelden und ein Zugriffstoken für den FHIR-Dienst abrufen kann.

    Screenshot der Konfiguration des B2C-Benutzerflows.

  5. Scrollen Sie auf der Seite Benutzerflow erstellen zum Abschnitt 5. Anwendungsansprüche, und wählen Sie dann Mehr anzeigen... aus, um eine Liste aller verfügbaren Ansprüche anzuzeigen.

  6. Wählen Sie den Anspruch fhirUser aus.

  7. Klicken Sie auf OK.

  8. Wählen Sie Erstellen.

    Screenshot der Konfiguration des B2C-Benutzerflows mit FHIR-Benutzeranspruch.

Erstellen einer neuen B2C-Ressourcenanwendung

Die B2C-Ressourcenanwendung verarbeitet Authentifizierungsanforderungen Ihrer Gesundheitsanwendung an Azure Active Directory B2C.

  1. Wählen Sie auf der Seite Azure AD B2C im linken Bereich App-Registrierungen aus.

  2. Wählen Sie + Neue Registrierung aus.

    Screenshot der neuen B2C-Anwendung.

  3. Geben Sie einen Anzeigenamen ein. In diesem Beispiel wird der FHIR-Dienst verwendet.

  4. Wählen Sie in der Liste Unterstützte Kontotypen die Option Konten in einem beliebigen Identitätsanbieter oder Organisationsverzeichnis (zum Authentifizieren von Benutzer*innen mit Benutzerflows) aus.

  5. Wählen Sie in der Dropdownliste Umleitungs-URI (empfohlen) die Option *Öffentlicher Client/nativ (Mobile und Desktop) aus. Füllen Sie den Wert mit dem Postman-Rückruf-URI https://oauth.pstmn.io/v1/callback auf. Dieser Rückruf-URI dient zu Testzwecken.

  6. Wählen Sie im Abschnitt Berechtigungen die Option Administratoreinwilligung für openid- und offline_access-Berechtigungen erteilen aus.

  7. Klicken Sie auf Registrieren. Warten Sie, bis die Anwendungsregistrierung abgeschlossen ist. Der Browser navigiert automatisch zur Seite Übersicht.

    Screenshot des B2C-Anwendungsregisters.

Konfigurieren von API-Berechtigungen für die App

  1. Wählen Sie auf der Seite „App-Registrierungen im linken Bereich Manifest aus.

  2. Scrollen Sie, bis Sie das oauth2Permissions-Array finden. Ersetzen Sie das Array durch einen oder mehrere Werte in der Datei oauth2Permissions.json. Kopieren Sie das gesamte Array oder einzelne Berechtigungen.

    Wenn Sie der Liste eine Berechtigung hinzufügen, können alle Benutzer*innen im B2C-Mandanten ein Zugriffstoken mit der API-Berechtigung abrufen. Wenn eine Zugriffsebene für einen Benutzer innerhalb des B2C-Mandanten nicht geeignet ist, fügen Sie sie nicht dem Array hinzu, da es keine Möglichkeit gibt, Berechtigungen auf eine Teilmenge von Benutzern zu beschränken.

  3. Nachdem das oauth2Permissions-Array aufgefüllt wurde, wählen Sie Speichern aus.

    Screenshot des B2C-Anwendungsmanifests.

Verfügbarmachen der Web-API und Zuweisen eines Anwendungs-ID-URI

  1. Wählen Sie auf der Seite „App-Registrierungen im linken Bereich die Option API verfügbar machen aus.

  2. Wählen Sie Hinzufügen aus.

  3. Standardmäßig wird das Feld Anwendungs-ID-URI mit der Anwendungs-ID (Client-ID) aufgefüllt. Ändern Sie den Wert bei Bedarf. In diesem Beispiel ist der Wert fhir.

  4. Wählen Sie Speichern.

    Screenshot der B2C-Anwendungs-API.

  5. Wählen Sie auf der Seite „App-Registrierungen im linken Bereich API-Berechtigungen aus.

  6. Wählen Sie + Berechtigung hinzufügen aus.

    Screenshot der B2C-API-Berechtigung.

  7. Wählen Sie im Bereich API-Berechtigungen anfordern die Option Von meiner Organisation verwendete APIs aus.

  8. Wählen Sie die Ressourcenanwendung aus der Liste aus.

    Screenshot der B2C-API-Berechtigungen mit verwendeten APIs.

  9. Wählen Sie im Bereich API-Berechtigungen anfordern im Abschnitt Patient*in mindestens eine Berechtigung aus. In diesem Beispiel wird die Berechtigung patient.all.read ausgewählt, was bedeutet, dass Benutzer*innen, die ein Zugriffstoken mit dem Bereich patient.all.read anfordern, über Leseberechtigungen (patient.all.read) für alle FHIR-Ressourcen (patient.all.read) im Patientendepot (patient.all.read) verfügen. Weitere Informationen finden Sie unter Patientendepot.

  10. Wählen Sie Berechtigungen hinzufügen aus.

    Screenshot der B2C-API-Berechtigungen mit hinzugefügten Berechtigungen.

  11. Wählen Sie auf der Seite API-Berechtigungen im Abschnitt Konfigurierte Berechtigungen die Option Administratoreinwilligung erteilen aus.

    Screenshot der B2C-API-Berechtigungen für die Administratoreinwilligung.

Bereitstellen des FHIR-Diensts mit Azure Active Directory B2C als Identitätsanbieter

Durch die Bereitstellung des FHIR-Diensts mit Azure Active Directory B2C als Identitätsanbieter kann der FHIR-Dienst Benutzer*innen basierend auf ihren Azure AD B2C-Anmeldeinformationen authentifizieren und sicherstellen, dass nur autorisierte Benutzer*innen auf vertrauliche Patienteninformationen zugreifen können

Abrufen der B2C-Autorität und Client-ID

Verwenden Sie die Parameter für Autorität und Client-ID (oder Anwendungs-ID ), um den FHIR-Dienst für die Verwendung eines Azure AD B2C-Mandanten als Identitätsanbieter zu konfigurieren.

  1. Erstellen Sie die Autoritätszeichenfolge mithilfe des Namens des B2C-Mandanten und des Namens des Benutzerflows.

    https://<YOUR_B2C_TENANT_NAME>.b2clogin.com/<YOUR_B2C_TENANT_NAME>.onmicrosoft.com/<YOUR_USER_FLOW_NAME>/v2.0
    
  2. Testen Sie die Autoritätszeichenfolge, indem Sie eine Anforderung an den .well-known/openid-configuration-Endpunkt senden. Geben Sie die Zeichenfolge in einen Browser ein, um zu bestätigen, dass er zur JSON-Datei der OpenId-Konfiguration navigiert. Wenn der JSON-Code der OpenId-Konfiguration nicht geladen werden kann, stellen Sie sicher, dass der B2C-Mandantenname und der Benutzerflowname korrekt sind.

    https://<YOUR_B2C_TENANT_NAME>.b2clogin.com/<YOUR_B2C_TENANT_NAME>.onmicrosoft.com/<YOUR_USER_FLOW_NAME>/v2.0/.well-known/openid-configuration
    
  3. Rufen Sie die Client-ID aus der Übersicht der Ressourcenanwendung ab.

    Screenshot der Übersichtsseite der B2C-Anwendung.

Bereitstellen des FHIR-Diensts mithilfe einer ARM-Vorlage

Verwenden Sie eine ARM-Vorlage, um die Bereitstellung des FHIR-Diensts zu vereinfachen. Verwenden Sie PowerShell oder Azure CLI, um die ARM-Vorlage in einem Azure-Abonnement bereitzustellen.

Führen Sie den Code in Azure Cloud Shell oder in PowerShell lokal in Visual Studio Code aus, um den FHIR-Dienst im Azure AD B2C-Mandanten bereitzustellen.

  1. Verwenden Sie Connect-AzAccount, um sich bei Azure anzumelden. Verwenden Sie Get-AzContext, um das Abonnement und den Mandanten zu überprüfen, die Sie verwenden wollen. Ändern Sie das Abonnement und den Mandanten bei Bedarf.

  2. Erstellen Sie eine neue Ressourcengruppe (oder verwenden Sie eine vorhandene, indem Sie den Schritt „Ressourcengruppe erstellen“ überspringen oder die Zeile beginnend mit New-AzResourceGroup auskommentieren).

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

Überprüfen, ob Azure AD B2C-Benutzer*innen auf FHIR-Ressourcen zugreifen können

Der Validierungsprozess umfasst das Erstellen einer Patientenressource im FHIR-Dienst, das Verknüpfen der Patientenressource mit dem/der Azure AD B2C-Benutzer*in und das Konfigurieren von Postman zum Abrufen eines Zugriffstokens für B2C-Benutzer*innen. Nach Abschluss des Überprüfungsprozesses können Sie die Patientenressource mithilfe von B2C-Testbenutzer*innen abrufen.

Ausführen von Postman zum Abrufen eines Zugriffstokens

Führen Sie die Postman-Anwendung lokal oder in einem Webbrowser aus. Schritte zum Erhalt des richtigen Zugriffs auf den FHIR-Dienst finden Sie unter Zugriff auf den FHIR-Dienst mittels Postman.

Wenn Sie die Schritte im Abschnitt Abrufen der FHIR-Ressource ausführen, gibt die Anforderung eine leere Antwort zurück, da der FHIR-Dienst neu ist und keine Patientenressourcen enthält.

Erstellen einer Patientenressource im FHIR-Dienst

Es ist wichtig zu beachten, dass Benutzer im B2C-Mandanten keine Ressourcen lesen können, bis der Benutzer (z. B. ein Patient oder ein Arzt) mit einer FHIR-Ressource verknüpft ist. Benutzer*innen mit der Rolle FhirDataWriter oder FhirDataContributor in Microsoft Entra ID, wo der FHIR-Dienst als Mandant vorhanden ist, müssen diesen Schritt ausführen.

  1. Erstellen Sie Patient*innen mit einem bestimmten Bezeichner, indem Sie die Methode auf PUTändern und eine Anforderung an {{fhirurl}}/Patient/1 mit diesem Textkörper ausführen:
{
    "resourceType": "Patient",
    "id": "1",
    "name": [
        {
            "family": "Patient1",
            "given": [
                "Test"
            ]
        }
    ]
}
  1. Überprüfen Sie, ob die Patient*innen erstellt wurden, indem Sie die Methode wieder nach GET ändern und überprüfen, ob eine Anforderung an {{fhirurl}}/Patient die neu erstellten Patient*innen zurückgibt.

Erstellen Sie eine explizite Verknüpfung zwischen dem Testbenutzer im B2C-Mandanten und der Ressource im FHIR-Dienst. Erstellen Sie den Link mithilfe von Erweiterungsattributen in Microsoft Graph. Weitere Informationen finden Sie unter Definieren benutzerdefinierter Attribute in Azure Active Directory B2C.

  1. Wechseln Sie zum B2C-Mandanten. Wählen Sie im linken Bereich App-Registrierungen aus.

  2. Wählen Sie Alle Anwendungen aus.

  3. Wählen Sie die Anwendung mit dem Präfix b2c-extensions-app aus.

    Screenshot der B2C-App-Liste.

  4. Notieren Sie sich den Wert von Anwendungs-ID (Client-ID).

    Screenshot der B2C-Erweiterungs-App.

  5. Navigieren Sie zurück zur Homepage des B2C-Mandanten, und wählen Sie im linken Bereich Benutzer*innen aus.

    Screenshot der B2C-Heimanwenderin oder des B2C-Heimanwenders.

  6. Wählen Sie Testpatient1 aus.

    Screenshot der B2C-Benutzerliste.

  7. Notieren Sie sich den Objekt-ID-Wert.

    Screenshot der B2C-Benutzer-ID.

  8. Öffnen Sie den Microsoft Graph-Tester. Melden Sie sich mit Benutzer*innen an, welche die Rolle „Globaler Administrator“ für den B2C-Mandanten zugewiesen haben. (Es ist ratsam, neue Administratorbenutzer*innen im B2C-Mandanten zu erstellen, um Benutzer*innen im Mandanten zu verwalten.)

    Screenshot der Graph-Anmeldung.

  9. Wählen Sie den Avatar für den/die Benutzer*in aus, und wählen Sie dann Berechtigungen zustimmen aus.

    Screenshot der Graph-Einwilligung für Testbenutzerin oder -benutzer.

  10. Scrollen Sie zu Benutzer*in. Einwilligung zu User.ReadWrite.All. Mit dieser Berechtigung können Sie Testpatient1-Benutzer*innen mit dem fhirUser-Anspruchswert aktualisieren.

    Screenshot der Graph-Einwilligung für den Anspruch „fhirUser“.

  11. Aktualisieren Sie Benutzer*innen nach Abschluss des Zustimmungsprozesses. Sie benötigen die b2c-extensions-app-Anwendungs-ID (Client-ID) und die Benutzerobjekt-ID.

    • Ändern Sie die Methode in PATCH.

    • Ändern Sie die URL in https://graph.microsoft.com/v1.0/users/{USER_OBJECT_ID}.

    • Erstellen Sie den PATCH-Textkörper. Ein PATCH-Textkörper ist ein einzelnes Schlüssel/Wert-Paar, wobei das Schlüsselformat extension_{B2C_EXTENSION_APP_ID_NO_HYPHENS}_fhirUser und der Wert die vollqualifizierte FHIR-Ressourcen-ID für Patient*innen https://{YOUR_FHIR_SERVICE}.azurehealthcareapis.com/Patient/1" ist.

    Weitere Informationen finden Sie unter Verwalten von Erweiterungsattributen über Microsoft Graph.

  12. Nachdem die Anforderung formatiert wurde, wählen Sie Abfrage ausführen aus. Warten Sie auf eine erfolgreiche Antwort, die bestätigt, dass Benutzer*innen im B2C-Mandanten mit der Patientenressource im FHIR-Dienst verknüpft sind.

    Screenshot des Graph-Patch.

Konfigurieren von Postman zum Abrufen eines Zugriffstokens für B2C-Benutzer*innen

Rufen Sie ein Zugriffstoken zum Testen des Authentifizierungsflows ab.

  1. Starten Sie die Postman-Anwendung, und erstellen Sie dann eine neue leere Sammlung. In diesem Beispiel heißt die Sammlung FHIR-Patient*in.

    Screenshot der neuen Postman-Sammlung.

  2. Wählen Sie in der Sammlungsübersicht die Registerkarte Autorisierung aus.

  3. Wählen Sie in der Dropdownliste Typ die Option OAuth 2.0 aus.

    Screenshot der Postman-Authentifizierung.

  4. Scrollen Sie zum Abschnitt Neues Token konfigurieren, und geben Sie die folgenden Werte ein.

    • Rückruf-URL. Dieser Wert wird konfiguriert, wenn die B2C-Ressourcenanwendung erstellt wird.

      https://oauth.pstmn.io/v1/callback
      
    • Authentifizierungs-URL. Dieser Wert kann mithilfe des Namens des B2C-Mandanten und dem Namen des Benutzerflows erstellt werden.

      https://{YOUR_B2C_TENANT_NAME}.b2clogin.com/{YOUR_B2C_TENANT_NAME}.onmicrosoft.com/{YOUR_USER_FLOW_NAME}/oauth2/v2.0/authorize
      
    • Zugriffstoken-URL. Dieser Wert kann mithilfe des Namens des B2C-Mandanten und dem Namen des Benutzerflows erstellt werden.

      https://{YOUR_B2C_TENANT_NAME}.b2clogin.com/{YOUR_B2C_TENANT_NAME}.onmicrosoft.com/{YOUR_USER_FLOW_NAME}/oauth2/v2.0/token
      
    • Client-ID. Dieser Wert ist die Anwendungs-ID (Client-ID) der B2C-Ressourcenanwendung.

      {YOUR_APPLICATION_ID}
      
    • Umfang. Dieser Wert wird in der B2C-Ressourcenanwendung im Abschnitt API verfügbar machen definiert. Die gewährte Bereichsberechtigung ist patient.all.read. Die Bereichsanforderung muss eine vollqualifizierte URL sein, z. B. https://testb2c.onmicrosoft.com/fhir/patient.all.read.

  5. Kopieren Sie den vollqualifizierten Bereich aus dem Abschnitt API verfügbar machen der B2C-Ressourcenanwendung.

    {YOUR_APPLICATION_ID_URI}/patient.all.read
    

    Screenshot der Postman-URLs.

Abrufen der Patientenressource mithilfe von B2C-Benutzer*innen

Stellen Sie sicher, dass Azure AD B2C-Benutzer*innen auf FHIR-Ressourcen zugreifen können.

  1. Wenn die Autorisierungskonfiguration in Postman so eingerichtet ist, dass der B2C-Benutzerflow gestartet wird, wählen Sie Neues Zugriffstoken abrufen aus, um ein Zugriffstoken abzurufen.

    Screenshot des Postman get-Zugriffstoken.

  2. Verwenden Sie die Testpatient-Anmeldeinformationen, um sich anzumelden.

    Screenshot des Postman get-Token.

  3. Wählen Sie Token verwenden aus, um das Zugriffstoken für alle Anforderungen in der Sammlung zu verwenden.

    Screenshot des Postman use-Token.

  4. Erstellen Sie eine neue Anforderung zum Suchen nach Patientenressourcen im FHIR-Dienst. Wählen Sie die Schaltfläche mit den Auslassungspunkten (...) neben dem Namen der Sammlung aus, und wählen Sie dann Anforderung hinzufügen aus.

    Screenshot der hinzugefügten Postman-Anforderung.

  5. Legen Sie die Methode auf GET fest, geben Sie die vollqualifizierte FHIR-Dienst-URL ein, und fügen Sie dann den Pfad /Patient hinzu.

  6. Wählen Sie Senden aus.

  7. Stellen Sie sicher, dass die Antwort die einzelne Patientenressource enthält.

    Screenshot der Postman-Anforderungsantwort.

Nächste Schritte

Konfigurieren mehrerer Identitätsanbieter

Problembehandlung der Identitätsanbieterkonfiguration

Hinweis

FHIR® ist eine eingetragene Marke von HL7 und wird mit Genehmigung von HL7 verwendet.