SSO parou de funcionar 🤔

E aĂ­, pessoal!

Estou processando a autenticação SSO no meu backend PHP. Começo enviando uma requisição curl para minha URL SSO (Communauté et formation pour entrepreneurs) para obter o Payload SSO e o SIG, e depois procedo para criar meu próprio payload e gerar a URL de redirecionamento correta.

É aqui que as coisas ficam estranhas…

Se eu acessar Communauté et formation pour entrepreneurs no meu navegador, copiar e colar o SSO e o SIG no meu script, a URL de redirecionamento final funcionará.

Se eu obtiver isso via CURL, o redirecionamento final mostrará uma mensagem de erro e terei isso no meu log:

Verbose SSO log: Nonce has already expired

Estou sem ideias… O problema parece ter surgido do nada e agora meus usuários não conseguem fazer login.

O Discourse mudou algo para impedir que bots façam ping em /session/sso?

Sim, o nonce agora está vinculado à sessão do usuário para o qual foi gerado. Parece que o problema que você está enfrentando está relacionado a isso:

Em vez de fazer uma solicitação curl, a expectativa é que o usuário que será autenticado acesse /session/sso, seja clicando no botão de Entrar do site ou sendo redirecionado para /session/sso a partir do seu aplicativo. Ao fazer isso, eles serão redirecionados de volta para o seu aplicativo pelo Discourse. O nonce encontrado nesse payload será válido.

Foi isso que precisei fazer para corrigir o problema, mas isso quebra meu processo de login assĂ­ncrono. :frowning: Eu realmente gostava de fazer as coisas assim.

Também tentei fazer isso usando o Axios. Eu esperava que funcionasse, já que a solicitação vem do cliente. Mas parece que não está funcionando também.

Se vocĂŞ pensar em uma maneira de implementar um processo de login assĂ­ncrono, ficarei feliz com qualquer dica! De qualquer forma, obrigado pela resposta, muito apreciado.