دليل النشر

نشر Keycloak لتسجيل الدخول الموحّد (SSO) على خادمك VPS

انشر على VPS Cloud →

الأمان والمراقبة8 دقيقة قراءة

نشر Keycloak لتسجيل الدخول الموحّد (SSO) على خادمك VPS

يُعدّ Keycloak المرجع مفتوح المصدر لتسجيل الدخول الموحّد على مستوى المؤسسات، وهو مدعوم من Red Hat ويُستخدم حتى في البيئات الخاضعة لتنظيم صارم. بفضل realms الخاصة به واتحاد LDAP ودعمه الكامل لـ OIDC وSAML، فإنه يلبّي احتياجات لا يبلغها إلا القليل من مزوّدي الهوية (IdP). وعند استضافته ذاتيًا على خادم VPS، يمنحك هذا المستوى من الاحترافية دون أي ترخيص أو اعتماد على السحابة.

لماذا تنشر Keycloak على خادمك VPS

حيث تسعى بعض مزوّدات الهوية (IdP) إلى البساطة، يسعى Keycloak إلى الشمولية: عزل متعدد المستأجرين عبر realms، واتحاد أدلة LDAP/Active Directory، والوساطة (brokering) نحو مزوّدين خارجيين (Google وGitHub أو OIDC آخر)، وتخصيص كامل لمظهر صفحات تسجيل الدخول، وتفويض دقيق (fine-grained authorization). وبالنسبة إلى وكالة تدير عدة عملاء أو نظام معلومات ذي متطلبات امتثال، فإن هذا المستوى من التحكّم حاسم. تجنّبك الاستضافة الذاتية على خادم VPS التكاليف لكل مستخدم في عروض IdP المُدارة، وتُبقي قاعدة الهويات بأكملها ضمن نطاق سلطتك القضائية، وهي نقطة بالغة الأهمية للبيانات الحساسة التي لا ترغب في تسليمها إلى طرف ثالث.

مزايا Keycloak المستضاف ذاتيًا

  • realms متعددة لعزل عدة عملاء أو بيئات عزلًا كاملًا على نفس النسخة (instance) الواحدة.
  • دعم أصلي وكامل لـ OpenID Connect وOAuth2 وSAML 2.0.
  • اتحاد LDAP / Active Directory لإعادة استخدام دليل قائم دون عملية ترحيل.
  • الوساطة في الهوية (Identity brokering): تسجيل الدخول عبر Google أو GitHub أو أي IdP خارجي ببضع نقرات.
  • صفحات تسجيل دخول قابلة للتخصيص بالكامل (السمات، اللغات، الهوية البصرية لكل realm).
  • سياسات مصادقة دقيقة: مصادقة متعددة العوامل (MFA) مشروطة، ومدة الجلسة، وقيود حسب الدور.

المتطلبات المسبقة لهذا النشر

يعمل Keycloak على الآلة الافتراضية لجافا JVM (على Quarkus منذ الإصدار v17+) ويظل أكثر استهلاكًا للموارد من مزوّد هوية خفيف. خصّص خادم VPS بـ 2 vCPU و4 غيغابايت من RAM كحدّ أدنى، ويُفضَّل 6 غيغابايت إذا كنت تتوقّع حِملًا أو عدة realms نشطة. يُوصى بشدّة باستخدام قاعدة PostgreSQL خارجية في بيئة الإنتاج (لا تستخدم أبدًا قاعدة H2 المدمجة خارج نطاق الاختبارات). ويكتمل ما يلزم بوجود Docker وDocker Compose ونطاق مخصّص (sso.mydomain.com) ووكيل عكسي (reverse proxy) يتولّى SSL، لأن Keycloak يحتاج إلى إعلامه بأنه يُقدَّم خلف وكيل HTTPS.

نشر Keycloak مع PostgreSQL

01

تعريف Keycloak وPostgreSQL في Compose

في ملف docker-compose.yml، عرّف خدمة postgres (الصورة postgres:16) وخدمة keycloak (الصورة quay.io/keycloak/keycloak). اربط Keycloak بقاعدة البيانات عبر KC_DB=postgres وKC_DB_URL وKC_DB_USERNAME وKC_DB_PASSWORD.

