Has anyone succeeded in using discourse as sso provider for nextcloud? Share recipe?

Hi all - I am interested in setting up a few small community sites with discourse plus nextcloud for document and media content sharing. It would be loverly and preferable to have SSO with discourse as SSO provider. If anyone has succeeded in doing this and can share a recipe here on how to do it I’d appreciate it. Thanks! :seedling:

The communities I am looking at creating are for my own geographically dispersed family, my neighborhood, and my son’s school.

I might also be interested in setting up a nextcloud for the organization I work for that already has an active community website. Though my organization’s community uses discourse, it uses wordpress as SSO auth now. Down the pike I’m also interested in flipping that around so we can benefit from features reliant on discourse as SSO auth.

Edit: this seems to be the page - I will be exploring this today and will let others know what I come up with if anything. :slight_smile: Any guidance along the way much appreciated.

https://docs.nextcloud.com/server/11/admin_manual/configuration_server/sso_configuration.html

إعجاب واحد (1)

i’ve quite the same usecases, where i want to use discourse as the SSO provider for nextcloud.

are there any updates on this?

إعجابَين (2)

Not that I am aware of. Could you ask at the nextcloud community?

it’s not a perfect implementation, but it does its job for me:

https://github.com/paroga/user_discourse

6 إعجابات

تطبيق تسجيل الدخول الاجتماعي يدعم ديسكورس بدءًا من الإصدار 4.10.

3 إعجابات

رائع! أرى أن ديسكورس غير متوفر كمزود OAuth “مدمج” لتطبيق تسجيل الدخول الاجتماعي في Nextcloud. هناك طرق مختلفة لإعداد ذلك باستخدام ديسكورس - كيف قمت بذلك؟ هل تمانع في تقديم وصفة؟

أرى أيضًا أن التطبيق يسمح لك بتوريث المجموعات من مزود المصادقة، وهو أمر رائع جدًا. أود أن أكون قادرًا على القيام بذلك مع إعداد ديسكورس/Nextcloud الخاص بي.

هناك أيضًا تطبيقات Nextcloud أخرى تبدو ذات صلة هنا ولكنني لم أختبرها جميعًا. يوجد تطبيق OpenID Connect Login. يوجد أيضًا تطبيق Discourse SSO، ولكنه يبدو قديمًا/غير مختبر.

كما هو مكتوب في منشوري، تحتاج إلى الإصدار 4.10. ثم يوجد خيار “Custom Discourse” في إعدادات تسجيل الدخول الاجتماعي.

إنه يدعم فقط OpenID Connect، والذي لا يوفره ديسكورس.

هذا للاتجاه الآخر، إذا كنت تريد تسجيل الدخول إلى ديسكورس باستخدام حساب Nextcloud الخاص بك.

3 إعجابات

شكراً باتريك! لقد قمت بتثبيت التطبيق مرة أخرى الآن وأرى خيار “Custom Discourse”. لم يتم شرحه بعد في الوثائق، ولهذا السبب اعتقدت أنه لم يتغير شيء. أيضًا على صفحة https://apps.nextcloud.com/apps/sociallogin يوجد رابط إلى رابط معطل في منتدى دعم nextcloud، لذا أواجه صعوبة في معرفة مكان التحدث عن هذا التطبيق مع المطورين.

لقد نجحت الآن، لكن أكبر مشكلة أواجهها هي أنني لا أستطيع معرفة كيفية تمكين هذا ليكون الطريقة الوحيدة لتسجيل الدخول لجميع المستخدمين الحاليين افتراضيًا.

المشكلة الثانية الأكبر هي أن تفاصيل المستخدم لا تنتقل بشكل صحيح من discourse إلى nextcloud. يتم إنشاء المستخدمين الجدد في nextcloud باسم مستخدم تم إنشاؤه تلقائيًا بالشكل [internal name]-[userid]، لذا في حالة موقعي، على سبيل المثال kb2-3797. يتم نقل الاسم، ولكن يجب ملء تفاصيل الملف الشخصي الأخرى مرة أخرى في nextcloud. الصورة الرمزية لا يتم نقلها أيضًا.

