Udzielanie dostępu do usługi FHIR przy użyciu usługi Azure Active Directory B2C

Organizacje opieki zdrowotnej mogą używać usługi Azure Active Directory B2C (Azure AD B2C ) z usługą FHIR® w usługach Azure Health Data Services w celu udzielenia dostępu do aplikacji i użytkowników.

Tworzenie dzierżawy usługi Azure AD B2C dla usługi FHIR

Tworzenie dzierżawy usługi Azure AD B2C dla usługi FHIR umożliwia skonfigurowanie bezpiecznej infrastruktury do zarządzania tożsamościami użytkowników w aplikacjach opieki zdrowotnej.

Jeśli dzierżawa usługi Azure AD B2C została już utworzona, możesz przejść do sekcji Deploy the FHIR service with Azure AD B2C (Wdrażanie usługi FHIR za pomocą usługi Azure AD B2C).

Wdrażanie dzierżawy usługi Azure AD B2C przy użyciu szablonu usługi ARM

Programowe wdrażanie szablonu usługi ARM w subskrypcji platformy Azure przy użyciu programu PowerShell lub interfejsu wiersza polecenia platformy Azure. Aby uzyskać więcej informacji na temat składni, właściwości i użycia szablonu, zobacz Deploy an instance of Azure Active Directory B2C (Wdrażanie wystąpienia usługi Azure Active Directory B2C).

Uruchom kod w usłudze Azure Cloud Shell lub lokalnie w programie PowerShell w programie Visual Studio Code, aby wdrożyć usługę FHIR w dzierżawie usługi Azure AD B2C.

  1. Użyj polecenia Connect-AzAccount , aby zalogować się na platformie Azure. Po zalogowaniu użyj polecenia Get-AzContext , aby zweryfikować subskrypcję i dzierżawę, której chcesz użyć. W razie potrzeby zmień subskrypcję i dzierżawę.

  2. Utwórz nową grupę zasobów lub użyj istniejącej, pomijając krok lub komentując wiersz rozpoczynający się od 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

Dodawanie testowego użytkownika B2C do dzierżawy usługi Azure AD B2C

Aby sprawdzić, czy przepływ uwierzytelniania działa zgodnie z oczekiwaniami, potrzebny jest testowy użytkownik B2C do skojarzenia z określonym zasobem pacjenta w usłudze FHIR.

  1. W witrynie Azure Portal przejdź do zasobu B2C. Wybierz pozycję Otwórz dzierżawę B2C.

    Zrzut ekranu przedstawiający zasób B2C.

  2. W okienku po lewej stronie wybierz pozycję Użytkownicy.

    Zrzut ekranu przedstawiający użytkownika macierzystego.

  3. Wybierz pozycję + Nowy użytkownik.

    Zrzut ekranu przedstawiający dodawanie nowego użytkownika.

Niestandardowy fhirUser atrybut użytkownika służy do łączenia użytkownika B2C z zasobem użytkownika w usłudze FHIR. W tym przykładzie w dzierżawie usługi B2C zostanie utworzony użytkownik o nazwie Test Patient1 , a w późniejszym kroku w usłudze FHIR zostanie utworzony zasób pacjenta . Użytkownik Test Patient1 jest połączony z zasobem pacjenta, ustawiając wartość atrybutu fhirUser na identyfikator zasobu pacjenta. Aby uzyskać więcej informacji na temat niestandardowych atrybutów użytkownika, zobacz Atrybuty niestandardowe przepływu użytkownika w usłudze Azure Active Directory B2C.

  1. Na stronie Azure AD B2C w okienku po lewej stronie wybierz pozycję Atrybuty użytkownika.

  2. Wybierz pozycję + Dodaj.

  3. W polu Nazwa wprowadź fhirUser (wielkość liter).

  4. Z listy rozwijanej Typ danych wybierz pozycję Ciąg.

  5. Wybierz pozycję Utwórz.

    Zrzut ekranu przedstawiający atrybut B2C.

