내 인스턴스에서 Discourse ID가 활성화되지 않습니다

테스트 시스템(3.6.0.beta2-latest)에서 Discourse_id를 활성화하려고 하면 이 메시지가 표시됩니다:

enable_discourse_id: 이 설정을 활성화하기 전에 Discourse ID 자격 증명('discourse_id_client_id' 및 'discourse_id_client_secret')을 구성해야 합니다.

여기서는 OIDC를 위해 로컬 Oauth 서버(keycloak)를 사용하고 있습니다. 두 방식이 서로 간섭을 일으키는 건 아닌지 궁금합니다.

OIDC와 충돌하지는 않을 것으로 생각하지만, 인스턴스가 인터넷에서 접근 불가능하다면 ID 등록이 작동하지 않습니다. Discourse ID ID 제공자는 등록 프로세스를 시작하는 Discourse 인스턴스에 대해 검증 메커니즘을 갖추고 있습니다.

테스트 인스턴스는 forum2.netzwissen.de에서 온라인으로 제공됩니다.

두 인스턴스에서 동일한 메시지를 확인했으며, 두 인스턴드 모두 다른 OAuth 연결이 설정되어 있지 않습니다.

이 내용을 별도의 토픽으로 옮겼습니다… 인스턴스에서 /logs에 오류가 표시되는지 확인해 보셨나요? 등록 과정에서 내부적으로 무엇이 작동하지 않는지에 대한 추가적인 세부 정보가 그곳에 출력되어야 합니다.

기술적인 측면에서 좀 더 이해하고 싶습니다.

제 인스턴스에서는 외부 ID 제공자(Keycloak 26)와 함께 OIDC 인증을 사용하고 있습니다. Discourse ID는 매우 유사해 보이며, 단순히 Discourse.org가 호스팅하는 다른 IDP 서버일 뿐입니다. 그리고 오류 메시지(클라이언트 ID 및 시크릿 누락)도 전형적인 OAuth 플로우를 연상시킵니다. 이는 Discourse ID가 추가 IDP 인증 경로로 활성화된다는 뜻인가요? 제 사용 사례에 유용하려면 그렇게 되어야 하니까요. ???

이것 하나만, 하지만 비교적 규칙적으로 발생해서 이 주제와는 무관합니다.

Message (2 copies reported)

Sidekiq is consuming too much memory (using: 503.02M) for ‘rpg-foren-app’, restarting

Backtrace