أتساءل أيضًا كيف سيقوم المستخدم بإعداد اسم المستخدم وكلمة المرور الخاصة به لعميل سطح المكتب أو الهاتف المحمول، عندما تكون هذه هي الطريقة الوحيدة لتسجيل الدخول لتطبيق الويب nextcloud. أعتقد أنهم سيحتاجون إلى معرفة الذهاب إلى تفضيلات حسابهم في تطبيق الويب nextcloud لإعداد بيانات اعتماد تسجيل الدخول لـ nextcloud.

بعض الأشياء الأخرى التي لاحظتها:

  • لا يتم الوصول إلى إعدادات التطبيق عبر قسم apps ولكن عبر الشريط الجانبي لإعدادات الإدارة. استغرق الأمر مني دقيقة للعثور عليه. :slight_smile:
  • هناك ثلاثة أقسام في إعدادات المسؤول للتطبيق، والأقسام العلوية والسفلية تحتوي على أزرار حفظ ولكن القسم الأوسط (للموفرين المخصصين) لا يحتوي على زر حفظ. ليس من الواضح أي منها يجب استخدامه لحفظ إعدادات discourse المخصصة. الإجابة: كلاهما يعمل بنفس الطريقة.
  • هناك العديد من إعدادات التطبيق. هذه تبدو أنها تعمل بشكل أفضل لإعدادي:
    • disable auto create new users = يسمح بإنشاء مستخدمين جدد في nextcloud إذا كانوا موجودين في discourse
    • create users with disabled account = لا تقم بتعطيل المستخدمين الذين تم إنشاؤهم حديثًا
    • allow users to connect social logins with their account = يسمح للمستخدمين الحاليين بالاشتراك في تسجيل الدخول عبر discourse (:warning: غير قادر على معرفة كيفية جعل السماح للمستخدمين بتسجيل الدخول عبر discourse افتراضيًا)
    • update user profile every login = يقوم بمزامنة مجموعات discourse مع مجموعات nextcloud في كل مرة يقومون فيها بتسجيل الدخول. (:warning: لا يقوم بمزامنة اسم المستخدم والاسم والسيرة الذاتية ومعلومات الملف الشخصي الأخرى بشكل صحيح)
    • do not prune not available user groups on login (:warning: لا أعرف ما يفعله هذا ولكنه ممكّن افتراضيًا. أشك في أنه يمنع إزالة المستخدم من مجموعات nextcloud الحالية إذا لم يتم تعيينها من discourse؟)
    • automatically create groups if they do not exist = معطل لأنه ينشئ بعض أسماء المجموعات القبيحة التي تكرر المجموعات التي تريدها (انظر أدناه)
    • restrict login for users without mapped groups = معطل
    • restict login for users without assigned groups = معطل
    • disable notify admins about new users = معطل لأنه مفيد لي لرؤية متى يتم إنشاء مستخدمي nextcloud جدد
    • hide default login = يشجع المستخدمين على تسجيل الدخول عبر discourse على الرغم من أنه لا يزال من الممكن تسجيل الدخول مباشرة باستخدام اسم المستخدم/البريد الإلكتروني وكلمة المرور لـ nextcloud.
  • لقد فقدت الوصول الإداري فورًا في المرة الأولى التي جربتها، قبل إنشاء تعيينات المجموعات. لاستعادته، اضطررت إلى الذهاب إلى سطر الأوامر وتشغيل occ group:adduser admin USERNAME
  • يعمل تعيين المجموعات بشكل جيد للغاية! كان الأهم هو إضافة تعيين adminsadmin في nextcloud حتى يتمتع المسؤولون في منتدانا بصلاحيات المسؤول في nextcloud. تمكنت أيضًا من إضافة تعيينات للمجموعات المستخدمة للفئات الآمنة، لمنح الوصول أيضًا إلى المجلدات الآمنة في nextcloud المتعلقة بتلك الفئات الآمنة.

