FHIR erişim belirteci doğrulaması için Azure API

FHIR için Azure API'sinin erişim belirtecini nasıl doğrulayacakları uygulama ve yapılandırmaya bağlıdır. Bu makalede, erişim sorunlarını giderirken yararlı olabilecek doğrulama adımlarını inceleyeceğiz.

Belirtecin kimlik sağlayıcısıyla ilgili bir sorunu olmadığını doğrulama

Belirteç doğrulamasının ilk adımı, belirtecin doğru kimlik sağlayıcısı tarafından verildiğini ve değiştirilmediğini doğrulamaktır. FHIR sunucusu, yetkilisi Authorityolarak bilinen belirli bir kimlik sağlayıcısını kullanacak şekilde yapılandırılır. FHIR sunucusu, kimlik sağlayıcısı /.well-known/openid-configuration hakkındaki bilgileri uç noktadan alır. Azure Active Directory (Azure AD) kullandığınızda tam URL:

GET https://login.microsoftonline.com/<TENANT-ID>/.well-known/openid-configuration

burada <TENANT-ID> belirli Azure AD kiracıdır (kiracı kimliği veya etki alanı adı).

Azure AD bunun gibi bir belgeyi FHIR sunucusuna döndürür.

{
    "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"
}

FHIR sunucusunun önemli özellikleri, jwks_urisunucuya belirteç imzasını doğrulamak için gereken şifreleme anahtarlarının nereye getirileceğini ve issuersunucuya bu sunucu tarafından verilen belirteçlerin veren talepte (iss) ne olacağını bildiren özellikleridir. FHIR sunucusu bunu kullanarak gerçek bir belirteç aldığını doğrulayabilir.

Belirtecin taleplerini doğrulama

Sunucu belirtecin orijinalliğini doğruladıktan sonra FHIR sunucusu, istemcinin belirteçe erişmek için gerekli taleplere sahip olduğunu doğrulamaya devam eder.

FHIR için Azure API'sini kullandığınızda sunucu şunları doğrular:

  1. Belirtecin hakkı Audience (aud talep) vardır.
  2. Belirtecin verildiği kullanıcı veya sorumlunun FHIR sunucusu veri düzlemine erişmesine izin verilir. oid Belirtecin talebi, kullanıcıyı veya sorumluyu benzersiz olarak tanımlayan bir kimlik nesnesi kimliği içerir.

FHIR hizmetinin veri düzlemi rol atamalarını yönetmek için Azure RBAC kullanacak şekilde yapılandırılmasını öneririz. Ancak, FHIR hizmetiniz bir dış veya ikincil Azure AD kiracı kullanıyorsa yerel RBAC'yi de yapılandırabilirsiniz.

Azure için OSS Microsoft FHIR sunucusunu kullandığınızda sunucu şunları doğrular:

  1. The token has the right Audience (aud claim).
  2. Belirtecin talepte roles bir rolü vardır ve FHIR sunucusuna erişim izni verilir.

FHIR sunucusunda rollerin nasıl tanımlanacağına ilişkin ayrıntılara bakın.

FHIR sunucusu, bir erişim belirtecinin FHIR API'sinin bir istemcinin erişmeye çalıştığı bölümüne erişmek için kapsamlara (belirteç talepinde scp) sahip olduğunu da doğrulayabilir. Şu anda FHIR için Azure API ve Azure için FHIR sunucusu belirteç kapsamlarını doğrulamaz.

Sonraki adımlar

Artık belirteç doğrulamayı nasıl izleyebileceğinizi bildiğinize göre, öğreticiyi tamamlayarak bir JavaScript uygulaması oluşturabilir ve Hızlı Sağlık Hizmeti Birlikte Çalışabilirlik Kaynakları (FHIR®) verilerini okuyabilirsiniz.

FHIR®, HL7'nin tescilli ticari markasıdır ve HL7 izniyle kullanılır.