السماح للمستخدمين المعتمدين بإنشاء غرف Jitsi باستخدام تسجيل الدخول عبر Keycloak

لتقييد إنشاء غرف Jitsi Meet لأشخاص محددين، اطلب من المضيفين التحقق من هويتهم، وامنح بيانات الاعتماد فقط للحسابات المعتمدة. بالنسبة لعمليات التثبيت الجديدة ذاتية الاستضافة، توصي Jitsi الآن باستخدام المصادقة القائمة على الرموز المميزة؛ يستخدم هذا الدليل Keycloak كمزود هوية، مع السماح للضيوف المدعوين بالانضمام إلى الغرف فقط بعد أن يبدأها مضيف معتمد.

1. تحقق من عملية النشر واختر حسابات المضيف الخاصة بك

تستهدف هذه التعليمات تثبيت Jitsi Meet ذاتيًا من حزم Debian أو Ubuntu، مع منح صلاحيات إدارية لـ Prosody وNginx وإعدادات Jitsi عبر الويب. وتفترض هذه التعليمات أن Keycloak مثبت مسبقًا أو يمكن نشره بشكل آمن. Prosody هو خادم مراسلة XMPP؛ وJSON Web Token (JWT) هو بيانات اعتماد موقعة تُستخدم لإثبات مصادقة المستخدم. أما Keycloak فهو موفر هوية يتولى تسجيل دخول المستخدم.

يشير دليل Jitsi إلى أن طريقة "النطاق الآمن" القديمة التي تعتمد على اسم المستخدم وكلمة المرور أصبحت قديمة، وينصح المستخدمين الجدد بالاعتماد على مصادقة الرمز المميز. تم تحديث تعليمات المصادقة الحالية في 5 أكتوبر 2026. إذا كنت تستخدم Docker بالفعل، فلا تقم بنسخ مسارات الحزم أدناه: يستخدم دليل تكوين Docker الرسمي متغيرات بيئية مثل ENABLE_AUTH`< ENABLE_GUESTSاسم المستخدم>` و`< كلمة المرور>` و`<البيانات> AUTH_TYPE`.

قبل التعديل، دوّن اسم مضيف الاجتماع العام، وتأكد من عمل بروتوكول HTTPS، وانسخ ملفات التكوين التي تنوي تغييرها احتياطيًا، وحدد الحسابات المُسماة التي يُسمح لها باستضافة الاجتماعات. في هذا المثال، عنوان الاجتماع هو jitsi.example.com; استبدله في كل مكان باسم مضيفك الفعلي.

2. امنح الوصول إلى Keycloak للمضيفين المعتمدين فقط

أنشئ عالمًا مخصصًا

في لوحة تحكم إدارة Keycloak، أنشئ نطاقًا باسم jitsi-realm. النطاق عبارة عن مجموعة معزولة من المستخدمين وإعدادات التطبيق. عطّل تسجيل المستخدمين المفتوح وتجنّب الاستيراد التلقائي لدليل الشركة غير المقيد: في ظل هذا التكوين، يمكن لأي حساب قادر على المصادقة على النطاق المقبول أن يصبح منشئ اجتماعات.

نموذج إنشاء عالم 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
حقول إنشاء عميل Keycloak التي تحدد عميل Jitsi OpenID Connect.
تم تسجيل عميل Jitsi كتطبيق OpenID Connect في Keycloak.
إعدادات عميل Keycloak التي تعرض عنوان URL لإعادة توجيه تسجيل الدخول الموحد لـ Jitsi.
يقوم عنوان URI لإعادة التوجيه بإعادة المضيف الذي تم تسجيل الدخول إليه إلى Jitsi بعد المصادقة.

أضف الأشخاص المسموح لهم

ضمن قسم المستخدمين، أنشئ حسابًا لكل مضيف مُصرَّح له، ثم عيّن كلمة مرور ذلك المستخدم ضمن قسم بيانات الاعتماد. استخدم حسابات منفصلة بدلًا من مشاركة بيانات تسجيل دخول مسؤول واحد. يجب تعطيل أي حساب لم يعد يُفترض به إنشاء اجتماعات، أو منعه من الوصول إلى هذا النطاق. إذا كنت بحاجة إلى فرض قيود على مجموعة واحدة فقط ضمن نطاق مشترك، فأضف سياسة تفويض مُتحقق منها بشكل منفصل؛ فالخطوات المذكورة هنا لا تُفعِّل عضوية مجموعة Keycloak تلقائيًا.

