שגיאה במהלך אינטגרציית SSO - Wholistic Minds

סיכום מבוסס בינה מלאכותית

In a support thread titled ‘Error during SSO integration - Wholistic Minds,’ Sushant_Dahal1 reported an issue integrating SSO via OAuth2 with their .NET platform, encountering an ‘Invalid URI’ error during authentication. Richie requested more context, including Discourse version (2.8.0.beta1), authentication stage, and POST data. hawm suggested the issue might stem from the oauth2_user_json_url setting in the OAuth2 plugin, noting they don’t use this solution. Sushant_Dahal1 confirmed they’re using OAuth2 and asked for advice on which SSO method is easier. hawm reiterated unfamiliarity with OAuth2 but pointed to the configuration URL as the likely culprit. Ultimately, Sushant_Dahal1 resolved the issue by first testing Google OAuth2, then comparing configurations to identify the token-related problem on their server. The issue was fixed without further intervention.

Hello,

Our server is currently self hosted and we’re trying to implement SSO on discourse app with our .net hosted platform.

Here is the issue we’ve been facing. Could you please forward us to the right direction?

Failed to handle exception in exception app middleware : Invalid URI:

Backtrace

excon-0.82.0/lib/excon.rb:126:in `new'

/var/www/discourse/plugins/discourse-oauth2-basic/plugin.rb:211:in `fetch_user_details'

/var/www/discourse/plugins/discourse-oauth2-basic/plugin.rb:255:in `after_authenticate'

/var/www/discourse/app/controllers/users/omniauth_callbacks_controller.rb:37:in `complete'

actionpack-6.1.3.2/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'

actionpack-6.1.3.2/lib/abstract_controller/base.rb:228:in `process_action'

actionpack-6.1.3.2/lib/action_controller/metal/rendering.rb:30:in `process_action'

actionpack-6.1.3.2/lib/abstract_controller/callbacks.rb:42:in `block in process_action'

activesupport-6.1.3.2/lib/active_support/callbacks.rb:117:in `block in run_callbacks'

/var/www/discourse/app/controllers/application_controller.rb:395:in `block in with_resolved_locale'

i18n-1.8.10/lib/i18n.rb:314:in `with_locale'

/var/www/discourse/app/controllers/application_controller.rb:395:in `with_resolved_locale'

activesupport-6.1.3.2/lib/active_support/callbacks.rb:126:in `block in run_callbacks'

activesupport-6.1.3.2/lib/active_support/callbacks.rb:137:in `run_callbacks'

actionpack-6.1.3.2/lib/abstract_controller/callbacks.rb:41:in `process_action'

actionpack-6.1.3.2/lib/action_controller/metal/rescue.rb:22:in `process_action'

actionpack-6.1.3.2/lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'

activesupport-6.1.3.2/lib/active_support/notifications.rb:203:in `block in instrument'

activesupport-6.1.3.2/lib/active_support/notifications/instrumenter.rb:24:in `instrument'

activesupport-6.1.3.2/lib/active_support/notifications.rb:203:in `instrument'

actionpack-6.1.3.2/lib/action_controller/metal/instrumentation.rb:33:in `process_action'

actionpack-6.1.3.2/lib/action_controller/metal/params_wrapper.rb:249:in `process_action'

activerecord-6.1.3.2/lib/active_record/railties/controller_runtime.rb:27:in `process_action'

actionpack-6.1.3.2/lib/abstract_controller/base.rb:165:in `process'

actionview-6.1.3.2/lib/action_view/rendering.rb:39:in `process'

rack-mini-profiler-2.3.2/lib/mini_profiler/profiling_methods.rb:85:in `block in profile_method'

actionpack-6.1.3.2/lib/action_controller/metal.rb:190:in `dispatch'

actionpack-6.1.3.2/lib/action_controller/metal.rb:254:in `dispatch'

actionpack-6.1.3.2/lib/action_dispatch/routing/route_set.rb:50:in `dispatch'

actionpack-6.1.3.2/lib/action_dispatch/routing/route_set.rb:33:in `serve'

actionpack-6.1.3.2/lib/action_dispatch/journey/router.rb:50:in `block in serve'

actionpack-6.1.3.2/lib/action_dispatch/journey/router.rb:32:in `each'

actionpack-6.1.3.2/lib/action_dispatch/journey/router.rb:32:in `serve'

actionpack-6.1.3.2/lib/action_dispatch/routing/route_set.rb:842:in `call'

omniauth-1.9.1/lib/omniauth/strategy.rb:192:in `call!'

omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'

omniauth-1.9.1/lib/omniauth/strategy.rb:420:in `call_app!'

omniauth-1.9.1/lib/omniauth/strategy.rb:373:in `callback_phase'

omniauth-oauth2-1.7.1/lib/omniauth/strategies/oauth2.rb:93:in `callback_phase'

omniauth-1.9.1/lib/omniauth/strategy.rb:238:in `callback_call'

omniauth-1.9.1/lib/omniauth/strategy.rb:189:in `call!'

omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'

omniauth-1.9.1/lib/omniauth/strategy.rb:192:in `call!'

omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'

omniauth-1.9.1/lib/omniauth/strategy.rb:192:in `call!'

omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'

