واجهة برمجة تطبيقات Azure للتحقق من صحة الرمز المميز للوصول إلى FHIR

تعتمد كيفية التحقق من صحة Azure API ل FHIR للرمز المميز للوصول على التنفيذ والتكوين. في هذه المقالة، سنستعرض خطوات التحقق من الصحة، والتي يمكن أن تكون مفيدة عند استكشاف مشكلات الوصول وإصلاحها.

لا توجد مشكلات في التحقق من صحة الرمز المميز مع موفر الهوية

الخطوة الأولى في التحقق من صحة الرمز المميز هي التحقق من أن الرمز المميز تم إصداره من قبل موفر الهوية الصحيح وأنه لم يتم تعديله. سيتم تكوين خادم FHIR لاستخدام موفر هوية معين يعرف باسم المرجع Authority. سيقوم خادم FHIR باسترداد معلومات حول موفر الهوية من /.well-known/openid-configuration نقطة النهاية. عند استخدام Azure Active Directory (Azure AD)، يكون عنوان URL الكامل هو:

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

حيث <TENANT-ID> هو مستأجر Azure AD المحدد (إما معرف مستأجر أو اسم مجال).

سيقوم Azure AD بإعادة مستند مثل هذا المستند إلى خادم 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"
}

الخصائص المهمة لخادم FHIR هي jwks_uri، والتي تخبر الخادم بمكان إحضار مفاتيح التشفير اللازمة للتحقق من صحة توقيع الرمز المميز و issuer، والتي تخبر الخادم بما سيكون في مطالبة المصدر (iss) من الرموز المميزة الصادرة عن هذا الخادم. يمكن لخادم FHIR استخدام هذا للتحقق من أنه يتلقى رمزا مميزا أصليا.

التحقق من صحة مطالبات الرمز المميز

بمجرد أن يتحقق الخادم من صحة الرمز المميز، سيتابع خادم FHIR بعد ذلك للتحقق من أن العميل لديه المطالبات المطلوبة للوصول إلى الرمز المميز.

عند استخدام واجهة برمجة تطبيقات Azure ل FHIR، سيتحقق الخادم من صحة:

  1. الرمز المميز له الحق Audience (aud المطالبة).
  2. يسمح للمستخدم أو الأساسي الذي تم إصدار الرمز المميز له بالوصول إلى مستوى بيانات خادم FHIR. oid تحتوي مطالبة الرمز المميز على معرف عنصر هوية، والذي يعرف المستخدم أو الأساسي بشكل فريد.

نوصي بتكوين خدمة FHIR لاستخدام Azure RBAC لإدارة تعيينات دور مستوى البيانات. ومع ذلك، يمكنك أيضا تكوين التحكم في الوصول استنادا إلى الدور المحلي إذا كانت خدمة FHIR تستخدم مستأجرا خارجيا أو ثانويا Azure AD.

عند استخدام خادم OSS Microsoft FHIR ل Azure، سيتحقق الخادم من صحة:

  1. The token has the right Audience (aud claim).
  2. الرمز المميز له دور في المطالبة roles ، والذي يسمح بالوصول إلى خادم FHIR.

راجع التفاصيل حول كيفية تحديد الأدوار على خادم FHIR.

قد يتحقق خادم FHIR أيضا من أن الرمز المميز للوصول يحتوي على النطاقات (في مطالبة scpالرمز المميز ) للوصول إلى جزء واجهة برمجة تطبيقات FHIR الذي يحاول العميل الوصول إليه. حاليا، لا تتحقق واجهة برمجة تطبيقات Azure ل FHIR وخادم FHIR ل Azure من صحة نطاقات الرمز المميز.

الخطوات التالية

الآن بعد أن عرفت كيفية التحقق من صحة الرمز المميز، يمكنك إكمال البرنامج التعليمي لإنشاء تطبيق JavaScript وقراءة بيانات موارد التشغيل التفاعلي للرعاية الصحية السريعة (FHIR®).

FHIR® هي علامة تجارية مسجلة ل HL7 وتستخدم بإذن من HL7.