개발 환경에 SSO를 구현하는 중인데 도움이 필요합니다

로컬 머신에 Discourse를 설치하고 SSO 로그인을 설정하려고 합니다. 로그인 버튼을 클릭하면 사용자를 리디렉션할 수 있지만, 리디렉션된 후에는 계속 오류가 발생합니다. 로깅을 활성화했는데 다음과 같은 메시지가 표시됩니다:
Nonce is incorrect, was generated in a different browser session, or has expired

사용 중인 Python 파일은 다음과 같습니다: Discourse-setup/main.py at main · kamleshjoshi8102/Discourse-setup · GitHub

또한 제 환경에서는 포트 4201로 실행되고 있으므로, 로그인 시 포트 4201으로 리디렉션하도록 설정했습니다.

이 오류를 트리거하는 메서드는 다음과 같습니다:

  def nonce_valid?
    if SiteSetting.discourse_connect_csrf_protection
      nonce && @secure_session[nonce_key].present?
    else
      nonce && Discourse.cache.read(nonce_key).present?
    end
  end

이 메서드는 nonce가 사용자를 Discourse로 다시 리디렉션하는 세션과 동일한 세션에 대해 Discourse에 의해 생성되었는지 확인합니다.

discourse_connect_csrf_protection 사이트 설정을 false로 설정해 보실 수 있습니다. 기본값은 true입니다. 이는 숨겨진 사이트 설정이므로 Rails 콘솔에서만 비활성화할 수 있습니다.

활성화된 경우, discourse_connect_csrf_protection 설정은 SSO 인증 프로세스 전체가 브라우저 리디렉션을 통해 이루어지도록 보장합니다. session/sso에 백그라운드 요청을 보내어 인증 프로세스를 시작하는 경우, 이 설정을 비활성화해야 합니다. 자세한 내용은 여기에서 확인하세요: DiscourseConnect flow no longer functions - #5 by david.