Tworzenie nowego przepływu użytkownika B2C

Przepływy użytkowników definiują sekwencję kroków, które użytkownicy muszą wykonać, aby się zalogować. W tym przykładzie przepływ użytkownika jest definiowany tak, aby po zalogowaniu fhirUser się użytkownika podany token dostępu zawiera oświadczenie. Aby uzyskać więcej informacji, zobacz Tworzenie przepływów użytkownika i zasad niestandardowych w usłudze Azure Active Directory B2C.

  1. Na stronie Azure AD B2C w okienku po lewej stronie wybierz pozycję Przepływy użytkownika.

  2. Wybierz pozycję + Nowy przepływ użytkownika.

    Zrzut ekranu przedstawiający przepływ użytkownika B2C.

  3. Nadaj przepływowi użytkownika nazwę unikatową dla dzierżawy B2C. (Nazwa nie musi być globalnie unikatowa). W tym przykładzie nazwa przepływu użytkownika jest USER_FLOW_1. Zanotuj nazwę.

  4. Upewnij się, że logowanie e-mail jest włączone dla kont lokalnych, aby użytkownik testowy mógł się zalogować i uzyskać token dostępu dla usługi FHIR.

    Zrzut ekranu przedstawiający konfigurację przepływu użytkownika B2C.

  5. Na stronie Tworzenie przepływu użytkownika przewiń do sekcji 5. Oświadczenia aplikacji, a następnie wybierz pozycję Pokaż więcej... aby wyświetlić listę wszystkich dostępnych oświadczeń.

  6. Wybierz oświadczenie fhirUser.

  7. Wybierz pozycję OK.

  8. Wybierz pozycję Utwórz.

    Zrzut ekranu przedstawiający konfigurację przepływu użytkownika B2C z oświadczeniem użytkownika FHIR.

Tworzenie nowej aplikacji zasobów B2C

Aplikacja zasobów B2C obsługuje żądania uwierzytelniania z aplikacji opieki zdrowotnej do usługi Azure Active Directory B2C.

  1. Na stronie Azure AD B2C w okienku po lewej stronie wybierz pozycję Rejestracje aplikacji.

  2. Wybierz pozycję + Nowa rejestracja.

    Zrzut ekranu przedstawiający nową aplikację B2C.

  3. Wprowadź nazwę wyświetlaną. W tym przykładzie użyto usługi FHIR.

  4. Na liście Obsługiwane typy kont wybierz pozycję Konta w dowolnym dostawcy tożsamości lub katalogu organizacyjnym (na potrzeby uwierzytelniania użytkowników za pomocą przepływów użytkownika).

  5. Z listy rozwijanej Identyfikator URI przekierowania (zalecane) wybierz pozycję *Klient publiczny/natywny (mobilny i klasyczny). Wypełnij wartość identyfikatorem URI https://oauth.pstmn.io/v1/callbackwywołania zwrotnego narzędzia Postman. Identyfikator URI wywołania zwrotnego służy do celów testowych.

  6. W sekcji Uprawnienia wybierz pozycję Udziel zgody administratora, aby otworzyć identyfikator i offline_access uprawnienia.

  7. Wybierz pozycję Zarejestruj. Poczekaj na ukończenie rejestracji aplikacji. Przeglądarka automatycznie przechodzi do strony Przegląd aplikacji.

    Zrzut ekranu przedstawiający rejestrowanie aplikacji B2C.

