لقد قمت بضبط حزمة إضافات Discourse + Keycloak SSO + SAML + OpenID Connect بنجاح. هناك شيء واحد فقط يخلّ بجمال هذا الإعداد وهو تسجيل الخروج.
عند تسجيل الخروج من المنتدى، يتم إلغاء تفويض المستخدم، وهذه الخطوة تعمل بشكل جيد.
لكن عند مراجعة الجلسات المفتوحة في Keycloak، لا يتم حذف جلسة المستخدم الذي غادر المنتدى.
أظن أن السبب يعود إلى إعدادات رابط تسجيل الخروج. لكنني لا أعرف أين يتم ضبطها - هل في Discourse أم في Keycloak؟
نعم! إنها تعمل بشكل ممتاز! أود التوضيح أنه من الضروري تعيين متغير openid_connect_rp_initiated_logout_redirect.
@david لدي سؤال آخر. سؤال مهم.
أنا الآن في المراحل النهائية من اختبار Keycloak SSO، ويحتاج الأمر إلى اختيار بروتوكول - SAML أو OpenID Connect.
لقد فضلت OpenID Connect، لكنني واجهت الآن مشكلة مزعجة تتعلق بإنشاء مستخدمين جدد عند استخدام OpenID Connect.
لفهم المشكلة، سأبدأ من الجانب الآخر. عند إنشاء مستخدم جديد في المنتدى باستخدام SAML، يتم إنشاء المستخدم في نظام SSO ثم يتم إرساله بشكل شفاف لإنشائه في Discourse. ويتم تفعيله فورًا - وهذا مهم!
أي أنه عندما أضغط على “تسجيل حساب” في منتدى Discourse، أنتقل إلى Keycloak حيث أنشئ مستخدمًا، وأؤكد بريده الإلكتروني، وما إلى ذلك. بعد ذلك، يتم نقلي إلى منتدى Discourse، حيث يكون المستخدم قد تم إنشاؤه بالفعل وتفعيله تلقائيًا:
إذا ظهرت هذه الرسالة لـ OpenID Connect، فهذا يعني أن مزوّد الهوية أرسل رسالة email_verified: false إلى Discourse. إذا قمت بتفعيل إعداد التصحيح التفصيلي، فسيتم طباعة جميع بيانات المصادقة إلى /logs لتفحصها. نأمل أن تكون هناك طريقة ما لإخبار Keycloak بتمرير حالة التحقق بشكل صحيح.
طالما أنك متأكد بنسبة 100% من أن Keycloak قد تحققت من البريد الإلكتروني، فلا بأس بذلك. أما إذا لم تكن عناوين البريد الإلكتروني محققة، فإن القيام بذلك سيفتح موقع Discourse الخاص بك أمام المهاجمين.
أنا لست على دراية بـ Keycloak، لكن أي من الطريقتين تبدو مقبولة. إذا أردت لاحقًا وجود ضوابط وصول منفصلة لكل منتدى، فقد يكون إنشاء عملاء منفصلين لكل منها أسهل في التنفيذ