Temos uma instância do Discourse configurada com SSO (usando SAML/Shibboleth) e a configurei para permitir a incorporação de conteúdo em outro subdomínio que também utiliza o mesmo SSO.
Aqui está o problema que estou enfrentando:
- O usuário acessa uma página no subdomínio X, que incorpora um tópico do Discourse, hospedado no subdomínio Y.
- O usuário é redirecionado para o subdomínio Z para fazer login via SSO. Em seguida, é redirecionado de volta para o subdomínio X.
- A página no subdomínio X carrega o arquivo JavaScript de incorporação, que cria um iframe tentando carregar o tópico do fórum. No entanto, o Discourse (subdomínio Y) redireciona o iframe para o subdomínio Z para o SSO e, como o usuário já está logado, redireciona de volta para a URL de incorporação do Discourse. Isso resulta em um erro 400 “Erro ao incorporar”, pois a URL de referência agora vem do subdomínio Z (o subdomínio do SSO), em vez do subdomínio X (o domínio aprovado/permitido para incorporação). O Discourse retorna a mensagem “A referência não foi enviada ou não corresponde a nenhum dos seguintes hosts”.
- Ao atualizar a página, tudo funciona perfeitamente (ou seja, o tópico do fórum é carregado com sucesso), presumivelmente porque o navegador agora possui um cookie de sessão válido, o que elimina a necessidade de redirecionar para o subdomínio do SSO.
Há algo que eu possa fazer para corrigir isso adequadamente? No momento, tenho uma solução alternativa terrível configurada, que primeiro tenta carregar o tópico do fórum em um iframe oculto e, em seguida, aguarda 1 segundo antes de realmente carregar o tópico na página real visível para o usuário.
Qualquer ajuda ou sugestão será muito apreciada!