Problemas de Redirecionamento SSO

Estou integrando o Discourse com o WordPress através do plugin WP Discourse e usando o WordPress como provedor do Discourse Connect. No entanto, estou encontrando um problema onde um usuário não autenticado que visita a instância do Discourse e clica em qualquer botão que exija login fica preso em um loop de redirecionamento infinito.

O comportamento desejado é: usuário clica no botão de login do Discourse → usuário é redirecionado para a página de login do WordPress → usuário autentica e é redirecionado de volta para a página do Discourse em que estava antes. Atualmente, não há problemas se um usuário estiver autenticado e visitar a instância do Discourse após ser autenticado. Este erro ocorre quando um usuário não autenticado visita a instância do Discourse primeiro.

O comportamento atual é: usuário clica em um botão de login do Discourse usuário é direcionado para https://[instância-do-discourse]/session/sso?return_path=%2Ft%2F[página-do-discourse-em-que-o-usuário-estava-antes]%2F16 usuário é direcionado para https://[site-do-wordpress]/?sso=[token-SSO]%3D%3D&sig=[token-de-assinatura] usuário é direcionado para https://[site-do-wordpress]/?sso=[token-SSO]%3D%3D&sig=[token-de-assinatura]&redirect_to=%2F%3Fsso%[token-SSO]%253D%253D%26sig%3D[token-de-assinatura] e o ciclo continua recursivamente até que o navegador exiba um erro de “muitos redirecionamentos”

Não consegui encontrar um tópico com uma solução para isso, o mais próximo é

mas temos SSL habilitado em todos os lugares e este problema ocorre em todos os navegadores. Alguma sugestão sobre como corrigir este problema?

O Chrome 97 foi lançado com um bug relacionado ao tratamento de cookies durante redirecionamentos, que é conhecido por quebrar o DiscourseConnect em algumas circunstâncias. Enquanto esperamos que o Google lance uma correção, adicionamos uma solução alternativa no Discourse. Atualizar seu site Discourse para a versão mais recente deve resolver o problema. Você pode tentar e nos informar se funcionou?

(A solução alternativa foi adicionada neste commit)

3 curtidas

Obrigado pela resposta, acabei de verificar para ter certeza de que estamos na versão mais recente, mas infelizmente o erro ainda está lá. Estamos hospedando nosso fórum com o Discourse, então ele deve estar se atualizando regularmente. O erro ainda é o mesmo de antes, há algo mais que eu deveria tentar? Existem configurações dentro da hospedagem do Discourse que podem estar causando isso?

1 curtida

Olá @dbwhite, você poderia, por favor:

  1. Ativar os “Logs Detalhados do DiscourseConnect” nas configurações do DiscourseConnect do WP Discourse
  2. Recriar o problema
  3. Ir para “Logs” no WP Discourse e “Baixá-los”

Em seguida, me envie os logs por mensagem privada e eu darei uma olhada mais de perto no que está acontecendo. Observe que os logs não contêm nenhuma informação de identificação pessoal ou segredos.

2 curtidas

@angus, @dbwhite Uma possível causa do problema pode ser se o site WordPress estiver usando o Woocommerce. O Woocommerce adiciona um redirecionamento de login que pode causar problemas com o DiscourseConnect. Esses redirecionamentos podem ser substituídos instalando e ativando GitHub - scossar/wp-discourse-woocommerce-support: Integrates the wp-discourse plugin with WooCommerce, ou adicionando os trechos de código fornecidos no readme desse plugin ao tema do site.

O problema de redirecionamento descrito aqui parece semelhante ao que vi com outros sites Woocommerce no passado. Nesses casos, foi resolvido instalando o plugin WordPress que linkei.

Se esta for a causa do problema, eu me pergunto se deveríamos considerar adicionar suporte ao Woocommerce diretamente ao plugin WP Discourse.

4 curtidas

Isso seria extremamente útil.

Eu não estou tendo o problema exato que o OP descreveu, mas estou encontrando uma dificuldade com o redirecionamento de nossos usuários de volta para onde eles estavam, nos fóruns do Discourse, após o login :disappointed_face:

A instalação e ativação do plugin WP Discourse WooCommerce Support resolve o problema para você?

Apenas queria postar uma atualização aqui, descobriu-se que um dos plugins que estávamos usando estava interferindo no valor de retorno da função wp_login_url() do Wordpress. Assim que esse plugin foi removido, tudo funcionou como esperado!

1 curtida

Uma postagem foi dividida em um novo tópico: Erro no Rails ao usar DiscourseConnect e Wordpress