Konfigurowanie uprawnień interfejsu API dla aplikacji

  1. Na stronie Rejestracje aplikacji w okienku po lewej stronie wybierz pozycję Manifest.

  2. Przewiń do momentu znalezienia tablicy oauth2Permissions . Zastąp tablicę co najmniej jedną wartością w pliku oauth2Permissions.json . Skopiuj całą tablicę lub poszczególne uprawnienia.

    Jeśli dodasz uprawnienie do listy, każdy użytkownik w dzierżawie B2C może uzyskać token dostępu z uprawnieniem interfejsu API. Jeśli poziom dostępu nie jest odpowiedni dla użytkownika w dzierżawie usługi B2C, nie należy dodawać do tablicy, ponieważ nie ma możliwości ograniczenia uprawnień do podzbioru użytkowników.

  3. Po wypełnieniu tablicy oauth2Permissions wybierz pozycję Zapisz.

    Zrzut ekranu przedstawiający manifest aplikacji B2C.

Uwidaczniaj internetowy interfejs API i przypisz identyfikator URI identyfikatora aplikacji

  1. Na stronie Rejestracje aplikacji w okienku po lewej stronie wybierz pozycję Uwidaczniaj interfejs API.

  2. Wybierz opcję Dodaj.

  3. Domyślnie pole Identyfikator URI identyfikatora aplikacji jest wypełniane identyfikatorem aplikacji (klienta). W razie potrzeby zmień wartość. W tym przykładzie wartość jest fhir.

  4. Wybierz pozycję Zapisz.

    Zrzut ekranu przedstawiający interfejs API aplikacji B2C.

  5. Na stronie Rejestracje aplikacji w okienku po lewej stronie wybierz pozycję Uprawnienia interfejsu API.

  6. Wybierz pozycję + Dodaj uprawnienie.

    Zrzut ekranu przedstawiający uprawnienie interfejsu API B2C.

  7. W okienku Żądania uprawnień interfejsu API wybierz pozycję Interfejsy API używane przez moją organizację.

  8. Wybierz aplikację zasobów z listy.

    Zrzut ekranu przedstawiający uprawnienia interfejsu API B2C z używanymi interfejsami API.

  9. W okienku Żądania uprawnień interfejsu API w sekcji Pacjent wybierz co najmniej jedno uprawnienie. W tym przykładzie wybrano uprawnienie patient.all.read , co oznacza, że użytkownik żąda tokenu dostępu z zakresem patient.all.read ma uprawnienia odczyt (patient.all).odczyt) dla wszystkich zasobów FHIR (pacjent.all.read) w przedziale pacjenta (patient.all.read) Aby uzyskać więcej informacji, zobacz Przedział pacjenta.

  10. Wybierz pozycję Dodaj uprawnienia.

    Zrzut ekranu przedstawiający uprawnienia interfejsu API B2C z dodanymi uprawnieniami.

  11. Na stronie Uprawnienia interfejsu API w sekcji Skonfigurowane uprawnienia wybierz pozycję Udziel zgody administratora.

    Zrzut ekranu przedstawiający uprawnienia interfejsu API B2C w celu uzyskania zgody administratora.

Wdrażanie usługi FHIR przy użyciu usługi Azure Active Directory B2C jako dostawcy tożsamości

Wdrażanie usługi FHIR przy użyciu usługi Azure Active Directory B2C jako dostawcy tożsamości umożliwia usłudze FHIR uwierzytelnianie użytkowników na podstawie poświadczeń usługi Azure AD B2C, zapewniając, że tylko autoryzowani użytkownicy mogą uzyskiwać dostęp do poufnych informacji o pacjentach

Uzyskiwanie urzędu B2C i identyfikatora klienta

