SAML يسبب خطأ في تسجيل خروج المستخدم المحلي

مرحباً
لقد قمت بدمج المستخدمين من LDAP ومستخدمي المنتدى المحليين .. عندما يقوم مستخدم المنتدى المحلي بتسجيل الخروج ، فإنه يتلقى الخطأ التالي

عذرًا، سيتم نقل هذا إلى Support سنحتاج إلى مزيد من المعلومات هنا.

إعجابَين (2)

هل يمكنك التحقق مما إذا كان لديك

DISCOURSE_SAML_LOG_AUTH: true
DISCOURSE_SAML_DEBUG_AUTH: true

ومعرفة ما يحدث في /logs؟

مرحباً
لا يمكنني أيضاً تسجيل الدخول عبر SAML ولكن هذا في موضوع آخر.. لكن المستخدمين المحليين يواجهون مشكلة تسجيل الخروج مع وجود خطأ :smiley: .. في تثبيت المنتدى السابق، كان SAML يعمل، وLDAP وSAML يعملان بشكل جيد حيث أن الخدمات الأخرى تعمل بسلاسة. لذا أعتقد أنني قد أفتقد شيئاً ما في الإعدادات

هناك أيضاً خطأ: SiteSetting.enable_personal_messages … وهذا كل ما هو موجود في السجلات. لقد تم إعادة تثبيته حديثاً..

لقد قمت الآن بتحديد log_auth وقمت ببعض عمليات تسجيل الدخول والخروج وحصلت على الخطأ التالي:


Message (5 copies reported)

(saml) Authentication failure! invalid_ticket: OneLogin::RubySaml::ValidationError, The status code of the Response was not Success

Backtrace

/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:163:in `log'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:486:in `fail!'
/var/www/discourse/plugins/discourse-saml/gems/3.1.3/gems/omniauth-saml-1.9.0/lib/omniauth/strategies/saml.rb:56:in `rescue in callback_phase'
/var/www/discourse/plugins/discourse-saml/gems/3.1.3/gems/omniauth-saml-1.9.0/lib/omniauth/strategies/saml.rb:42:in `callback_phase'
/var/www/discourse/lib/discourse_saml/saml_omniauth_strategy.rb:35:in `callback_phase'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:238:in `callback_call'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:189:in `call!'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:169:in `call'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:192:in `call!'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:169:in `call'

حتى لو قمت بتسجيل الدخول كمستخدم محلي، فإن SAML يريد تسجيل الخروج من المستخدم المحلي لأنه لا يمكنه العثور على المستخدم في LDAP، وأحصل على خطأ.

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

مرحبًا
عند دمج المستخدمين.. يسجل أعضاء الفريق الدخول باستخدام SAML ويسجل آخرون محليًا في المنتدى. عندما يسجل الأشخاص الدخول بدون SAML، عند تسجيل الخروج يظهر لهم خطأ، وأحصل على ما يلي في السجلات عند تسجيل خروج المستخدم المحلي.