02

تهيئة وضع الإنتاج والوكيل

شغّل باستخدام الأمر start (وليس start-dev). عيّن KC_HOSTNAME=sso.mydomain.com وKC_PROXY_HEADERS=xforwarded حتى يُنشئ Keycloak عناوين URL صحيحة خلف الوكيل العكسي. وحدّد المسؤول الأولي عبر KC_BOOTSTRAP_ADMIN_USERNAME / KC_BOOTSTRAP_ADMIN_PASSWORD.

03

البدء وإتمام عملية البناء (build)

نفّذ docker compose up -d. عند التشغيل الأول، يُجري Keycloak عملية بناء Quarkus مُحسّنة ثم يُرحّل مخطّط PostgreSQL. تابِع docker compose logs -f keycloak حتى تظهر الرسالة التي تشير إلى أن الخادم في وضع الاستماع.

04

إعداد الوكيل العكسي مع SSL

وجّه sso.mydomain.com إلى المنفذ 8080 في حاوية Keycloak عبر Caddy أو Traefik أو Nginx، مع شهادة Let's Encrypt. واحرص على تمرير ترويسات X-Forwarded-* وإلا فستتعطّل عمليات إعادة التوجيه عند تسجيل الدخول.

05

إنشاء realm وعميل (client)

سجّل الدخول إلى وحدة تحكّم المسؤول، وأنشئ realm مخصّصًا (لا تستخدم أبدًا realm master لتطبيقاتك)، ثم عميل OIDC. اضبط قيمة Valid redirect URIs لتطبيقك، واحصل على Client ID والسرّ من تبويب Credentials.

06

ربط تطبيق واختبار التدفّق (flow)

هيّئ تطبيقك باستخدام عنوان الاكتشاف https://sso.mydomain.com/realms/mon-realm/.well-known/openid-configuration. أنشئ مستخدمًا تجريبيًا في الـ realm، وابدأ عملية تسجيل دخول، وتحقّق من إصدار الرمز (token) في قسم Sessions بوحدة التحكّم.

Keycloak أم Authentik: أيّهما تختار؟

المعيارKeycloakAuthentik
حالة الاستخدام المستهدفةتسجيل دخول موحّد للمؤسسات، متعدد المستأجرين، الامتثالالاستضافة الذاتية، المختبر المنزلي (homelab)، الوكالات
البروتوكولاتOIDC, OAuth2, SAML, LDAPOIDC, OAuth2, SAML, LDAP, forward auth
Forward auth (الوكيل)غير أصلي (عبر إضافات)أصلي ومحوري في الأداة
استهلاك المواردمرتفع (JVM، 4 غيغابايت+ RAM)معتدل (2-4 غيغابايت RAM)
realms / المستأجرون المتعددونممتاز (realms معزولة)المستأجرون مدعومون، لكن بشكل أقل تطوّرًا
تخصيص التدفّقات (flows)السمات وواجهة SPI بجافاتدفّقات مرئية على شكل خطوات
منحنى التعلّمحادّ، وشامل جدًاأيسر منالًا
اتحاد الأدلةناضج (LDAP/AD)جيّد (LDAP)

في بيئة الإنتاج، لا تُشغّل Keycloak أبدًا بقاعدة H2 المدمجة ولا تُتِح realm master للعموم: أنشئ realm مخصّصًا لكل تطبيق أو لكل عميل، واحتفظ بـ master للإدارة فقط. ولتحصين النسخة، عطّل التسجيل الحرّ، وفعّل brute force detection في Realm Settings > Security Defenses، وهيّئ كل شيء عبر ملفات استيراد realm (--import-realm) كي تُخضع تهيئتك لإدارة الإصدارات بدلًا من النقر في واجهة المستخدم.

استضِف تسجيل دخول موحّد بمستوى المؤسسات

يوفّر خادم VPS Cloud من ServOrbit مع قالب Docker مُعدّ مسبقًا ذاكرة RAM وقاعدة PostgreSQL اللازمة لتشغيل Keycloak في بيئة الإنتاج، بما في ذلك realms والاتحاد.

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو راسل فريقنا — الدعم بـ العربية والفرنسية والإنجليزية.