Zammad: Omniauth OAuth يعيد توجيه _uri_mismatch عند استخدام https

تم إنشاؤها على ٣ فبراير ٢٠١٧  ·  9تعليقات  ·  مصدر: zammad/zammad

معلومات:

  • إصدار Zammad المستخدم: 1.2.0
  • نظام التشغيل: أوبونتو 16.04

سلوك متوقع:

  • استخدم https في عنوان url لرد الاتصال لـ github oauth

السلوك الفعلي:

  • يستخدم http في عنوان url لرد الاتصال لـ github oauth

خطوات إعادة إنتاج السلوك:

  • عيّن نوع http إلى https
  • تسجيل خروج
  • تخويل مع جيثب على صفحة تسجيل الدخول

الحل المعروف

أعد توجيه http إلى https في nginx واستخدم إصدار http من عنوان url كعنوان url لمعاودة الاتصال في إعداد تطبيق github oauth

(متعلق بـ # 647)

bug

التعليق الأكثر فائدة

مرحبًا schurig - أعتقد أنني فهمت ذلك! هل تعمل بتثبيت NGINX؟ إذا كان الأمر كذلك ، يُرجى تحديث التهيئة وإضافة هذين السطرين:

        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-Port 443;

كما في لقطة الشاشة:
bildschirmfoto 2017-02-17 um 16 56 54

أعد تشغيل NGINX و Zammad وأخبرني. يجب أن يكون اباتشي هذه الأسطر:

RequestHeader set Host zammad.example.com
RequestHeader set X-Forwarded-Proto https
RequestHeader set X-Forwarded-Port 443

للتسجيل: لقد قمت بإلقاء ملف Rack.envs عبر مُهيئ للكتابة فوق اكتشاف Omniauth ssl في مُهيئ السكك الحديدية الجديد config/initializers/debug_ssl.rb :

Rails.application.config.to_prepare do              # to_prepare ensures that the monkey patching happens before the first request
  OmniAuth::Strategy.class_eval do                  # reopen the class
    protected

    def ssl?                                        # redefine the ssl? method
      # DEBUG/CUSTOMIZATION
      File.write('/tmp/omniauth.log', request.env.inspect)
      # DEBUG/CUSTOMIZATION

      request.env['HTTPS'] == 'on' ||
        request.env['HTTP_X_FORWARDED_SSL'] == 'on' ||
        request.env['HTTP_X_FORWARDED_SCHEME'] == 'https' ||
        (request.env['HTTP_X_FORWARDED_PROTO'] && request.env['HTTP_X_FORWARDED_PROTO'].split(',')[0] == 'https') ||
        request.env['rack.url_scheme'] == 'https'
    end
  end
end

ولم يتم وضع أي من الفارس المكشوفة.

ال 9 كومينتر

عملت معي.

تذكر أنه تم تعيين عنوان url الخاص بمعاودة الاتصال على github وليس على Zammad.

هنا:

screenshot_3

شكرا @ madd86 !

@ madd86 هذا ما فعلته. الشيء الآخر هو مجرد الحل بحيث يعمل

مرحبا schurig - ups. اضغط على الزر مبكرًا 😁

لقد قمت بتحليل السلوك ويمكنني إعادة إنتاج المشكلة التي تواجهها. للأسف ، هذا خارج نطاق Zammad (قام به Ominauth) لذلك لا يمكننا تقديم حل مباشر. ومع ذلك ، سنقوم بتحليلها بشكل أكبر للعثور على أفضل حل لتشغيلها.

كيف تتكاثر:

  • احصل على مثيل https Zammad يعمل باستخدام وكيل عكسي مثل NGINX
  • قم بتسجيل تطبيق Github OAuth2 في Github / Zammad
  • حاول تسجيل الدخول في Zammad ، تتم إعادة توجيهك إلى صفحة Github
  • لاحظ أن معلمة redirect_url GET هي في الواقع عنوان url لـ Zammad مع http بدلاً من https

الوضع الحالي:
يأتي عنوان redirect_url من هنا:
https://github.com/intridea/omniauth-github/blob/master/lib/omniauth/strategies/github.rb#L5
https://github.com/intridea/omniauth-oauth2/blob/master/lib/omniauth/strategies/oauth2.rb#L47
https://github.com/omniauth/omniauth/blob/8098855f6b52f5f1aecbd700e7068f204adddfdd/lib/omniauth/strategy.rb#L435
https://github.com/omniauth/omniauth/blob/8098855f6b52f5f1aecbd700e7068f204adddfdd/lib/omniauth/strategy.rb#L428
https://github.com/omniauth/omniauth/blob/8098855f6b52f5f1aecbd700e7068f204adddfdd/lib/omniauth/strategy.rb#L503

يبدو أن بعض هذه RACK ENVs لم يتم ضبطها بشكل صحيح. يجب التحقق مما إذا كان بإمكاننا التأثير على ذلك عبر NGINX conf أو إذا كان علينا القيام بذلك بطريقة ما في سياق ريلز.

مرحبًا schurig - أعتقد أنني فهمت ذلك! هل تعمل بتثبيت NGINX؟ إذا كان الأمر كذلك ، يُرجى تحديث التهيئة وإضافة هذين السطرين:

        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-Port 443;

كما في لقطة الشاشة:
bildschirmfoto 2017-02-17 um 16 56 54

أعد تشغيل NGINX و Zammad وأخبرني. يجب أن يكون اباتشي هذه الأسطر:

RequestHeader set Host zammad.example.com
RequestHeader set X-Forwarded-Proto https
RequestHeader set X-Forwarded-Port 443

للتسجيل: لقد قمت بإلقاء ملف Rack.envs عبر مُهيئ للكتابة فوق اكتشاف Omniauth ssl في مُهيئ السكك الحديدية الجديد config/initializers/debug_ssl.rb :

Rails.application.config.to_prepare do              # to_prepare ensures that the monkey patching happens before the first request
  OmniAuth::Strategy.class_eval do                  # reopen the class
    protected

    def ssl?                                        # redefine the ssl? method
      # DEBUG/CUSTOMIZATION
      File.write('/tmp/omniauth.log', request.env.inspect)
      # DEBUG/CUSTOMIZATION

      request.env['HTTPS'] == 'on' ||
        request.env['HTTP_X_FORWARDED_SSL'] == 'on' ||
        request.env['HTTP_X_FORWARDED_SCHEME'] == 'https' ||
        (request.env['HTTP_X_FORWARDED_PROTO'] && request.env['HTTP_X_FORWARDED_PROTO'].split(',')[0] == 'https') ||
        request.env['rack.url_scheme'] == 'https'
    end
  end
end

ولم يتم وضع أي من الفارس المكشوفة.

كانت هذه هي المشكلة! شكرا!! 😍 ❤️

شكرا على ملاحظاتك! الالتزام في طريقه. 🚀 حتى الإصدار التالي.

جرب هذه الإجابة عملت معي
https://stackoverflow.com/a/41466634/1770571

salmagomaa هذا لا يحل المشكلة وكان خلل داخل زمماد.
يرجى محاولة عدم إعادة استخدام المنشورات - لقد تم حل المشكلة بالفعل.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات