Weryfikacja tokenu dostępu interfejsu API platformy Azure dla standardu FHIR
W jaki sposób interfejs API platformy Azure for FHIR sprawdza, czy token dostępu będzie zależeć od implementacji i konfiguracji. W tym artykule omówimy kroki weryfikacji, które mogą być przydatne podczas rozwiązywania problemów z dostępem.
Sprawdzanie poprawności tokenu nie ma problemów z dostawcą tożsamości
Pierwszym krokiem weryfikacji tokenu jest sprawdzenie, czy token został wystawiony przez odpowiedniego dostawcę tożsamości i czy nie został zmodyfikowany. Serwer FHIR zostanie skonfigurowany do używania określonego dostawcy tożsamości znanego jako urząd Authority
. Serwer FHIR pobierze informacje o dostawcy tożsamości z punktu końcowego /.well-known/openid-configuration
. W przypadku korzystania z usługi Azure Active Directory (Azure AD) pełny adres URL to:
GET https://login.microsoftonline.com/<TENANT-ID>/.well-known/openid-configuration
gdzie <TENANT-ID>
jest konkretną dzierżawą Azure AD (identyfikator dzierżawy lub nazwa domeny).
Azure AD zwróci dokument podobny do tego na serwerze FHIR.
{
"authorization_endpoint": "https://login.microsoftonline.com/<TENANT-ID>/oauth2/authorize",
"token_endpoint": "https://login.microsoftonline.com/<TENANT-ID>/oauth2/token",
"token_endpoint_auth_methods_supported": [
"client_secret_post",
"private_key_jwt",
"client_secret_basic"
],
"jwks_uri": "https://login.microsoftonline.com/common/discovery/keys",
"response_modes_supported": [
"query",
"fragment",
"form_post"
],
"subject_types_supported": [
"pairwise"
],
"id_token_signing_alg_values_supported": [
"RS256"
],
"http_logout_supported": true,
"frontchannel_logout_supported": true,
"end_session_endpoint": "https://login.microsoftonline.com/<TENANT-ID>/oauth2/logout",
"response_types_supported": [
"code",
"id_token",
"code id_token",
"token id_token",
"token"
],
"scopes_supported": [
"openid"
],
"issuer": "https://sts.windows.net/<TENANT-ID>/",
"claims_supported": [
"sub",
"iss",
"cloud_instance_name",
"cloud_instance_host_name",
"cloud_graph_host_name",
"msgraph_host",
"aud",
"exp",
"iat",
"auth_time",
"acr",
"amr",
"nonce",
"email",
"given_name",
"family_name",
"nickname"
],
"microsoft_multi_refresh_token": true,
"check_session_iframe": "https://login.microsoftonline.com/<TENANT-ID>/oauth2/checksession",
"userinfo_endpoint": "https://login.microsoftonline.com/<TENANT-ID>/openid/userinfo",
"tenant_region_scope": "WW",
"cloud_instance_name": "microsoftonline.com",
"cloud_graph_host_name": "graph.windows.net",
"msgraph_host": "graph.microsoft.com",
"rbac_url": "https://pas.windows.net"
}
Ważne właściwości serwera FHIR to jwks_uri
, który informuje serwer, gdzie pobrać klucze szyfrowania potrzebne do zweryfikowania podpisu tokenu i issuer
, który informuje serwer, co będzie w oświadczeniach wystawcy (iss
) tokenów wystawionych przez ten serwer. Serwer FHIR może użyć tego polecenia, aby sprawdzić, czy otrzymuje token uwierzytelniania.
Weryfikowanie oświadczeń tokenu
Po zweryfikowaniu autentyczności tokenu serwer FHIR sprawdzi, czy klient ma wymagane oświadczenia dostępu do tokenu.
W przypadku korzystania z interfejsu API platformy Azure dla standardu FHIR serwer zweryfikuje:
- Token ma prawo
Audience
(aud
oświadczenie). - Użytkownik lub podmiot zabezpieczeń, dla którego wystawiono token, może uzyskać dostęp do płaszczyzny danych serwera FHIR. Oświadczenie
oid
tokenu zawiera identyfikator obiektu tożsamości, który jednoznacznie identyfikuje użytkownika lub podmiot zabezpieczeń.
Zalecamy skonfigurowanie usługi FHIR do zarządzania przypisaniami ról płaszczyzny danych za pomocą kontroli dostępu opartej na rolach platformy Azure . Można jednak również skonfigurować lokalną kontrolę dostępu opartej na rolach, jeśli usługa FHIR korzysta z zewnętrznej lub pomocniczej dzierżawy Azure AD.
W przypadku korzystania z serwera Microsoft FHIR systemu operacyjnego dla platformy Azure serwer zweryfikuje:
- Token ma prawo
Audience
(aud
oświadczenie). - Token ma rolę w oświadczeniu
roles
, który może uzyskać dostęp do serwera FHIR.
Zapoznaj się ze szczegółowymi informacjami na temat definiowania ról na serwerze FHIR.
Serwer FHIR może również sprawdzić, czy token dostępu ma zakresy (w oświadczeniu scp
tokenu ) w celu uzyskania dostępu do części interfejsu API FHIR, do którego klient próbuje uzyskać dostęp. Obecnie usługa Azure API for FHIR i serwer FHIR dla platformy Azure nie weryfikują zakresów tokenów.
Następne kroki
Teraz, gdy wiesz, jak przejść przez walidację tokenu, możesz ukończyć samouczek, aby utworzyć aplikację JavaScript i przeczytać dane Fast Healthcare Interoperability Resources (FHIR®).
FHIR® jest zastrzeżonym znakiem towarowym HL7 i jest używany z uprawnieniem HL7 .