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.
Użyj polecenia
Connect-AzAccount
, aby zalogować się na platformie Azure. Po zalogowaniu użyj poleceniaGet-AzContext
, aby zweryfikować subskrypcję i dzierżawę, której chcesz użyć. W razie potrzeby zmień subskrypcję i dzierżawę.Utwórz nową grupę zasobów (lub użyj istniejącej), pomijając krok "utwórz grupę zasobów" 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.
W witrynie Azure Portal przejdź do zasobu B2C. Wybierz pozycję Otwórz dzierżawę B2C.
W okienku po lewej stronie wybierz pozycję Użytkownicy.
Wybierz pozycję + Nowy użytkownik.
Łączenie użytkownika B2C z atrybutem użytkownika niestandardowego fhirUser
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 B2C jest tworzony użytkownik o nazwie Test Patient1 . W późniejszym kroku zasób pacjenta jest tworzony w usłudze FHIR. 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.
Na stronie Azure AD B2C w okienku po lewej stronie wybierz pozycję Atrybuty użytkownika.
Wybierz pozycję + Dodaj.
W polu Nazwa wprowadź fhirUser (wielkość liter).
Z listy rozwijanej Typ danych wybierz pozycję Ciąg.
Wybierz pozycję Utwórz.
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 jest zdefiniowany przepływ użytkownika, aby po zalogowaniu się użytkownika i podany token dostępu zawiera fhirUser
oświadczenie. Aby uzyskać więcej informacji, zobacz Tworzenie przepływów użytkownika i zasad niestandardowych w usłudze Azure Active Directory B2C.
Na stronie Azure AD B2C w okienku po lewej stronie wybierz pozycję Przepływy użytkownika.
Wybierz pozycję + Nowy przepływ użytkownika.
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ę.
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.
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ń.
Wybierz oświadczenie fhirUser.
Wybierz pozycję OK.
Wybierz pozycję Utwórz.
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.
Na stronie Azure AD B2C w okienku po lewej stronie wybierz pozycję Rejestracje aplikacji.
Wybierz pozycję + Nowa rejestracja.
Wprowadź nazwę wyświetlaną. W tym przykładzie użyto usługi FHIR.
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).
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. Ten identyfikator URI wywołania zwrotnego służy do celów testowych.
W sekcji Uprawnienia wybierz pozycję Udziel zgody administratora, aby otworzyć identyfikator i offline_access uprawnienia.
Wybierz pozycję Zarejestruj. Poczekaj na ukończenie rejestracji aplikacji. Przeglądarka automatycznie przechodzi do strony Przegląd aplikacji.
Konfigurowanie uprawnień interfejsu API dla aplikacji
Na stronie Rejestracje aplikacji w okienku po lewej stronie wybierz pozycję Manifest.
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 dodawaj go do tablicy, ponieważ nie ma możliwości ograniczenia uprawnień do podzbioru użytkowników.
Po wypełnieniu tablicy oauth2Permissions wybierz pozycję Zapisz.
Uwidaczniaj internetowy interfejs API i przypisz identyfikator URI identyfikatora aplikacji
Na stronie Rejestracje aplikacji w okienku po lewej stronie wybierz pozycję Uwidaczniaj interfejs API.
Wybierz opcję Dodaj.
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.
Wybierz pozycję Zapisz.
Na stronie Rejestracje aplikacji w okienku po lewej stronie wybierz pozycję Uprawnienia interfejsu API.
Wybierz pozycję + Dodaj uprawnienie.
W okienku Żądania uprawnień interfejsu API wybierz pozycję Interfejsy API używane przez moją organizację.
Wybierz aplikację zasobów z listy.
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 zakresempatient.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.Wybierz pozycję Dodaj uprawnienia.
Na stronie Uprawnienia interfejsu API w sekcji Skonfigurowane uprawnienia wybierz pozycję Udziel 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.
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
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
Pobierz identyfikator klienta ze strony przeglądu aplikacji zasobów.
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.
Użyj polecenia
Connect-AzAccount
, aby zalogować się na platformie Azure. Użyj poleceniaGet-AzContext
, aby zweryfikować subskrypcję i dzierżawę, której chcesz użyć. W razie potrzeby zmień subskrypcję i dzierżawę.Utwórz nową grupę zasobów (lub użyj istniejącej), pomijając krok "utwórz grupę zasobów" 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).
Gdy wykonasz kroki opisane w sekcji Pobieranie zasobu FHIR, żądanie zwróci 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 (taki jak pacjent lub lekarz) nie będzie połączony z zasobem FHIR. 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.
- 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"
]
}
]
}
- Sprawdź, czy pacjent jest tworzony, zmieniając metodę z powrotem na
GET
i sprawdzając, czy żądanie{{fhirurl}}/Patient
zwraca nowo utworzonego pacjenta.
Łączenie zasobu pacjenta z użytkownikiem usługi Azure AD B2C
Utwórz jawne łącze 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.
Przejdź do dzierżawy B2C. W okienku po lewej stronie wybierz pozycję Rejestracje aplikacji.
Wybierz pozycję Wszystkie aplikacje.
Wybierz aplikację z prefiksem b2c-extensions-app.
Zanotuj wartość Identyfikator aplikacji (klienta).
Przejdź z powrotem do strony głównej dzierżawy B2C, w okienku po lewej stronie wybierz pozycję Użytkownicy.
Wybierz pozycję Test Patient1.
Zanotuj wartość Identyfikator obiektu.
Otwórz Eksploratora programu Microsoft Graph. Zaloguj się przy użyciu użytkownika przypisanego do roli administratora globalnego 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).
Wybierz awatar użytkownika, a następnie wybierz pozycję Zgoda na uprawnienia.
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.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 toextension_{B2C_EXTENSION_APP_ID_NO_HYPHENS}_fhirUser
, a wartość jest w pełni kwalifikowanym identyfikatorem zasobu FHIR dla pacjentahttps://{YOUR_FHIR_SERVICE}.azurehealthcareapis.com/Patient/1"
.
Aby uzyskać więcej informacji, zobacz Zarządzanie atrybutami rozszerzenia za pomocą programu Microsoft Graph.
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.
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.
Uruchom aplikację Postman, a następnie utwórz nową kolekcję Pusta. W tym przykładzie kolekcja nosi nazwę FHIR Patient.
Wybierz kartę Autoryzacja w przeglądzie kolekcji.
Z listy rozwijanej Typ wybierz pozycję OAuth 2.0.
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ładhttps://testb2c.onmicrosoft.com/fhir/patient.all.read
.
Skopiuj w pełni kwalifikowany zakres z sekcji Uwidaczniaj interfejs API aplikacji zasobów B2C.
{YOUR_APPLICATION_ID_URI}/patient.all.read
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.
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.
Zaloguj się przy użyciu poświadczeń testowego pacjenta.
Wybierz pozycję Użyj tokenu , aby użyć tokenu dostępu dla wszystkich żądań w kolekcji.
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.
Ustaw metodę na
GET
, wprowadź w pełni kwalifikowany adres URL usługi FHIR, a następnie dodaj ścieżkę/Patient
.Wybierz pozycję Wyślij.
Sprawdź, czy odpowiedź zawiera zasób pojedynczego pacjenta.
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.