لا يمكن لمكوّن Openid-connect جلب التكوين

لقد كنت أحاول حل هذه المشكلة منذ فترة ولم أتمكن من حلها. أحاول دمج discourse مع إعداد Keycloak للمصادقة باستخدام المكون الإضافي discourse-openid-connect. أقوم بتشغيل discourse-docker الإصدار 3.0.1. حاليًا، عند النقر فوق زر تسجيل الدخول OpenID connect، تظهر هذه الرسالة في discourse: “تعذر جلب التكوين من موفر الهوية. يرجى المحاولة مرة أخرى”.

أقوم بالترحيل إلى إعداد discourse جديد، والشيء المضحك هو أن discourse قادر على الوصول إلى شاشة تسجيل الدخول Keycloak باستخدام مثيل Keycloak القديم الخاص بي بشكل جيد، ولكنه لا يستطيع ذلك مع مثيلي الجديد. هذا يعني أن ما يلي يجب أن يكون صحيحًا:

  • إعدادات المكون الإضافي openid-connect صحيحة بالتأكيد (منسوخة من discourse القديم)
  • إعدادات Keycloak لعميل discourse صحيحة بالتأكيد (منسوخة من discourse القديم)
  • لا توجد مشكلة في الشبكة
  • لا يوجد جدار حماية أو أي شيء يحظر حركة المرور

لقد وجدت أيضًا أنه يمكنني بنجاح إجراء curl لعنوان URL لوثيقة الاكتشاف لـ Keycloak من مثيل discourse بشكل جيد. إصدار Keycloak هو نفسه الإصدار القديم، وتعمل مصادقة Keycloak بشكل جيد للأدوات الأخرى الموجودة في نفس منطقة AWS ونفس المنطقة المتوفرة مثل discourse. فيما يلي الخطأ من السجلات عندما أحاول تسجيل الدخول باستخدام openid-connect.

لقد أجريت بحثًا واختبرت الكثير ولم ينجح أي شيء. يبدو الخطأ المتعلق بعناوين IP المحظورة عامًا جدًا، وأنا متأكد تمامًا من عدم وجود جدار حماية يحظر أي شيء، خاصة وأنني أستطيع إجراء curl لوثيقة الاكتشاف بشكل جيد. لا يمكنني التفكير إلا في أن discourse قد يحاول سحب المستند من ذاكرة التخزين المؤقت في مكان ما أو لا يصل إلى عنوان URL الصحيح للرمز المميز، ولكنني لا أعرف ذلك. أي مساعدة ستكون موضع تقدير.

بدأ GET "/session/csrf" من <my_ip> في 2023-02-01 18:02:24 +0000
معالجة بواسطة SessionController#csrf بصيغة JSON
اكتمل 200 OK في 2ms (Views: 0.2ms | ActiveRecord: 0.0ms | Allocations: 406)
بدأ POST "/auth/oidc" من 10.158.133.85 في 2023-02-01 18:02:24 +0000
(oidc) تم اكتشاف نقطة نهاية الإعداد، ويتم تشغيلها الآن.
سجل OIDC: جلب وثيقة الاكتشاف من https://<keycloak_URL>.com/auth/realms/<my_realm>/.well-known/openid-configuration
سجل OIDC: جلب وثيقة الاكتشاف أثار خطأ Faraday::ConnectionFailed FinalDestination: تم حظر جميع عناوين IP التي تم حلها
سجل OIDC: وثيقة الاكتشاف هي

---

(oidc) بدأت مرحلة الطلب.
(oidc) فشل المصادقة! openid_connect_discovery_error: OmniAuth::OpenIDConnect::DiscoveryError, وثيقة الاكتشاف مفقودة
بدأ GET "/auth/failure?message=openid_connect_discovery_error&strategy=oidc" من <my_ip> في 2023-02-01 18:02:24 +0000
معالجة بواسطة Users::OmniauthCallbacksController#failure بصيغة HTML
  المعلمات: {"message"=>"openid_connect_discovery_error", "strategy"=>"oidc"}
  تم عرض users/omniauth_callbacks/failure.html.erb ضمن layouts/no_ember (المدة: 0.1ms | التخصيصات: 17)
  تم عرض التخطيط layouts/no_ember.html.erb (المدة: 17.3ms | التخصيصات: 5113)
اكتمل 200 OK في 24ms (Views: 19.7ms | ActiveRecord: 0.0ms | Allocations: 6610)
إعجاب واحد (1)

هناك تصحيح أمني يمنع الوصول إلى العناوين في النطاقات الخاصة (10.0.0.0/8 وما إلى ذلك) لمنع استكشاف الشبكة الداخلية.

تحتاج إلى إضافة اسم المضيف إلى المسؤول - الإعدادات - الأمان - allowed internal hosts لتجاوز الفحص.
كان سيكون من الجيد لو قام المكون الإضافي بذلك نيابة عنك.

إعجابَين (2)

رائع! فإذا أضفت مفتاحي إلى هنا، فهل سيعمل؟ هل سأفعل ذلك باستخدام عنوان URL أم باستخدام عنوان IP؟

تحرير: لا داعي لذلك، لقد نجح الأمر. شكراً جزيلاً لك! لقد أمضيت الكثير من الوقت في هذا وكان حلاً بسيطًا للغاية.

إعجابَين (2)

@joshml.extra يا له من مصادفة أنني أواجه نفس المشكلة بالضبط مع تكامل Keycloak oidc والحل الذي قدمه @RGJ واعد. لقد جربته، لكنه نجح فقط لعنوان IP في حالتي عنوان IP لـ Kubernetes pod.

@RGJ - هل من الممكن أن يعمل DNS بنفس الطريقة؟ في حالتي، إنه عنوان URL لـ Nginx Ingress وأرى فشلًا في التحقق من الشهادة لأن لدي شهادات موقعة من CA داخلي على Nginx Controller الخاص بي. عنوان URL لـ ingress يحل إلى عنوان IP خاص.

شكرا لك على هذا الموضوع!! أقدر ذلك حقًا :slightly_smiling_face:. كدت أن أستسلم في العثور على حل لسيناريو air gapped الخاص بنا.

لا يبدو أن مشكلتك تتعلق بعنوان IP خاص. ففي النهاية، إذا تم حظر الأمور بسبب عنوان IP الخاص، فلن تصل أبدًا إلى فشل التحقق من الشهادة؟

حسنًا! هذا منطقي.

شكرًا على الشرح. إنها تعمل بشكل جيد معي باستخدام عنوان IP / اسم مضيف.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.