نقترب أكثر فأكثر!

إعجاب واحد (1)

أقترح GitHub.

في رأيي، هذه هي أفضل طريقة لتنفيذ ذلك، حيث أن المعرف يُستخدم بشكل أساسي داخليًا ولا يظهر في العديد من الأماكن للمستخدمين العاديين.
لا توجد طريقة سهلة في Nextcloud لإعادة تسمية المستخدمين، ولكن يوجد في Discourse. قد يؤدي إعادة تسمية مستخدم في Discourse إلى بعض السلوك الغريب مع Nextcloud إذا لم تتطابق الأسماء بعد الآن.

يجب تمرير avatar_url من DiscourseConnect إلى Nextcloud و قراءتها هناك. إذا كنت ترغب في تمرير bio أيضًا، فإن بضعة أسطر في الفرع المسؤول عن تحديثات الملف الشخصي يجب أن تقوم بالمهمة.

يجب عليك استخدام كلمات مرور الأجهزة بدلاً من ذلك. يمكن أن تكون كلمة مرور Nextcloud مختلفة عن كلمة مرور Discourse، مما يؤدي إلى الارتباك وتخطي SSO.

أعتقد أن هذه قضايا عامة مع واجهة مستخدم Nextcloud وليست خاصة بالتطبيق.

قم بتعيين خيار social_login_auto_redirect إلى true كما هو موضح في قسم التكوين إذا كنت ترغب في إخفاء تسجيل دخول Nextcloud تمامًا.

إعجابَين (2)

رائع! شكرًا باتريك! أقدر حقًا التوجيه.

لقد فتحت مشكلة على جيت هاب بخصوص مشكلتي الأساسية، وهي أنني أرغب في جعل جميع المستخدمين يسجلون الدخول عبر ديسكورس ولا يمكنني حاليًا القيام بذلك دون إعطاء المستخدمين تعليمات حول كيفية الانتقال إلى ديسكورس عبر تفضيل المستخدم social login connect.

لقد قمت بتعيين social_login_auto_redirect الآن كما تقترح، وسيعمل بشكل جيد بمجرد إعداد الجميع لاستخدام ديسكورس. :+1: أما الآن فهو يعمل بشكل جيد بالنسبة لي شخصيًا ولكن ليس لأي شخص آخر يستخدم هذه المواقع. لن يُسمح لهم بتسجيل الدخول. :sob:

لست متأكدًا تمامًا مما تقصده بكلمات مرور الأجهزة - لقد نظرت إلى الرابط الذي قدمته ولكن لقطات الشاشة لتفضيلات المستخدم في تلك الصفحة لا تبدو مثل مثيل nextcloud الخاص بي. ربما نستخدم إصدارًا مختلفًا؟ أنا على 23.0.0، على قناة التحديث المستقرة. :thinking: أو ربما هناك تطبيق أحتاج إلى تثبيته؟

مزامنة اسم المستخدم والصورة الرمزية والسيرة الذاتية أقل إلحاحًا، على الرغم من أنه سيكون من الجيد رؤيتها تعمل بشكل صحيح. لا أعرف لماذا لا ينبغي أن يكون من الممكن تحديث هذه التفاصيل للمستخدم عند كل تسجيل دخول. ربما هناك خصوصيات مع nextcloud لا تعمل بشكل جيد مع ديسكورس في هذه الحالة. على سبيل المثال، يسمح ديسكورس لمستخدم واحد فقط لكل عنوان بريد إلكتروني بينما يبدو أنني قادر على إنشاء مستخدم nextcloud ثانٍ بنفس عنوان البريد الإلكتروني ما لم أمنعه باستخدام إعداد المسؤول Prevent creating an account if the email address exists in another account. من الناحية المثالية، سيتم ربط هذه الحسابات تلقائيًا بناءً على عنوان البريد الإلكتروني.

