Em uma instância do Discourse recém-configurada, o SAML falha devido à Política de Segurança de Conteúdo (Content-Security-Policy) padrão, que nega o script que envia o formulário…
Hospedamos muitos clientes que estão usando o plugin SAML com sucesso junto ao CSP. Você pode compartilhar o erro que está vendo no console do navegador?
Toda a nossa hospedagem utiliza CDNs, então minha suposição é que a regra do CSP não está funcionando para pessoas sem CDNs ![]()
Sim, desculpe. Eu planejava fazer isso, mas não consigo reproduzir a mensagem de erro — embora o erro persista.
Agora, só recebo erros de “conteúdo misto” no favicon e no ícone da Apple. As imagens foram carregadas antes de a opção force_https ser marcada, mas acredito que essa configuração deve cuidar da origem de todos os ícones… Será que é um bug?
Estou tentando reproduzir o erro original que obtive, mas até agora sem sucesso. O erro exibido na tela é: “Desculpe, ocorreu um erro ao autorizar sua conta. Tente novamente.” Acredito que seja um ticket inválido, embora todas as configurações correspondam a uma instância funcional existente, tanto no lado do Discourse quanto no do Keycloak. Estranho.
Sim, desculpe. Eu planejava fazer isso, mas não consigo reproduzir a mensagem de erro — embora o erro persista.
Ok, encontrei o erro. Acredito que ele venha da configuração:
- É uma instância multissítio com ps.zoethical.org como o sítio ‘principal’, para o qual o SAML foi configurado originalmente.
- A instância forum.zoonklopper.be tem um botão SAML aparecendo, mas o escopo está definido para ps.zoethical.org.
(saml) Falha na autenticação! invalid_ticket: OneLogin::RubySaml::ValidationError, https://ps.zoethical.org não é um público válido para esta Resposta - Públicos válidos: https://forum.zonnklopper.be
Se eu adicionar o público ps.zoethical.org, recebo outro erro:
(saml) Falha na autenticação! invalid_ticket: OneLogin::RubySaml::ValidationError, a resposta foi recebida em https://forum.zonnklopper.be/auth/saml/callback em vez de https://ps.zoethical.org/auth/saml/callback
O plugin SAML não é compatível com multisite.
Sim, é exatamente isso que acabei de perceber. É muito lamentável. ![]()
Então, na verdade, a incompatibilidade do plugin significa que:
- ele funcionará apenas no primeiro site de uma instalação multisite (ou naquele para o qual foi configurado via
DISCOURSE_HOSTNAME); - o botão aparecerá na interface de login de todas as outras instâncias;
- mas esses botões falharão sem uma solução clara.
Como não há um tópico dedicado em #plugin para discourse-saml, sugiro criar um e mencionar essa ressalva na primeira postagem. Tenho certeza de que é possível consolidar informações a partir dos mais de 50 tópicos que mencionam SAML. Se eu soubesse disso antes, teria configurado meus serviços de forma diferente.
(A propósito, o erro original de CSP provavelmente se deve ao fato de que o iframe tenta carregar o site original em vez do atual.)
Ocultar o botão SAML em multisite
Esta é uma correção rápida para quem ativou o plugin SAML em multisite. ![]()
- Acesse Admin > Temas e clique em “instalar novo”;
- Crie um novo componente (com o nome: “Ocultar Botão SAML”);
- Adicione o CSS:
#login-buttons .btn.btn-social.saml { display: none; /* plugin incompatível com multisite */ } - Aplique o componente a todos os temas.
Agora, o botão SAML (que não funciona nesta instância) permanecerá oculto.
Este tópico foi automaticamente fechado após 3 dias. Novas respostas não são mais permitidas.