Estou tentando usar o WordPress como provedor de SSO para o Discourse por meio do plugin. Quando cliquei em ‘Entrar’ no site do fórum, fui redirecionado para o meu site com um parâmetro de URL de SSO anexado, mas a página aparece em branco. O plugin deveria ler esse parâmetro de URL e executar uma ação que está falhando? Devo redirecioná-lo para um caminho específico no site? Não tenho certeza de qual é o comportamento esperado, então não sei como solucionar o problema. Não estou vendo nenhum erro nos logs de erro do meu servidor.
Seu site usa a página de login padrão do WordPress em /login.php? Caso contrário, talvez seja necessário adicionar um caminho à opção ‘Caminho para sua Página de Login’ (encontrada na aba Provedor SSO do WP Discourse).
Você tem o Woocommerce instalado no seu site?
Ele não usa o padrão e eu o especifiquei no campo. Ainda sem sorte, apenas uma página em branco.
E não, sem WooCommerce.
Então, acho que talvez minha compreensão de como isso funcionaria esteja errada ou eu precise de alguma alteração adicional. Nos testes, percebi que, se já estou logado no site, ele funciona como esperado. Minha expectativa, no entanto, era que, se eu não estivesse logado no site, ele iniciasse meu processo de login, mas isso não parece estar acontecendo. Com base nisso, algumas perguntas de acompanhamento:
- O redirecionamento de login do Discourse deve enviar o usuário para /?sso=abcd1235… no meu site ou para /sign-in/?sso=abcd1235… no meu site (incluindo meu caminho de login personalizado)? Atualmente, está usando /.
- A expectativa é que meu código de login personalizado mantenha os parâmetros de URL do SSO e os inclua no redirecionamento de volta ao meu site após o login, para então fazer a conexão SSO acontecer?
E eu acabei de perceber que ele usa o nome de usuário do WordPress para o nome de usuário do Discourse. No nosso caso, precisaríamos usar o apelido do WordPress, pois o nome de usuário é um valor hash baseado no provedor de autenticação de terceiros. Então, pode ser um beco sem saída.
Sim. Após clicar no botão ‘login’ no Discourse, os usuários serão redirecionados para a URL que você configurou como sso url no Discourse. Isso deve ser a URL inicial do seu site.
Se você ainda não estiver logado no WordPress, o código SSO irá redirecioná-lo para a URL de login do seu site. Por padrão, essa URL é /wp-login.php. Ela pode ser alterada configurando a opção ‘Caminho para sua página de login’. Após o login, os usuários devem ser redirecionados de volta para a URL inicial do seu site, mantendo os parâmetros de consulta enviados pelo Discourse.
Se isso não estiver funcionando para você quando você ainda não estiver logado no WordPress, o problema pode ser que você tenha um redirecionamento de login configurado no seu site que está sobrescrevendo o redirecionamento definido pelo código SSO do WP Discourse. Outra possibilidade é que os parâmetros de consulta definidos pelo Discourse estejam sendo removidos pelo código de login do seu site.
Você pode usar o filtro wpdc_sso_params para substituir o nome de usuário definido pelo plugin:
add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
$params['username'] = $user->user_nicename;
return $params;
}
Para detalhes sobre o que está acontecendo, consulte wp-discourse/lib/sso-provider/discourse-sso.php at main · discourse/wp-discourse · GitHub.
Eu estava apenas olhando o código do plugin e vi onde poderia alterar isso. Usar uma sobrescrita é uma abordagem muito melhor, obrigado! Vou verificar meu código de login personalizado e ver se/onde ele pode estar interferindo no processo. Isso é muito útil, obrigado novamente.