إعجاب واحد (1)

لست متأكدًا مما إذا كنت أفهم مشكلتك الحالية بشكل صحيح، ولكني أفترض أن مشكلتك هي المستخدمون الحاليون الذين ليس لديهم “حساب تسجيل دخول اجتماعي متصل”. عندما يتم توصيل جميع المستخدمين، هل سيكون كل شيء على ما يرام؟

كما كتبت بنفسك بالفعل، البريد الإلكتروني ليس فريدًا في Nextcloud وبالتالي لا يمكن استخدامه بأمان لربط المستخدمين.

عندما تحولت إلى تطبيق sociallogin، قمت بتوصيل المستخدمين الحاليين باستعلام SQL بسيط. قمت بتصدير قائمة مستخدمي Discourse وأدرجت ربطًا لـ [الاسم الداخلي]-[معرف المستخدم] (على سبيل المثال، kb2-3797) بأسماء مستخدمي Nextcloud الحاليين في جدول sociallogin_connect في قاعدة بيانات nextcloud. تعتمد الحقول التي تستخدمها للربط (على سبيل المثال، اسم المستخدم أو البريد الإلكتروني) على إعداداتك.

يبدو لقطة الشاشة قديمة بعض الشيء، ولكني أملك جدولًا مشابهًا جدًا (بما في ذلك “زر لإنشاء كلمة مرور جديدة خاصة بالجهاز”) عندما أفتح /settings/user/security على نسختي المستقرة من Nextcloud 23.0. هل يمكنك نشر لقطة شاشة لصفحتك؟

إعجابَين (2)

لن يستغرق الأمر مني وقتًا طويلاً لإصلاح المستخدمين الحاليين لدي - لدي عدد قليل منهم فقط على موقعي. ولكن فيما يتعلق بحل طويل الأجل وقابل للتكرار سيعمل مع كل من يسعى لاستخدام discourse كموفر للمصادقة لـ nextcloud، يبدو أنه سيكون من المنطقي السماح بمستخدم واحد فقط لكل عنوان بريد إلكتروني ومطابقتها تلقائيًا بناءً على عنوان البريد الإلكتروني. لا ينبغي أن يحتاج المستخدمون إلى القيام بأي شيء لجعل هذا يحدث.

إليك ما تبدو عليه صفحة /settings/user/security الخاصة بي.

إعجاب واحد (1)

يوجد “إنشاء كلمة مرور تطبيق جديدة” في نهاية الصفحة. يمكنك إنشاء بيانات اعتماد جديدة للعملاء المكتبيين على سبيل المثال.

إعجابَين (2)

حسنًا، هذا منطقي على الرغم من أن اللغة مربكة بعض الشيء. أعتقد أنني فهمت الأمر الآن. بالنسبة للمستخدمين الجدد الذين لم يسجلوا الدخول مباشرة إلى Nextcloud ويرغبون في تثبيت التطبيق، يحتاجون إلى استخدام زر “إنشاء كلمة مرور تطبيق جديدة” لإنشاء “كلمة مرور تطبيق” جديدة لاستخدامها. من الناحية المثالية، يجب أن تكون كلمة مرور واحدة لكل جهاز ولكن ليس بالضرورة.

سأستمر في المتابعة على GitHub لمعرفة ما إذا كان بإمكاني المساعدة في توضيح الوثائق وحل بعض مشكلات التكامل. ولكن في الوقت الحالي، أود أن أقول يا @paroga لقد قمت أخيرًا بحل طلب الدعم هذا من عام 2017! :partying_face:

إعجاب واحد (1)

أعتقد أنه يمكنك الاطلاع على البرنامج التعليمي الذي كتبته.

أستخدم هذه الوظيفة لربط NextCloud الخاص بي بـ Discourse الخاص بي.

إعجاب واحد (1)

تم إغلاق هذا الموضوع تلقائيًا بعد 30 يومًا من آخر رد. لم يعد يُسمح بالردود الجديدة.