الرئيسية
» كيف
»
السماح للمستخدمين المعتمدين بإنشاء غرف Jitsi باستخدام تسجيل الدخول عبر Keycloak
السماح للمستخدمين المعتمدين بإنشاء غرف Jitsi باستخدام تسجيل الدخول عبر Keycloak
لتقييد إنشاء غرف Jitsi Meet لأشخاص محددين، اطلب من المضيفين التحقق من هويتهم، وامنح بيانات الاعتماد فقط للحسابات المعتمدة. بالنسبة لعمليات التثبيت الجديدة ذاتية الاستضافة، توصي Jitsi الآن باستخدام المصادقة القائمة على الرموز المميزة؛ يستخدم هذا الدليل Keycloak كمزود هوية، مع السماح للضيوف المدعوين بالانضمام إلى الغرف فقط بعد أن يبدأها مضيف معتمد.
1. تحقق من عملية النشر واختر حسابات المضيف الخاصة بك
تستهدف هذه التعليمات تثبيت Jitsi Meet ذاتيًا من حزم Debian أو Ubuntu، مع منح صلاحيات إدارية لـ Prosody وNginx وإعدادات Jitsi عبر الويب. وتفترض هذه التعليمات أن Keycloak مثبت مسبقًا أو يمكن نشره بشكل آمن. Prosody هو خادم مراسلة XMPP؛ وJSON Web Token (JWT) هو بيانات اعتماد موقعة تُستخدم لإثبات مصادقة المستخدم. أما Keycloak فهو موفر هوية يتولى تسجيل دخول المستخدم.
قبل التعديل، دوّن اسم مضيف الاجتماع العام، وتأكد من عمل بروتوكول HTTPS، وانسخ ملفات التكوين التي تنوي تغييرها احتياطيًا، وحدد الحسابات المُسماة التي يُسمح لها باستضافة الاجتماعات. في هذا المثال، عنوان الاجتماع هو jitsi.example.com; استبدله في كل مكان باسم مضيفك الفعلي.
2. امنح الوصول إلى Keycloak للمضيفين المعتمدين فقط
أنشئ عالمًا مخصصًا
في لوحة تحكم إدارة Keycloak، أنشئ نطاقًا باسم jitsi-realm. النطاق عبارة عن مجموعة معزولة من المستخدمين وإعدادات التطبيق. عطّل تسجيل المستخدمين المفتوح وتجنّب الاستيراد التلقائي لدليل الشركة غير المقيد: في ظل هذا التكوين، يمكن لأي حساب قادر على المصادقة على النطاق المقبول أن يصبح منشئ اجتماعات.
أنشئ نطاقًا منفصلاً للاحتفاظ بقائمة منشئي اجتماعات Jitsi تحت سيطرتك.
قم بتسجيل عميل الويب Jitsi
أنشئ عميل OpenID Connect باسم jitsi. OpenID Connect (OIDC) هو بروتوكول تسجيل الدخول الذي يستخدمه Keycloak لإعادة معلومات الهوية إلى Jitsi. باتباع مثال Jitsi الرسمي، أدخل قيم رد الاتصال هذه بالضبط، مع تعديل اسم المضيف:
عنوان URI لإعادة التوجيه صالح:https://jitsi.example.com/static/sso.html
عنوان URI صالح لإعادة التوجيه بعد تسجيل الخروج:https://jitsi.example.com/static/logout.html
مصدر الويب:https://jitsi.example.com
تم تسجيل عميل Jitsi كتطبيق OpenID Connect في Keycloak.يقوم عنوان URI لإعادة التوجيه بإعادة المضيف الذي تم تسجيل الدخول إليه إلى Jitsi بعد المصادقة.
أضف الأشخاص المسموح لهم
ضمن قسم المستخدمين، أنشئ حسابًا لكل مضيف مُصرَّح له، ثم عيّن كلمة مرور ذلك المستخدم ضمن قسم بيانات الاعتماد. استخدم حسابات منفصلة بدلًا من مشاركة بيانات تسجيل دخول مسؤول واحد. يجب تعطيل أي حساب لم يعد يُفترض به إنشاء اجتماعات، أو منعه من الوصول إلى هذا النطاق. إذا كنت بحاجة إلى فرض قيود على مجموعة واحدة فقط ضمن نطاق مشترك، فأضف سياسة تفويض مُتحقق منها بشكل منفصل؛ فالخطوات المذكورة هنا لا تُفعِّل عضوية مجموعة Keycloak تلقائيًا.
اجعل قائمة مضيفي Jitsi المؤهلين مقتصرة على الحسابات المُدارة بشكل فردي.قم بتعيين بيانات اعتماد منفصلة لكل مضيف معتمد قبل اختبار تسجيل الدخول.
3. قم بتوصيل Keycloak بخادم Jitsi
توجيه نقاط نهاية نطاق Keycloak عبر HTTPS
قم بتهيئة Keycloak باستخدام اسم المضيف العام الصحيح وعناوين الوكيل العكسي الموثوقة، ثم وجّه /realms/الطلبات من اسم مضيف Jitsi الخاص بك إلى مستمع Keycloak الخاص به. بالنسبة لمثيل Keycloak المتاح على الرابط التالي 127.0.0.1:18080، أضف كتلة الموقع التالية ضمن كتلة خادم HTTPS الحالي لـ Jitsi Nginx، قبل مسارات Jitsi العامة:
يفترض هذا أن Keycloak متاح محليًا على هذا المنفذ؛ استبدل المنفذ الرئيسي في بيئة النشر الخاصة بك. تجنب كشف لوحة تحكم إدارة Keycloak أو منفذ الواجهة الخلفية دون داعٍ. راجع وثائق Keycloak الخاصة بالخادم الوكيل العكسي للاطلاع على إعدادات الخادم الوكيل واسم المضيف في بيئة الإنتاج.
يعرض محرر Nginx قسم realm-proxy؛ احتفظ بمسارات Jitsi الأخرى سليمة.
يتطلب استخدام الرموز في علم العروض
قم بالتعديل /etc/prosody/conf.avail/jitsi.example.com.cfg.lua. أضف إعدادات المُصدر والجمهور، ثم حدّث الملف الرئيسي الحالي VirtualHostلاستخدام مصادقة الرمز المميز. ادمج هذه الأسطر مع إعداداته الأخرى - لا تُنشئ نسخة ثانية من كتلة المضيف هذه.
لإضافة وصول الضيوف، أضف guest.jitsi.example.comمضيفًا افتراضيًا منفصلاً مع authentication = "jitsi-anonymous"، c2s_require_encryption = falseوالوحدة smacksالنمطية، كما هو موضح في تعليمات Jitsi. هذا نطاق XMPP داخلي: لا تُنشئ نظام أسماء نطاقات عامًا أو شهادة منفصلة له. في قائمة الوحدات النمطية للمضيف الرئيسي الحالي، أضف ؛ وفي قائمة وحدات مكون MUC persistent_lobbyالحالي ، أضف . MUC هو مكون دردشة متعدد المستخدمين يُدير غرف الاجتماعات. احتفظ بالوحدات النمطية المدرجة بالفعل.conference.jitsi.example.commuc_wait_for_host
قم بتهيئة عملية تسجيل الدخول عبر المتصفح
أضف إلى الكائن الموجود . /etc/jitsi/meet/jitsi.example.com-config.jsألحق إعدادات OIDC الموثقة من قبل Jitsi:anonymousdomain: 'guest.jitsi.example.com'hosts
تُطبّق هذه القيم آلية تسجيل الدخول باستخدام رمز التفويض مع PKCE (مفتاح إثبات تبادل الرموز)، وهي آلية حماية للتفويض عبر المتصفح. وينص دليل Jitsi تحديدًا على تعطيل jicofo.confالمصادقة في وضع الرمز المميز؛ لذا يُرجى عدم نسخ كتلة مصادقة XMPP Secure Domain القديمة.
يمثل نموذج تسجيل دخول المستخدم عملية التحقق من بيانات الاعتماد قبل أن يقوم المضيف المعتمد بإنشاء غرفة.
تحقق من صحة الخدمات وأعد تحميلها
تحقق من بنية Nginx، ثم أعد تشغيل الخدمات المذكورة فقط في تعليمات مصادقة الرمز المميز الحالية. نفّذ هذه التغييرات خلال فترة الصيانة إذا كان خادم Jitsi قيد الاستخدام بالفعل.
لا يزال بإمكان الجميع إنشاء غرفة: تأكد من أن مضيف Prosody الرئيسي مُصادق عليه باستخدام رمز مميز، ولا يُسمح باستخدام الرموز المميزة الفارغة، وأن مضيف الضيف منفصل. اختبر ذلك في جلسة متصفح جديدة، وليس في جلسة لا تزال تحتوي على تسجيل دخول صالح.
لا يمكن للمستخدمين المعتمدين تسجيل الدخول: قارن بين مُصدر نطاق Keycloak، واسم مضيف HTTPS العام، ومعرّف العميل، وعنوان URI لإعادة التوجيه، وProsody cache_keys_url. إن فشل إعادة توجيه المتصفح لا يُعد دليلاً على صحة أذونات المستخدم.
لا يدخل الضيوف إلى أي غرفة: تحقق من النطاق المجهول في كل من Prosody وJitsi config.js، بالإضافة إلى وحدات انتظار المضيف. تختلف حالة انتظار الضيوف أو وجودهم في ردهة الانتظار عن فشل المصادقة.
5. التحقق من الشخص الذي يمكنه إنشاء اجتماع جديد
افتح رابط غرفة غير مستخدمة في نافذة تصفح خاصة دون تسجيل الدخول. يجب ألا يتمكن الضيف من بدء المؤتمر كمضيف أول. بعد ذلك، سجّل الدخول كمستخدم معتمد في Keycloak وأنشئ تلك الغرفة؛ سيتمكن الضيف المدعو حينها من الانضمام إذا فعّلتَ نطاق الضيوف. أخيرًا، جرّب حسابًا معطلاً أو غير معتمد وتأكد من عدم قدرته على المصادقة وإنشاء غرفة جديدة.
يقوم المضيف المصادق عليه بإدخال اسم الغرفة لبدء الاجتماع بعد اجتياز فحص تسجيل الدخول.
في حال فشل أي اختبار، يُرجى فحصه sudo journalctl -u prosody -u nginx --since "10 minutes ago"بالتزامن مع أحداث مصادقة Keycloak، دون نشر الرموز المميزة أو كلمات المرور من السجلات. لا يتم تأكيد الإصلاح إلا عندما يتمكن حساب معتمد من إنشاء غرفة جديدة، بينما لا يتمكن مستخدم غير مصادق عليه من ذلك.