SSO 통합 중 오류 발생 - Wholistic Minds

안녕하세요,

저희 서버는 현재 자체 호스팅(self-hosted) 방식으로 운영되고 있으며, .NET 기반 플랫폼과 Discourse 앱에 SSO를 구현하려고 시도하고 있습니다.

다음은 우리가 겪고 있는 문제입니다. 올바른 방향으로 안내해 주실 수 있을까요?

예외 앱 미들웨어에서 예외 처리 실패: 잘못된 URI:

백트레이스

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>'

UI에서 확인되는 응답은 다음과 같습니다:

오!

이 토론 포럼을 구동하는 소프트웨어에서 예상치 못한 문제가 발생했습니다. 불편을 드려 죄송합니다.

오류에 대한 자세한 정보는 기록되었으며, 자동 알림이 생성되었습니다. 확인하겠습니다.

추가 조치는 필요하지 않습니다. 그러나 오류 상태가 지속된다면, 오류 재현 단계를 포함한 추가 세부 정보를 사이트의 피드백 카테고리에 토론 주제를 게시하여 제공할 수 있습니다.

문제를 디버깅하는 데 도움을 드리기 위해 더 많은 정보가 필요합니다.

어떤 버전의 Discourse를 사용 중이신가요?

인증 과정의 어느 단계에서 실패하나요?

이 오류를 발생시키기 위해 어떤 데이터가 POST되었나요?

추가로 알려 주실 수 있는 정보가 있나요?

DiscourseConnect가 아니라 OAuth2 솔루션을 시도하고 있는 것으로 보이는데, OAuth2 서버로 작동하는 .net 애플리케이션에서 무언가 누락된 부분이 있나요?

리치 리치님, 안녕하세요.
사용 중인 Discourse 버전은 2.8.0.beta1입니다.
인증 단계가 정확히 어느 부분인지 확실하지는 않지만, 도움이 된다면 받은 에러 로그를 첨부합니다.


그리고 @hawm님, 네, 우리는 OAuth2 솔루션을 사용하고 있습니다. 어떤 방식이 더 쉽다고 보시나요?

저는 내 애플리케이션에 OAuth2 솔루션을 사용하지 않으므로, 어느 쪽이 더 쉬운지 말하기 어렵습니다.

질문자(OP)의 문제의 원인은 oauth2_user_json_url 설정 때문이라고 생각합니다.

문제는 토큰에서 발생했습니다. 먼저 구글 인증을 연동한 후, 서버에서 작동하지 않던 부분을 확인하여 문제를 해결했습니다. 도움을 주셔서 감사합니다.