مبادئ OAuth2 في Discourse

لقد وجدت المشكلة: لم يتم تعيين الرأس على “Content-Type: application/json”. وأرى أنه كان نفس الشيء بالنسبة لـ @qlands أعلاه.

القضية الوحيدة المتبقية بالنسبة لي الآن هي نفس قضية @nodomain: يتم إنشاء الحساب بنجاح ولكن الصورة الرمزية غير مدرجة. استجابة نموذجية:

Body: {
  "access_token":"...",
  "token_type":"bearer",
  "expires_in":"3600",
  "scope":"profile",
  "profile" : {
    "id":1234,
    "email": "...",
    "name": "...",
    "picture": "https://somedomain.com/somevalidpicture.jpg"
  }
}

ويتم تحليلها بشكل صحيح، حيث تظهر في السجل التالي:

OAuth2 Debugging: after_authenticate response:

creds: {"token"=>"...", "expires_at"=>1702053692, "expires"=>true}
uid: 1234
info: {"email"=>"...", "name"=>"...", "avatar"=>"https://somedomain.com/somevalidpicture.jpg"}
extra: {}

لقد تحققت من أن عنوان الصورة صحيح، وحجمها 300x300.

أي فكرة حول هذا؟

تعديل: قام شخص ما بإنشاء حساب للتو، وأخذ الصورة من Gravatar. ربما يتم تجاوز الصورة الصالحة في JSON بنتيجة فارغة من Gravatar؟

Authentik كمزود OAuth

أنا حاليًا ألعب بـ Authentik وأود أن أسأل عما إذا كان لدى أي شخص آخر أي خبرة معه ومع discourse؟

للأسف، لم أجد وثيقة دعم رسمية لـ discourse.

هناك الكثير من الإعدادات للعبث بها :smiley:

يحتوي Portainer على تطبيق أبسط بكثير لـ OAuth.

Portainer، فقط للمقارنة:

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

كيف تسير الأمور؟ أرغب في تطبيق تسجيل الدخول الموحد (SSO) مع Authentik على Discourse و Ghost، لكن مشروعي متوقف حاليًا.

سأكون ممتنًا جدًا لأي نصيحة :slight_smile:

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

هل واجه أي شخص مشكلة حيث يقع تسجيل الدخول الموحد (SSO) على شبكة داخلية، وعندما يحاول Discourse الوصول إلى موقع SSO باستخدام عنوان IP داخلي، يصبح غير متاح؟

tail -f production.log

(oauth2_basic) Setup endpoint detected, running now.
(oauth2_basic) Request phase initiated.
Started POST "/presence/update" for 10.10.10.10 at 2024-06-15 18:19:44 +0000
Processing by PresenceController#update as */*
  Parameters: {"client_id"=>"xxx", "present_channels"=>["/chat-user/core/1"]}
Completed 200 OK in 26ms (Views: 0.2ms | ActiveRecord: 0.0ms | Allocations: 1895)
Started GET "/auth/oauth2_basic/callback?code=xxxx&state=xxxx" for 10.10.10.10 at 2024-06-15 18:19:49 +0000
(oauth2_basic) Setup endpoint detected, running now.
(oauth2_basic) Callback phase initiated.
OAuth2::ConnectionError (FinalDestination: all resolved IPs were disallowed)
lib/final_destination/ssrf_detector.rb:105:in `lookup_and_filter_ips'
lib/final_destination/http.rb:15:in `connect'
lib/middleware/omniauth_bypass_middleware.rb:43:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:289:in `call'

خطأ في صفحة الويب

عفوًا
واجه البرنامج الذي يدعم منتدى المناقشة هذا مشكلة غير متوقعة. نعتذر عن الإزعاج.

تم تسجيل معلومات مفصلة حول الخطأ، وتم إنشاء إشعار تلقائي. سنلقي نظرة عليه.

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

لقد تحققت من سجلات جدار الحماية الخاصة بي، لكنني لم أجد أي سجلات حظر! علاوة على ذلك، يقع كل من Discourse و SSO على الشبكة الداخلية، لذلك لا ينبغي أن تكون هناك أي مشكلة في حظر جدار الحماية أو اعتراض الطلبات!

ولكن عندما أشير إلى عنوان IP الخاص بموقع SSO إلى الشبكة العامة الخارجية، فإنه يعمل بشكل طبيعي مرة أخرى!

هل هذه مشكلة في المكون الإضافي أم مشكلة تكوين من جانبي؟

يمكنك إضافة اسم المضيف لموقع تسجيل الدخول الموحد الداخلي الخاص بك إلى إعداد الموقع ‘allowed_internal_hosts’. عندها سيتمكن Discourse من الاتصال به.

كيف يمكن تغيير client_id إلى appid في عنوان URL؟
لا يدعم الخادم الخاص بي client_id في عنوان URL باستثناء appid.
يجب علي تعديل المكون الإضافي.
من فضلك ساعدني

وبعد عام، وما زلت تساعد في هذا المنشور! شكراً لك!! يعمل Authentik الآن بالنسبة لي.

3 إعجابات

مرحباً، أنا أستخدم Oauth2 مع Zalo، ولكن واجهتنا المشكلة المرفقة. هل يعرف أحد السبب؟

لقد قمت بتكوين عنوان URL لرد الاتصال على أنه: https://sphere.daviteq.com/auth/basic_oauth2/callback

هل يمكن لأحد مشاركة إعدادات (authentik)؟ أنا متأكد تقريبًا أنني قمت بإعداد كل شيء بشكل صحيح ولكني ما زلت أتلقى (oauth2_basic) Authentication failure! Timeout::Error: Faraday::TimeoutError, Timeout::Error

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

:partying_face: هذه الإضافة مضمنة الآن مع نواة Discourse كجزء من Bundling more popular plugins with Discourse core. إذا كنت تستضيف بنفسك وتستخدم الإضافة، فأنت بحاجة إلى إزالتها من app.yml قبل الترقية التالية.

x-ref

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