(saml) فشل المصادقة! تذكرة غير صالحة: OneLogin::RubySaml::ValidationError، لم يكن رمز حالة الاستجابة ناجحًا
omniaوث-1.9.2/lib/omniauth/strategy.rb:163:in `log'
omniaوث-1.9.2/lib/omniauth/strategy.rb:486:in `fail!'
/var/www/discourse/plugins/discourse-saml/gems/3.2.2/gems/omniauth-saml-1.9.0/lib/omniauth/strategies/saml.rb:56:in `rescue in callback_phase'
/var/www/discourse/plugins/discourse-saml/gems/3.2.2/gems/omniauth-saml-1.9.0/lib/omniauth/strategies/saml.rb:42:in `callback_phase'
/var/www/discourse/plugins/discourse-saml/lib/discourse_saml/saml_omniauth_strategy.rb:35:in `callback_phase'
omniaوث-1.9.2/lib/omniauth/strategy.rb:238:in `callback_call'
omniaوث-1.9.2/lib/omniauth/strategy.rb:189:in `call!'
omniaوث-1.9.2/lib/omniauth/strategy.rb:169:in `call'
omniaوث-1.9.2/lib/omniauth/strategy.rb:192:in `call!'
omniaوث-1.9.2/lib/omniauth/strategy.rb:169:in `call'
omniaوث-1.9.2/lib/omniauth/strategy.rb:192:in `call!'
omniaوث-1.9.2/lib/omniauth/strategy.rb:169:in `call'
omniaوث-1.9.2/lib/omniauth/strategy.rb:192:in `call!'
omniaوث-1.9.2/lib/omniauth/strategy.rb:169:in `call'
omniaوث-1.9.2/lib/omniauth/strategy.rb:192:in `call!'
omniaوث-1.9.2/lib/omniauth/strategy.rb:169:in `call'
omniaوث-1.9.2/lib/omniauth/builder.rb:45:in `call'
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:53:in `call'
rack-2.2.7/lib/rack/tempfile_reaper.rb:15:in `call'
rack-2.2.7/lib/rack/conditional_get.rb:27:in `call'
rack-2.2.7/lib/rack/head.rb:12:in `call'
actionpack-7.0.4.3/lib/action_dispatch/http/permissions_policy.rb:38:in `call'
/var/www/discourse/lib/content_security_policy/middleware.rb:12:in `call'
/var/www/discourse/lib/middleware/anonymous_cache.rb:367:in `call'
rack-2.2.7/lib/rack/session/abstract/id.rb:266:in `context'
rack-2.2.7/lib/rack/session/abstract/id.rb:260:in `call'
actionpack-7.0.4.3/lib/action_dispatch/middleware/cookies.rb:704:in `call'
actionpack-7.0.4.3/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport-7.0.4.3/lib/active_support/callbacks.rb:99:in `run_callbacks'
actionpack-7.0.4.3/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack-7.0.4.3/lib/action_dispatch/middleware/debug_exceptions.rb:28:in `call'
actionpack-7.0.4.3/lib/action_dispatch/middleware/show_exceptions.rb:26:in `call'
logster-2.12.2/lib/logster/middleware/reporter.rb:43:in `call'
railties-7.0.4.3/lib/rails/rack/logger.rb:40:in `call_app'
railties-7.0.4.3/lib/rails/rack/logger.rb:27:in `call'
/var/www/discourse/config/initializers/100-quiet_logger.rb:20:in `call'
/var/www/discourse/config/initializers/100-silence_logger.rb:29:in `call'
actionpack-7.0.4.3/lib/action_dispatch/middleware/remote_ip.rb:93:in `call'
actionpack-7.0.4.3/lib/action_dispatch/middleware/request_id.rb:26:in `call'
/var/www/discourse/lib/middleware/enforce_hostname.rb:24:in `call'
rack-2.2.7/lib/rack/method_override.rb:24:in `call'
actionpack-7.0.4.3/lib/action_dispatch/middleware/executor.rb:14:in `call'
rack-2.2.7/lib/rack/sendfile.rb:110:in `call'
actionpack-7.0.4.3/lib/action_dispatch/middleware/host_authorization.rb:131:in `call'
rack-mini-profiler-3.1.0/lib/mini_profiler.rb:413:in `call'
message_bus-4.3.2/lib/message_bus/rack/middleware.rb:60:in `call'
/var/www/discourse/lib/middleware/request_tracker.rb:228:in `call'
railties-7.0.4.3/lib/rails/engine.rb:530:in `call'
railties-7.0.4.3/lib/rails/railtie.rb:226:in `public_send'
railties-7.0.4.3/lib/rails/railtie.rb:226:in `method_missing'
rack-2.2.7/lib/rack/urlmap.rb:74:in `block in call'
rack-2.2.7/lib/rack/urlmap.rb:58:in `each'
rack-2.2.7/lib/rack/urlmap.rb:58:in `call'
unicorn-6.1.0/lib/unicorn/http_server.rb:634:in `process_client'
unicorn-6.1.0/lib/unicorn/http_server.rb:739:in `worker_loop'
unicorn-6.1.0/lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn-6.1.0/lib/unicorn/http_server.rb:143:in `start'
unicorn-6.1.0/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `load'
/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `<main>'

الشاشة التالية ترحب بالمستخدم المحلي الذي قام بتسجيل الخروج.

واجهنا شيئًا مشابهًا في منتدى كان يستخدم SAML سابقًا وتم تعطيله الآن. ومع ذلك، كان saml_slo_target_url لا يزال مُعدًا واستمر Discourse في استخدامه.

لذا يجب أن يكون الإصلاح هو أن هذا يُستخدم فقط عندما يكون المكون الإضافي SAML ممكّنًا وعندما قام المستخدم بتسجيل الدخول في الأصل باستخدام SAML.