Użyj parametrów urzędu i identyfikatora klienta (lub identyfikatora aplikacji), aby skonfigurować usługę FHIR do używania dzierżawy usługi Azure AD B2C jako dostawcy tożsamości.

  1. Utwórz ciąg urzędu przy użyciu nazwy dzierżawy B2C i nazwy przepływu użytkownika.

    https://<YOUR_B2C_TENANT_NAME>.b2clogin.com/<YOUR_B2C_TENANT_NAME>.onmicrosoft.com/<YOUR_USER_FLOW_NAME>/v2.0
    
  2. Przetestuj ciąg urzędu, wysyłając żądanie do punktu końcowego .well-known/openid-configuration . Wprowadź ciąg w przeglądarce, aby potwierdzić przejście do pliku JSON konfiguracji OpenId. Jeśli nie można załadować pliku JSON konfiguracji OpenId, upewnij się, że nazwa dzierżawy B2C i nazwa przepływu użytkownika są poprawne.

    https://<YOUR_B2C_TENANT_NAME>.b2clogin.com/<YOUR_B2C_TENANT_NAME>.onmicrosoft.com/<YOUR_USER_FLOW_NAME>/v2.0/.well-known/openid-configuration
    
  3. Pobierz identyfikator klienta ze strony przeglądu aplikacji zasobów.

    Zrzut ekranu przedstawiający stronę przeglądu aplikacji B2C.

Wdrażanie usługi FHIR przy użyciu szablonu usługi ARM

Użyj szablonu usługi ARM, aby uprościć wdrażanie usługi FHIR. Użyj programu PowerShell lub interfejsu wiersza polecenia platformy Azure, aby wdrożyć szablon usługi ARM w subskrypcji platformy Azure.

Uruchom kod w usłudze Azure Cloud Shell lub lokalnie w programie PowerShell w programie Visual Studio Code, aby wdrożyć usługę FHIR w dzierżawie usługi Azure AD B2C.

  1. Użyj polecenia Connect-AzAccount , aby zalogować się na platformie Azure. Użyj polecenia Get-AzContext , aby zweryfikować subskrypcję i dzierżawę, której chcesz użyć. W razie potrzeby zmień subskrypcję i dzierżawę.

  2. Utwórz nową grupę zasobów lub użyj istniejącej, pomijając krok lub komentując wiersz rozpoczynający się od 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

Sprawdzanie, czy użytkownicy usługi Azure AD B2C mogą uzyskiwać dostęp do zasobów FHIR

Proces weryfikacji obejmuje utworzenie zasobu pacjenta w usłudze FHIR, połączenie zasobu pacjenta z użytkownikiem usługi Azure AD B2C i skonfigurowanie narzędzia Postman w celu uzyskania tokenu dostępu dla użytkowników B2C. Po zakończeniu procesu weryfikacji można pobrać zasób pacjenta przy użyciu użytkownika testowego B2C.

Uruchom narzędzie Postman, aby uzyskać token dostępu

Uruchom aplikację Postman lokalnie lub w przeglądarce internetowej. Aby uzyskać odpowiedni dostęp do usługi FHIR, zobacz Access the FHIR service using Postman (Uzyskiwanie dostępu do usługi FHIR przy użyciu narzędzia Postman).

Podczas wykonywania kroków sekcji zasobów GET FHIR żądanie zwraca pustą odpowiedź, ponieważ usługa FHIR jest nowa i nie ma żadnych zasobów pacjentów.

Tworzenie zasobu pacjenta w usłudze FHIR

Należy pamiętać, że użytkownicy w dzierżawie B2C nie mogą odczytać żadnych zasobów, dopóki użytkownik nie zostanie połączony z zasobem FHIR, na przykład jako pacjent lub lekarz. Użytkownik z FhirDataWriter rolą lub FhirDataContributor w identyfikatorze Entra firmy Microsoft, w którym jest dzierżawiona usługa FHIR, musi wykonać ten krok.

  1. Utwórz pacjenta z określonym identyfikatorem, zmieniając metodę na PUT i wykonując żądanie na {{fhirurl}}/Patient/1 przy użyciu tej treści:
{
    "resourceType": "Patient",
    "id": "1",
    "name": [
        {
            "family": "Patient1",
            "given": [
                "Test"
            ]
        }
    ]
}
  1. Sprawdź, czy pacjent jest tworzony, zmieniając metodę z powrotem na GET i sprawdzając, czy żądanie {{fhirurl}}/Patient zwraca nowo utworzonego pacjenta.

