تكوين هوية Azure Active Directory لواجهة برمجة تطبيقات Azure ل FHIR

عند العمل مع بيانات الرعاية الصحية، من المهم التأكد من أن البيانات آمنة، ولا يمكن الوصول إليها من قبل مستخدمين أو تطبيقات غير مصرح بها. تستخدم خوادم FHIR OAuth 2.0 لضمان أمان البيانات هذا. يتم تأمين واجهة برمجة تطبيقات Azure ل FHIR باستخدام Azure Active Directory، وهو مثال على موفر هوية OAuth 2.0. توفر هذه المقالة نظرة عامة على تخويل خادم FHIR والخطوات اللازمة للحصول على رمز مميز للوصول إلى خادم FHIR. بينما تنطبق هذه الخطوات على أي خادم FHIR وأي موفر هوية، سنستعرض واجهة برمجة تطبيقات Azure ل FHIR كخادم FHIR وAzure Active Directory (Azure AD) كموفر هوية لدينا في هذه المقالة.

نظرة عامة حول التحكم بالوصول

لكي يتمكن تطبيق العميل من الوصول إلى واجهة برمجة تطبيقات Azure ل FHIR، يجب أن يقدم رمزا مميزا للوصول. الرمز المميز للوصول هو مجموعة موقعة من الخصائص (المطالبات) المشفرة Base64 التي تنقل معلومات حول هوية العميل وأدواره وامتيازاته الممنوحة للعميل.

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

على سبيل المثال، مثل عند استخدام تدفق التعليمات البرمجية للتخويل، يمر الوصول إلى خادم FHIR بالخطوات الأربع التالية:

تخويل FHIR

  1. يرسل العميل طلبا إلى /authorize نقطة نهاية Azure AD. سيقوم Azure AD بإعادة توجيه العميل إلى صفحة تسجيل الدخول حيث سيقوم المستخدم بالمصادقة باستخدام بيانات الاعتماد المناسبة (على سبيل المثال اسم المستخدم وكلمة المرور أو المصادقة الثنائية). راجع تفاصيل حول الحصول على رمز تخويل. عند المصادقة الناجحة، يتم إرجاع رمز تخويل إلى العميل. سيسمح Azure AD فقط بإرجاع رمز التخويل هذا إلى عنوان URL للرد المسجل الذي تم تكوينه في تسجيل تطبيق العميل.
  2. يتبادل تطبيق العميل رمز التخويل لرمز مميز للوصول في /token نقطة نهاية Azure AD. عند طلب رمز مميز، قد يتعين على تطبيق العميل توفير سر العميل (كلمة مرور التطبيقات). راجع تفاصيل حول الحصول على رمز مميز للوصول.
  3. يقدم العميل طلبا إلى واجهة برمجة تطبيقات Azure ل FHIR، على سبيل المثال GET /Patient، للبحث في جميع المرضى. عندما يقوم العميل بإجراء الطلب، فإنه يتضمن الرمز المميز للوصول في عنوان طلب HTTP، على سبيل المثال Authorization: Bearer eyJ0e...، حيث eyJ0e... يمثل رمز الوصول المشفرة Base64.
  4. تتحقق واجهة برمجة تطبيقات Azure ل FHIR من أن الرمز المميز يحتوي على مطالبات مناسبة (خصائص في الرمز المميز). إذا تحقق كل شيء، فسيكمل الطلب ويعيد حزمة FHIR مع النتائج إلى العميل.

من المهم ملاحظة أن واجهة برمجة تطبيقات Azure ل FHIR لا تشارك في التحقق من صحة بيانات اعتماد المستخدم ولا تصدر الرمز المميز. يتم إنشاء المصادقة والرمز المميز بواسطة Azure AD. تتحقق واجهة برمجة تطبيقات Azure ل FHIR ببساطة من أن الرمز المميز موقع بشكل صحيح (إنه أصلي) وأنه يحتوي على مطالبات مناسبة.

بنية رمز مميز للوصول

غالبا ما يتضمن تطوير تطبيقات موارد التشغيل التفاعلي للرعاية الصحية السريعة (FHIR®) تصحيح مشكلات الوصول. إذا تم رفض وصول العميل إلى واجهة برمجة تطبيقات Azure ل FHIR، فمن المفيد فهم بنية الرمز المميز للوصول وكيف يمكن فك ترميزه لفحص محتويات (مطالبات) الرمز المميز.

تتوقع خوادم FHIR عادة رمز ويب JSON المميز (JWT، وينطق أحيانا "jot"). ويتكون من ثلاثة أجزاء:

الجزء 1: عنوان، والذي قد يبدو كما يلي:

    {
      "alg": "HS256",
      "typ": "JWT"
    }

الجزء 2: الحمولة (المطالبات)، على سبيل المثال:

    {
     "oid": "123",
     "iss": "https://issuerurl",
     "iat": 1422779638,
     "roles": [
        "admin"
      ]
    }

الجزء 3: توقيع، يتم حسابه عن طريق تسلسل المحتويات المشفرة Base64 للرأس والحمولة وحساب تجزئة مشفرة منها استنادا إلى الخوارزمية (alg) المحددة في العنوان. سيتمكن الخادم من الحصول على مفاتيح عامة من موفر الهوية والتحقق من أن هذا الرمز المميز قد تم إصداره من قبل موفر هوية معين ولم يتم العبث به.

يتكون الرمز المميز الكامل من إصدارات Base64 المشفرة (المشفرة بالفعل لعنون Url Base64) لتلك الشرائح الثلاثة. يتم تسلسل الأجزاء الثلاثة وفصلها ب . (نقطة).

يظهر مثال على الرمز المميز على النحو التالي:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJvaWQiOiIxMjMiLCAiaXNzIjoiaHR0cHM6Ly9pc3N1ZXJ1cmwiLCJpYXQiOjE0MjI3Nzk2MzgsInJvbGVzIjpbImFkbWluIl19.gzSraSYS8EXBxLN_oWnFSRgCzcmJmMjLiuyu5CSpyHI

يمكن فك ترميز الرمز المميز وفحصه باستخدام أدوات مثل https://jwt.ms. نتيجة فك ترميز الرمز المميز هي:

{
  "alg": "HS256",
  "typ": "JWT"
}.{
  "oid": "123",
  "iss": "https://issuerurl",
  "iat": 1422779638,
  "roles": [
    "admin"
  ]
}.[Signature]

الحصول على رمز مميز للوصول

كما ذكرنا، هناك عدة طرق للحصول على رمز مميز من Azure AD. يتم وصفها بالتفصيل في وثائق المطور Azure AD.

استخدم أي من بروتوكولات المصادقة التالية:

هناك اختلافات أخرى (على سبيل المثال بسبب التدفق) للحصول على رمز مميز. راجع وثائق Azure AD للحصول على التفاصيل. عند استخدام واجهة برمجة تطبيقات Azure ل FHIR، هناك بعض الاختصارات للحصول على رمز مميز للوصول (مثل لأغراض تصحيح الأخطاء) باستخدام Azure CLI.

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

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

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