omniauth-1.9.1/lib/omniauth/strategy.rb:192:in `call!'

omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'

omniauth-1.9.1/lib/omniauth/strategy.rb:192:in `call!'

omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'

omniauth-1.9.1/lib/omniauth/strategy.rb:192:in `call!'

omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'

omniauth-1.9.1/lib/omniauth/builder.rb:45:in `call'

/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:50:in `call'

rack-2.2.3/lib/rack/tempfile_reaper.rb:15:in `call'

rack-2.2.3/lib/rack/conditional_get.rb:27:in `call'

rack-2.2.3/lib/rack/head.rb:12:in `call'

actionpack-6.1.3.2/lib/action_dispatch/http/permissions_policy.rb:22:in `call'

/var/www/discourse/lib/content_security_policy/middleware.rb:12:in `call'

/var/www/discourse/lib/middleware/anonymous_cache.rb:353:in `call'

rack-2.2.3/lib/rack/session/abstract/id.rb:266:in `context'

rack-2.2.3/lib/rack/session/abstract/id.rb:260:in `call'

actionpack-6.1.3.2/lib/action_dispatch/middleware/cookies.rb:689:in `call'

actionpack-6.1.3.2/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'

activesupport-6.1.3.2/lib/active_support/callbacks.rb:98:in `run_callbacks'

actionpack-6.1.3.2/lib/action_dispatch/middleware/callbacks.rb:26:in `call'

actionpack-6.1.3.2/lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'

actionpack-6.1.3.2/lib/action_dispatch/middleware/debug_exceptions.rb:29:in `call'

actionpack-6.1.3.2/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'

logster-2.9.6/lib/logster/middleware/reporter.rb:43:in `call'

railties-6.1.3.2/lib/rails/rack/logger.rb:37:in `call_app'

railties-6.1.3.2/lib/rails/rack/logger.rb:28:in `call'

/var/www/discourse/config/initializers/100-quiet_logger.rb:23:in `call'

/var/www/discourse/config/initializers/100-silence_logger.rb:31:in `call'

actionpack-6.1.3.2/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'

actionpack-6.1.3.2/lib/action_dispatch/middleware/request_id.rb:26:in `call'

/var/www/discourse/lib/middleware/enforce_hostname.rb:23:in `call'

rack-2.2.3/lib/rack/method_override.rb:24:in `call'

actionpack-6.1.3.2/lib/action_dispatch/middleware/executor.rb:14:in `call'

rack-2.2.3/lib/rack/sendfile.rb:110:in `call'

actionpack-6.1.3.2/lib/action_dispatch/middleware/host_authorization.rb:92:in `call'

rack-mini-profiler-2.3.2/lib/mini_profiler/profiler.rb:249:in `call'

message_bus-3.3.5/lib/message_bus/rack/middleware.rb:61:in `call'

/var/www/discourse/lib/middleware/request_tracker.rb:177:in `call'

railties-6.1.3.2/lib/rails/engine.rb:539:in `call'

railties-6.1.3.2/lib/rails/railtie.rb:207:in `public_send'

railties-6.1.3.2/lib/rails/railtie.rb:207:in `method_missing'

rack-2.2.3/lib/rack/urlmap.rb:74:in `block in call'

rack-2.2.3/lib/rack/urlmap.rb:58:in `each'

rack-2.2.3/lib/rack/urlmap.rb:58:in `call'

unicorn-6.0.0/lib/unicorn/http_server.rb:634:in `process_client'

unicorn-6.0.0/lib/unicorn/http_server.rb:732:in `worker_loop'

unicorn-6.0.0/lib/unicorn/http_server.rb:547:in `spawn_missing_workers'

unicorn-6.0.0/lib/unicorn/http_server.rb:143:in `start'

unicorn-6.0.0/bin/unicorn:128:in `<top (required)>'

/var/www/discourse/vendor/bundle/ruby/2.7.0/bin/unicorn:23:in `load'

/var/www/discourse/vendor/bundle/ruby/2.7.0/bin/unicorn:23:in `<main>'

The UI response we’re seeing is:

Oops

The software powering this discussion forum encountered an unexpected problem. We apologize for the inconvenience.

Detailed information about the error was logged, and an automatic notification generated. We’ll take a look at it.

No further action is necessary. However, if the error condition persists, you can provide additional detail, including steps to reproduce the error, by posting a discussion topic in the site’s feedback category.

In order to help debug your issue we’ll need to know a lot more information please.

Which Discourse version are you running?

At which stage of the authentication process does it fail?

What data was POSTed in order to generate this error?

What else can you tell us?

Look like you’re trying the OAuth2 solution not DiscourseConnect, are you missing anything in your .net application that acts as an OAuth2 server?

Hi Richie Rich,
The discourse version we’re using is 2.8.0.beta1
I’m not sure about the exact stage of authentication, but if it helps I’ve attached the error log we’ve received.


And @hawm yes we’re using OAuth2 solution. Which one is easier in your view?

I don’t use the OAuth2 solution for my application, so it’s hard to say which is easier.

The problem in the OP, I thinks your oauth2_user_json_url setting is the cause.

The problem was with token. This issue has been resolved by first integrating with google authentication, then we checked what didn’t work with out server. Thank you for your help.