قائمة مستخدمي Keycloak مع حسابات المضيف المعتمدة بشكل فردي.
اجعل قائمة مضيفي Jitsi المؤهلين مقتصرة على الحسابات المُدارة بشكل فردي.
منطقة بيانات اعتماد مستخدم Keycloak مع إجراء تعيين كلمة المرور.
قم بتعيين بيانات اعتماد منفصلة لكل مضيف معتمد قبل اختبار تسجيل الدخول.

3. قم بتوصيل Keycloak بخادم Jitsi

توجيه نقاط نهاية نطاق Keycloak عبر HTTPS

قم بتهيئة Keycloak باستخدام اسم المضيف العام الصحيح وعناوين الوكيل العكسي الموثوقة، ثم وجّه /realms/الطلبات من اسم مضيف Jitsi الخاص بك إلى مستمع Keycloak الخاص به. بالنسبة لمثيل Keycloak المتاح على الرابط التالي 127.0.0.1:18080، أضف كتلة الموقع التالية ضمن كتلة خادم HTTPS الحالي لـ Jitsi Nginx، قبل مسارات Jitsi العامة:

location ~ ^/realms/(.*) {
    proxy_pass http://127.0.0.1:18080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

يفترض هذا أن Keycloak متاح محليًا على هذا المنفذ؛ استبدل المنفذ الرئيسي في بيئة النشر الخاصة بك. تجنب كشف لوحة تحكم إدارة Keycloak أو منفذ الواجهة الخلفية دون داعٍ. راجع وثائق Keycloak الخاصة بالخادم الوكيل العكسي للاطلاع على إعدادات الخادم الوكيل واسم المضيف في بيئة الإنتاج.

محرر نصوص مزود بكتلة موقع Nginx لإعادة توجيه طلبات النطاق إلى Keycloak.
يعرض محرر Nginx قسم realm-proxy؛ احتفظ بمسارات Jitsi الأخرى سليمة.

يتطلب استخدام الرموز في علم العروض

قم بالتعديل /etc/prosody/conf.avail/jitsi.example.com.cfg.lua. أضف إعدادات المُصدر والجمهور، ثم حدّث الملف الرئيسي الحالي VirtualHostلاستخدام مصادقة الرمز المميز. ادمج هذه الأسطر مع إعداداته الأخرى - لا تُنشئ نسخة ثانية من كتلة المضيف هذه.

asap_accepted_issuers = { "https://jitsi.example.com/realms/jitsi-realm" }
asap_accepted_audiences = { "account" }
asap_require_room_claim = false

VirtualHost "jitsi.example.com"
    authentication = "token"
    app_id = "jitsi"
    allow_empty_token = false
    cache_keys_url = "https://jitsi.example.com/realms/jitsi-realm/protocol/openid-connect/certs"

لإضافة وصول الضيوف، أضف 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

config.tokenAuthUrl='https://'+ config.hosts.domain + '/realms/jitsi-realm/protocol/openid-connect/auth?client_id=jitsi&response_type=code&scope=openid&state={state}&redirect_uri=https://'+ config.hosts.domain + '/static/sso.html&code_challenge={code_challenge}&code_challenge_method=S256';
config.tokenLogoutUrl='https://'+ config.hosts.domain + '/realms/jitsi-realm/protocol/openid-connect/logout?post_logout_redirect_uri=https://'+ config.hosts.domain + '/static/logout.html';
config.tokenAuthInline=true;
config.sso={ ssoService: config.hosts.domain, tokenService: config.hosts.domain + '/realms/jitsi-realm/protocol/openid-connect', clientId: "jitsi" };

تُطبّق هذه القيم آلية تسجيل الدخول باستخدام رمز التفويض مع PKCE (مفتاح إثبات تبادل الرموز)، وهي آلية حماية للتفويض عبر المتصفح. وينص دليل Jitsi تحديدًا على تعطيل jicofo.confالمصادقة في وضع الرمز المميز؛ لذا يُرجى عدم نسخ كتلة مصادقة XMPP Secure Domain القديمة.

نموذج تسجيل الدخول إلى Jitsi Meet مع حقل اسم المستخدم وكلمة المرور وزر تسجيل الدخول.
يمثل نموذج تسجيل دخول المستخدم عملية التحقق من بيانات الاعتماد قبل أن يقوم المضيف المعتمد بإنشاء غرفة.

تحقق من صحة الخدمات وأعد تحميلها

تحقق من بنية Nginx، ثم أعد تشغيل الخدمات المذكورة فقط في تعليمات مصادقة الرمز المميز الحالية. نفّذ هذه التغييرات خلال فترة الصيانة إذا كان خادم Jitsi قيد الاستخدام بالفعل.

sudo nginx -t
sudo systemctl restart prosody
sudo systemctl restart nginx

4. تجنب أخطاء الأذونات وتسجيل الدخول هذه

  • لا يزال بإمكان الجميع إنشاء غرفة: تأكد من أن مضيف Prosody الرئيسي مُصادق عليه باستخدام رمز مميز، ولا يُسمح باستخدام الرموز المميزة الفارغة، وأن مضيف الضيف منفصل. اختبر ذلك في جلسة متصفح جديدة، وليس في جلسة لا تزال تحتوي على تسجيل دخول صالح.
  • لا يمكن للمستخدمين المعتمدين تسجيل الدخول: قارن بين مُصدر نطاق Keycloak، واسم مضيف HTTPS العام، ومعرّف العميل، وعنوان URI لإعادة التوجيه، وProsody cache_keys_url. إن فشل إعادة توجيه المتصفح لا يُعد دليلاً على صحة أذونات المستخدم.
  • لا يدخل الضيوف إلى أي غرفة: تحقق من النطاق المجهول في كل من Prosody وJitsi config.js، بالإضافة إلى وحدات انتظار المضيف. تختلف حالة انتظار الضيوف أو وجودهم في ردهة الانتظار عن فشل المصادقة.

5. التحقق من الشخص الذي يمكنه إنشاء اجتماع جديد

افتح رابط غرفة غير مستخدمة في نافذة تصفح خاصة دون تسجيل الدخول. يجب ألا يتمكن الضيف من بدء المؤتمر كمضيف أول. بعد ذلك، سجّل الدخول كمستخدم معتمد في Keycloak وأنشئ تلك الغرفة؛ سيتمكن الضيف المدعو حينها من الانضمام إذا فعّلتَ نطاق الضيوف. أخيرًا، جرّب حسابًا معطلاً أو غير معتمد وتأكد من عدم قدرته على المصادقة وإنشاء غرفة جديدة.

عرض إنشاء اجتماع في Jitsi Meet مع اسم الغرفة team-sync وزر إنشاء اجتماع.
يقوم المضيف المصادق عليه بإدخال اسم الغرفة لبدء الاجتماع بعد اجتياز فحص تسجيل الدخول.

في حال فشل أي اختبار، يُرجى فحصه sudo journalctl -u prosody -u nginx --since "10 minutes ago"بالتزامن مع أحداث مصادقة Keycloak، دون نشر الرموز المميزة أو كلمات المرور من السجلات. لا يتم تأكيد الإصلاح إلا عندما يتمكن حساب معتمد من إنشاء غرفة جديدة، بينما لا يتمكن مستخدم غير مصادق عليه من ذلك.

اترك تعليقاً

أتمتة عمليات النسخ الاحتياطي المتسقة لـ Nextcloud باستخدام Restic و Cron

أتمتة عمليات النسخ الاحتياطي المتسقة لـ Nextcloud باستخدام Restic و Cron

قم بعمل نسخ احتياطية لملفات Nextcloud و MariaDB معًا، وجدول لقطات Restic المشفرة باستخدام cron، وتحقق من الاستعادة دون المخاطرة بالخادم المباشر.

تشغيل خادم أوبونتو في وضع الطوارئ: دليل إنقاذ خطوة بخطوة

تشغيل خادم أوبونتو في وضع الطوارئ: دليل إنقاذ خطوة بخطوة

قم بتشخيص وضع الطوارئ في خادم أوبونتو بأمان. اقرأ سجلات بدء التشغيل، وتحقق من مجلدات الجذر و fstab، وأصلح الوحدة المعطلة، وتعامل مع أخطاء نظام الملفات، وتحقق من إعادة التشغيل النظيفة.

نسخ احتياطي واستعادة صندوق بريد Zimbra CE باستخدام ملفات TGZ

نسخ احتياطي واستعادة صندوق بريد Zimbra CE باستخدام ملفات TGZ

قم بتصدير صندوق بريد فردي من إصدار Zimbra Community Edition، وتحقق من صحة نسخة TGZ الاحتياطية الخاصة به، واستعد العناصر المفقودة دون الكتابة فوق البريد الموجود.

السماح للمستخدمين المعتمدين بإنشاء غرف Jitsi باستخدام تسجيل الدخول عبر Keycloak

السماح للمستخدمين المعتمدين بإنشاء غرف Jitsi باستخدام تسجيل الدخول عبر Keycloak

السماح فقط للحسابات المعتمدة ببدء غرف Jitsi Meet باستخدام Keycloak ومصادقة الرمز المميز، مع إبقاء إمكانية انضمام الضيوف متاحة عند الحاجة.

مزامنة مستخدمي Active Directory مع ONLYOFFICE DocSpace عبر LDAP

مزامنة مستخدمي Active Directory مع ONLYOFFICE DocSpace عبر LDAP

قم بتوصيل ONLYOFFICE DocSpace بـ Active Directory أو OpenLDAP، واستورد المستخدمين والمجموعات بأمان، وقم بتعيين حقول الحساب، وجدول مزامنة موثوقة.

إضافة الخطوط إلى خادم مستندات ONLYOFFICE: دوكر مقابل لينكس

إضافة الخطوط إلى خادم مستندات ONLYOFFICE: دوكر مقابل لينكس

قم بتثبيت الخطوط المخصصة في خادم مستندات ONLYOFFICE، وقارن عمليات تحميل Docker الدائمة مع النسخ المباشرة، وأعد بناء قائمة الخطوط، وتحقق من النتيجة.

دبيان 12 على خادم افتراضي خاص ذي ذاكرة وصول عشوائي منخفضة: كيفية تقليل أعطال نفاد الذاكرة في MySQL

دبيان 12 على خادم افتراضي خاص ذي ذاكرة وصول عشوائي منخفضة: كيفية تقليل أعطال نفاد الذاكرة في MySQL

تشخيص عمليات إيقاف MySQL بسبب نفاد الذاكرة على Debian 12، والتحقق من حدود ذاكرة VPS، وتكوين التبديل، وضبط ذاكرة قاعدة البيانات والتزامن دون تقديم حل شامل.

تثبيت وتوقيع وحدات نواة مخصصة على نظام التشغيل SLES 15 Secure Boot

تثبيت وتوقيع وحدات نواة مخصصة على نظام التشغيل SLES 15 Secure Boot

قم بتحميل وحدة نواة SLES 15 مخصصة دون تعطيل خاصية التمهيد الآمن. طابق النواة قيد التشغيل، ووقّع ملف .ko، وسجّل مفتاح MOK، وتحقق من التحميل.

ضع مستندات ONLYOFFICE خلف HAProxy دون تعطيل التحرير

ضع مستندات ONLYOFFICE خلف HAProxy دون تعطيل التحرير

قم بتكوين HAProxy HTTPS، وإعادة توجيه الرؤوس، ومهلات WebSocket، وفحوصات السلامة لـ ONLYOFFICE Docs، ثم تحقق من التحرير والحفظ.

إعادة توجيه سجلات النظام الآمنة في SLES باستخدام rsyslog وبروتوكول TLS المتبادل

إعادة توجيه سجلات النظام الآمنة في SLES باستخدام rsyslog وبروتوكول TLS المتبادل

إرسال سجلات نظام SLES إلى جامع rsyslog عن بعد عبر TLS مصادق عليه، مع عمليات التحقق من الشهادات، وتخزين الانقطاعات مؤقتًا، واختبارات التسليم.