CSRFTokenVerifier::InvalidCSRFToken ao iniciar login SAML no Discourse 2026.6

CSRFTokenVerifier::InvalidCSRFToken ao iniciar login SAML no Discourse 2026.6
Olá,

Estou tentando configurar a autenticação SAML com ADFS em uma instalação nova do Discourse.

Ambiente

  • Versão do Discourse: 2026.6 (Rails 8.0.5)
  • Plugin discourse-saml
  • Commit do plugin:
7d0fe944bf33588e6813bffaef5eb8f34e37d039
  • HTTPS habilitado
  • Proxy reverso / Balanceador de carga na frente do Discourse
  • force_https = true

Configuração SAML

O endpoint de metadados funciona corretamente:

https://<hostname>/auth/saml/metadata

Os metadados contêm:

  • EntityID
  • URL do ACS
  • URL do SLO

A equipe do ADFS importou os metadados com sucesso.

Problema

Ao clicar em Login com SAML, o Discourse nunca redireciona para o ADFS.

Em vez disso, retorna imediatamente:

Desculpe, a autorização expirou ou você mudou de navegador.

Log do 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"

Itens já verificados

  • HTTPS funciona
  • Discourse.base_url = https://hostname
  • force_https = true
  • Cookie de sessão (_forum_session) existe
  • authenticity_token está incluído no POST /auth/saml
  • Plugin discourse-saml é a branch main mais recente
  • Endpoint de metadados funciona
  • Metadados do ADFS foram recriados a partir dos metadados do SP

Solicitação do navegador

O POST /auth/saml contém:

  • Cookie _forum_session
  • authenticity_token

No entanto, a solicitação falha imediatamente com:

CSRFTokenVerifier::InvalidCSRFToken

Nunca chega ao ADFS.

Informações adicionais

O DevTools do navegador mostra:

x-csrf-token: undefined

Isso poderia ser um problema de CSRF do Rails 8 / OmniAuth, ou há outra configuração necessária para o discourse-saml em versões recentes do Discourse?

Qualquer sugestão seria apreciada.


Discourse.base_url

https://testvknowyeni.vakifbank.intra

SiteSetting.force_https

true

SiteSetting.same_site_cookies

Lax