Musisz utworzyć jawny link między użytkownikiem testowym w dzierżawie B2C i zasobem w usłudze FHIR. Utwórz link przy użyciu atrybutów rozszerzenia w programie Microsoft Graph. Aby uzyskać więcej informacji, zobacz Definiowanie atrybutów niestandardowych w usłudze Azure Active Directory B2C.

  1. Przejdź do dzierżawy B2C. W okienku po lewej stronie wybierz pozycję Rejestracje aplikacji.

  2. Wybierz pozycję Wszystkie aplikacje.

  3. Wybierz aplikację z prefiksem b2c-extensions-app.

    Zrzut ekranu przedstawiający listę aplikacji B2C.

  4. Zanotuj wartość Identyfikator aplikacji (klienta).

    Zrzut ekranu przedstawiający aplikację rozszerzeń B2C.

  5. Przejdź z powrotem do strony głównej dzierżawy B2C, w okienku po lewej stronie wybierz pozycję Użytkownicy.

    Zrzut ekranu przedstawiający użytkownika głównego B2C.

  6. Wybierz pozycję Test Patient1.

    Zrzut ekranu przedstawiający listę użytkowników B2C.

  7. Zanotuj wartość Identyfikator obiektu.

    Zrzut ekranu przedstawiający identyfikator użytkownika B2C.

  8. Otwórz Eksploratora programu Microsoft Graph. Zaloguj się przy użyciu użytkownika przypisanego do roli globalnego Administracja istratora dla dzierżawy B2C. (Dobrym pomysłem jest utworzenie nowego użytkownika administratora w dzierżawie B2C w celu zarządzania użytkownikami w dzierżawie).

    Zrzut ekranu przedstawiający logowanie do programu Graph.

  9. Wybierz awatar użytkownika, a następnie wybierz pozycję Zgoda na uprawnienia.

    Zrzut ekranu przedstawiający zgodę programu Graph dla użytkownika testowego.

  10. Przewiń do pozycji Użytkownik. Zgoda na użytkownika.ReadWrite.All. To uprawnienie umożliwia zaktualizowanie użytkownika Test Patient1 przy użyciu fhirUser wartości oświadczenia.

    Zrzut ekranu przedstawiający zgodę programu Graph dla oświadczenia fhirUser.

  11. Po zakończeniu procesu wyrażania zgody zaktualizuj użytkownika. Potrzebny jest identyfikator aplikacji b2c-extensions-app (klient) i identyfikator obiektu użytkownika.

    • Zmień metodę na PATCH.

    • Zmień adres URL na https://graph.microsoft.com/v1.0/users/{USER_OBJECT_ID}.

    • PATCH Utwórz treść. PATCH Treść jest jedną parą klucz-wartość, gdzie format klucza to extension_{B2C_EXTENSION_APP_ID_NO_HYPHENS}_fhirUser , a wartość jest w pełni kwalifikowanym identyfikatorem zasobu FHIR dla pacjenta https://{YOUR_FHIR_SERVICE}.azurehealthcareapis.com/Patient/1".

    Aby uzyskać więcej informacji, zobacz Zarządzanie atrybutami rozszerzenia za pomocą programu Microsoft Graph.

  12. Po sformatowaniu żądania wybierz pozycję Uruchom zapytanie. Poczekaj na pomyślną odpowiedź, która potwierdza, że użytkownik w dzierżawie B2C jest połączony z zasobem pacjenta w usłudze FHIR.

    Zrzut ekranu przedstawiający poprawkę programu Graph.

Konfigurowanie narzędzia Postman w celu uzyskania tokenu dostępu dla użytkowników B2C