/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.2.1/lib/active_support/broadcast_logger.rb:130:in block in warn' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.2.1/lib/active_support/broadcast_logger.rb:231:in block in dispatch’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.2.1/lib/active_support/broadcast_logger.rb:231:in each' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.2.1/lib/active_support/broadcast_logger.rb:231:in dispatch’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.2.1/lib/active_support/broadcast_logger.rb:130:in warn' /var/www/discourse/lib/demon/sidekiq.rb:59:in block in rss_memory_check’
/var/www/discourse/lib/demon/sidekiq.rb:53:in each' /var/www/discourse/lib/demon/sidekiq.rb:53:in rss_memory_check’
config/unicorn.conf.rb:132:in `block (2 levels) in reload

네, 맞습니다. Discourse ID는 다른 IDP입니다.

@Tealk sidekiq 오류는 무관합니다. 인스턴스의 커밋 해시를 공유해 주시겠어요?

네, 여기 있습니다: 3.5.1 (c96aeda334)

좋아요. 그렇다면 공개 액세스 워크플로우의 경우 IDP에서 클라이언트 ID가 필요하고, 비공개 액세스 워크플로우의 경우 클라이언트 ID 클라이언트 시크릿이 필요합니다. 또 다른 옵션은 Discourse ID를 로컬 IDP의 외부 아이덴티티 브로커로 추가하는 것입니다. 두 가지 방식 모두 조금 더 정보가 필요합니다 :wink:

네, 각 Discourse 인스턴스는 (내부적으로) 클라이언트 ID와 시크릿을 등록하고 설정합니다.

지금 당신의 인스턴스를 보니 http/https 오류가 발생합니다. ID가 작동하려면 사이트가 https로 제공되어야 합니다. 이것이 아마도 당신의 문제일 것입니다.

@Tealk 사이트가 https에서도 제대로 작동하는지 확인해 주세요.

무엇을 개선할 수 있을지 모르겠습니다:

https://rpg-foren.com, https://forum.fedimins.net

기능을 활성화하려고 할 때 콘솔 출력:

XHRPUT
https://rpg-foren.com/admin/site_settings/enable_discourse_connect
[HTTP/2 422  86ms]

	
PUT
	https://rpg-foren.com/admin/site_settings/enable_discourse_connect
Status
422
VersionHTTP/2
Transferred713 B (133 B size)
Referrer Policystrict-origin-when-cross-origin
DNS ResolutionSystem

    	
    content-type
    	application/json; charset=utf-8
    date
    	Mon, 20 Oct 2025 16:47:48 GMT
    referrer-policy
    	strict-origin-when-cross-origin
    server
    	nginx
    set-cookie
    	__profilin=p%3Dt%2Ca%3D2b952b1a24003bab45885b2f0abb5118; path=/; secure; HttpOnly; SameSite=Lax
    vary
    	Accept
    x-content-type-options
    	nosniff
    x-discourse-route
    	admin/site_settings/update
    x-discourse-username
    	Tealk
    X-Firefox-Spdy
    	h2
    x-frame-options
    	SAMEORIGIN
    x-permitted-cross-domain-policies
    	none
    x-request-id
    	88adc2fd-5819-43ba-a25c-c1535e6327b0
    x-runtime
    	0.062926
    x-xss-protection
    	0
    	
    Accept
    	*/*
    Accept-Encoding
    	gzip, deflate, br, zstd
    Accept-Language
    	en-US,en;q=0.5
    Connection
    	keep-alive
    Content-Length
    	29
    Content-Type
    	application/x-www-form-urlencoded; charset=UTF-8
    Cookie
    	_t=XuxyDzVA7lmCVSWxjtAAIW%2FwtC6o755siiDMJCwYXt82sKKXgBhQ3XT%2Bv4qY3Zq9Uhm8tgno959kheQuuslCmZmcqFYo1OeNPpJ9hzAkGBnYzzE1p2JB%2Fu8koGRGk21rMt4KkVE4Kid5aA3MwD8Dxdq3Yz9QYwOwmhsqLuFwzAeZVEIHq5M8Vc0YSCZBcWVDT%2FCfO4tXYar%2FmbTbcwLfM%2BnPuO%2F1C%2BOTMAGcn4sZD1vbO%2BRQn0c97DsQkQ%2B19L3csmzoo73ukkKJaIffKdYeAHFHyTIrhOjZbx0gCmHTxyoOUBEZdWRIBA%3D%3D--%2FGRmW%2FeNXPA2phGJ--x%2B6TQc3f4xd4701z6jk5xg%3D%3D; forced_color_mode=auto; _forum_session=juHIw0FO20X1VyNph%2BOFP4iLJHI9eejVQ6lnEKrnLj48q%2BAXWAo%2FRkjqzMqyaJHc3%2BMPW8asNhmYDYWD7I96tO8qLKUxBXEMl64Wa%2BBYFR5q0lWZL9ojHBnoJ18AQ%2BioiJIluwTfHdTikpLScj%2FLLhstWolVA5FCy7dly%2Fu5GNFIiqsfWDBZASUFClW4BKIS4AIX391GbuMCJT4yeftyGKCq%2FnGWYMSd1dPwVF4UK1YFFkA8vpWBCMSDAYivPvb4IYllod%2B3AirPX3KISYsN6p23qHwW%2Bb3KQ7F7ckuxjUSpivaLZAnw6txMlXlmYuQ6lrr6n6qY25ydFteHL064jh%2Fk%2FxBxtY6HkVyoJcth3h089lcAhagtnVSqQRfH8CAd3Ib1BRgOenJHIiRmLtDlyIk9Ixn3IR8l%2BfOwcW7T1yPAUA%3D%3D--DUchcA0kjxsQ2uDR--U3hXxkDHRaVSKCpqpJt%2FAw%3D%3D; __profilin=p%3Dt%2Ca%3D2b952b1a24003bab45885b2f0abb5118
    Discourse-Logged-In
    	true
    Discourse-Present
    	true
    Host
    	rpg-foren.com
    Origin
    	https://rpg-foren.com
    Referer
    	https://rpg-foren.com/admin/config/login-and-authentication
    Sec-Fetch-Dest
    	empty
    Sec-Fetch-Mode
    	cors
    Sec-Fetch-Site
    	same-origin
    TE
    	trailers
    User-Agent
    	Mozilla/5.0 (X11; Linux x86_64; rv:144.0) Gecko/20100101 Firefox/144.0
    X-CSRF-Token
    	06G-4_PiC_1EPpfr3_C8mWopZKLQrkKfaTVUzSF1fUfi22a5GAoo1CIkHNLF0RdelEI7ehqcj6NY2I8YGe9IfA
    X-Requested-With
    	XMLHttpRequest

순수 Docker 배포이며, 서버에는 프록시나 기타 설정이 없습니다.

Discourse ID는 이미 안정 버전(stable branch)을 사용하는 포럼에서 작동하나요? 8월 출시 후에 추가된 것으로 알고 있었습니다.

아, 맞습니다. @Tealk 님이 stable 채널을 사용 중이시라면, Discourse ID가 사용 가능해질 때까지 다음 안정판 릴리스를 기다려야 합니다.

또한 DiscourseConnect는 별개의 기능임을 유의해 주세요.

그렇다면 새 기능 페이지가 좀 혼란스럽네요. 특정 기능이 어떤 버전부터 포함되는지 추가할 수 있을까요?

좋은 지적입니다. 이제 What’s New 피드가 안정판(stable)이 아닌 인스턴스에 대해서만 이 항목을 포함하도록 업데이트했습니다(또한 latest에 Discourse ID를 활성화하는 커밋이 있는 경우에만 포함됩니다). What’s New 피드를 새로고침하시면, 안정판 인스턴스에서 이 항목이 더 이상 표시되지 않을 것입니다.

네, 이제 뉴스를 더 이상 볼 수 없어요

설정(Settings)에 이미 해당 항목이 있는데, 구현되기 전에 설정이 표시되어야 하나요?

enable_discourse_id 사이트 설정은 사용자에게 존재하지 않아야 합니다. (enable_discourse_connect와 혼동하지 마세요. 이는 별개의 설정입니다.)

아, 'connect’였네요. 검색 결과가 나를 오해하게 만들었군요.

이제 인스턴스를 살펴보니 http/https 오류가 발생하고 있습니다. ID가 작동하려면 사이트가 https로 구성되어야 합니다. 이것이 아마도 문제의 원인일 것입니다.

… 흥미롭지만, 그 이유를 이해하지 못하겠습니다. 아마도 개념적 차이가 있는 것 같습니다: Discourse 컨테이너는 SSL 가속기 뒤에 위치해 있으며, https를 통해서만 액세스할 수 있습니다. 하지만 이것은 “외부”에서 “내부”로 들어오는 표준 연결에 대한 것입니다. OAuth 사용 사례에서는 Discourse 컨테이너가 “내부”에서 “외부”에 있는 IDP로 연결을 시작합니다. Discourse ID로 이 연결을 구성하고 “https”로 강제할 수 있는 옵션을 찾지 못하겠습니다.

자체 IDP를 사용하여 OAuth 설정에 사용되는 고전적인 OIDC 설정과 비교해 보면, 그곳에는 “OpenID Connect discovery document” 설정이 있습니다.

https://....realms/[realm-name]/.well-known/openid-configuration

https 연결 누락으로 인한 문제를 피하려면 Discourse ID에도 이와 유사한 것이 필요하다고 생각합니다. P.S. 제 테스트 인스턴스는 3.6.0.beta2-latest 버전이며, Commits · discourse/discourse · GitHub 입니다.