Discourse-saml não é compatível com multisite

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 :thinking:

1 curtida

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:

  1. É uma instância multissítio com ps.zoethical.org como o sítio ‘principal’, para o qual o SAML foi configurado originalmente.
  2. 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.

1 curtida

Sim, é exatamente isso que acabei de perceber. É muito lamentável. :frowning:

Então, na verdade, a incompatibilidade do plugin significa que:

  1. ele funcionará apenas no primeiro site de uma instalação multisite (ou naquele para o qual foi configurado via DISCOURSE_HOSTNAME);
  2. o botão aparecerá na interface de login de todas as outras instâncias;
  3. 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. :slight_smile:

  1. Acesse Admin > Temas e clique em “instalar novo”;
  2. Crie um novo componente (com o nome: “Ocultar Botão SAML”);
  3. Adicione o CSS:
    #login-buttons .btn.btn-social.saml {
        display: none; /* plugin incompatível com multisite */
    }
    
  4. 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.