Uzyskaj token dostępu w celu przetestowania przepływu uwierzytelniania.

  1. Uruchom aplikację Postman, a następnie utwórz nową kolekcję Pusta. W tym przykładzie kolekcja nosi nazwę FHIR Patient.

    Zrzut ekranu przedstawiający nową kolekcję Postman.

  2. Wybierz kartę Autoryzacja w przeglądzie kolekcji.

  3. Z listy rozwijanej Typ wybierz pozycję OAuth 2.0.

    Zrzut ekranu przedstawiający uwierzytelnianie narzędzia Postman.

  4. Przewiń do sekcji Konfigurowanie nowego tokenu i wprowadź następujące wartości:

    • Adres URL wywołania zwrotnego. Ta wartość jest konfigurowana podczas tworzenia aplikacji zasobów B2C.

      https://oauth.pstmn.io/v1/callback
      
    • Adres URL uwierzytelniania. Tę wartość można utworzyć przy użyciu nazwy dzierżawy B2C i nazwy przepływu użytkownika.

      https://{YOUR_B2C_TENANT_NAME}.b2clogin.com/{YOUR_B2C_TENANT_NAME}.onmicrosoft.com/{YOUR_USER_FLOW_NAME}/oauth2/v2.0/authorize
      
    • Adres URL tokenu dostępu. Tę wartość można utworzyć przy użyciu nazwy dzierżawy B2C i nazwy przepływu użytkownika.

      https://{YOUR_B2C_TENANT_NAME}.b2clogin.com/{YOUR_B2C_TENANT_NAME}.onmicrosoft.com/{YOUR_USER_FLOW_NAME}/oauth2/v2.0/token
      
    • Identyfikator klienta. Ta wartość to identyfikator aplikacji (klienta) aplikacji zasobów B2C.

      {YOUR_APPLICATION_ID}
      
    • Zakres. Ta wartość jest definiowana w aplikacji zasobów B2C w sekcji Uwidacznianie interfejsu API . Uprawnienie przyznane w zakresie to patient.all.read. Żądanie zakresu musi być w pełni kwalifikowanym adresem URL, na przykład https://testb2c.onmicrosoft.com/fhir/patient.all.read.

  5. Skopiuj w pełni kwalifikowany zakres z sekcji Uwidaczniaj interfejs API aplikacji zasobów B2C.

    {YOUR_APPLICATION_ID_URI}/patient.all.read
    

    Zrzut ekranu przedstawiający adresy URL narzędzia Postman.

Pobieranie zasobu pacjenta przy użyciu użytkownika B2C

Sprawdź, czy użytkownicy usługi Azure AD B2C mogą uzyskiwać dostęp do zasobów FHIR.

  1. Po skonfigurowaniu konfiguracji autoryzacji w narzędziu Postman w celu uruchomienia przepływu użytkownika B2C wybierz pozycję Pobierz nowy token dostępu, aby uzyskać token dostępu.

    Zrzut ekranu przedstawiający narzędzie Postman pobierz token dostępu.

  2. Zaloguj się przy użyciu poświadczeń testowego pacjenta.

    Zrzut ekranu przedstawiający token Get Postman.

  3. Wybierz pozycję Użyj tokenu , aby użyć tokenu dostępu dla wszystkich żądań w kolekcji.

    Zrzut ekranu przedstawiający token użycia narzędzia Postman.

  4. Utwórz nowe żądanie wyszukiwania zasobów pacjentów w usłudze FHIR. Wybierz przycisk wielokropka (...) obok nazwy kolekcji, a następnie wybierz pozycję Dodaj żądanie.

    Zrzut ekranu przedstawiający dodane żądanie Postman.

  5. Ustaw metodę na GET, wprowadź w pełni kwalifikowany adres URL usługi FHIR, a następnie dodaj ścieżkę /Patient.

  6. Wybierz pozycję Wyślij.

  7. Sprawdź, czy odpowiedź zawiera zasób pojedynczego pacjenta.

    Zrzut ekranu przedstawiający odpowiedź na żądanie postman.

Następne kroki

Konfigurowanie wielu dostawców tożsamości

Rozwiązywanie problemów z konfiguracją dostawcy tożsamości

Uwaga

FHIR® jest zastrzeżonym znakiem towarowym HL7 i jest używany z uprawnieniem HL7.