Discourse 2026.6에서 SAML 로그인을 시작할 때 CSRFTokenVerifier::InvalidCSRFToken 오류 발생
안녕하세요,
새로운 Discourse 설치 환경에서 ADFS와 SAML 인증을 구성하려고 하고 있습니다.
환경
- Discourse 버전: 2026.6 (Rails 8.0.5)
- discourse-saml 플러그인
- 플러그인 커밋:
7d0fe944bf33588e6813bffaef5eb8f34e37d039
- HTTPS 활성화
- Discourse 앞에 리버스 프록시 / 로드 밸런서 구성
- force_https = true
SAML 구성
메타데이터 엔드포인트가 올바르게 작동합니다:
https://<hostname>/auth/saml/metadata
메타데이터에는 다음이 포함되어 있습니다:
- EntityID
- ACS URL
- SLO URL
ADFS 팀이 메타데이터를 성공적으로 가져왔습니다.
문제
SAML로 로그인 버튼을 클릭하면 Discourse가 ADFS로 리디렉션되지 않습니다.
대신 즉시 다음 오류가 반환됩니다:
Sorry, the authorization timed out, or you have switched browsers.
Rails 로그
Started GET "/session/csrf"
Completed 200 OK
Started POST "/auth/saml"
(saml) Authentication failure!
CSRFTokenVerifier::InvalidCSRFToken
Started GET "/auth/failure?message=csrf_detected&strategy=saml"
이미 확인한 사항
- HTTPS 작동 여부
- Discourse.base_url = https://hostname
- force_https = true
- 세션 쿠키(_forum_session) 존재 여부
- POST /auth/saml에 authenticity_token 포함 여부
- discourse-saml 플러그인이 최신 main 브랜치인지 여부
- 메타데이터 엔드포인트 작동 여부
- SP 메타데이터에서 ADFS 메타데이터가 재생성되었는지 여부
브라우저 요청
POST /auth/saml에는 다음이 포함되어 있습니다:
- _forum_session 쿠키
- authenticity_token
그러나 요청은 즉시 실패하며:
CSRFTokenVerifier::InvalidCSRFToken
오류를 반환합니다.
ADFS에 도달하지조차 않습니다.
추가 정보
브라우저 DevTools에서 다음이 표시됩니다:
x-csrf-token: undefined
이것이 Rails 8 / OmniAuth CSRF 문제일 수 있으며, 최신 Discourse 버전에서 discourse-saml에 대한 추가 구성이 필요한 것일까요?
제안이 있으시면 감사하겠습니다.
Discourse.base_url
https://testvknowyeni.vakifbank.intra
SiteSetting.force_https
true
SiteSetting.same_site_cookies
Lax