force_https가 켜져 있어도 DiscourseConnect가 HTTP 리다이렉트를 생성합니다

저희 호스팅 플랫폼에서는 이렇게 처리합니다. X-Forwarded-Proto를 설정하여 하위 nginx+Discourse가 소비하도록 하는 로드 밸런서 레이어가 있습니다.

이것이 작동하도록 하기 위해 추가적인 조작은 필요하지 않습니다 - 여기서 무엇이 잘못되고 있는지 정확히 알 수 없습니다.

실제로 그렇게 동작합니다:

  def self.generate_sso(return_path = "/", secure_session:)
    sso = new(secure_session: secure_session)
    sso.nonce = SecureRandom.hex
    sso.register_nonce(return_path)
    sso.return_sso_url = Discourse.base_url + "/session/sso_login"
    sso
  end

그리고 base_url은 다음에서 가져옵니다:

  def self.base_protocol
    SiteSetting.force_https? ? "https" : "http"
  end

  def self.base_url_no_prefix
    "#{base_protocol}://#{current_hostname_with_port}"
  end

  def self.base_url
    base_url_no_prefix + base_path
  end