Discourse como provedor de identidade não funcionando em localhost

Configurei o Discourse localmente. Agora estou tentando usar o Discourse como provedor de identidade. Segui este guia

mas estou recebendo um erro

GET http://localhost:3000/session/sso_provider?sso=bm9uY2U9MWc3NlQyaHRVZTZTYzJENjVEbzlzUT09JnJldHVybl9zc29fdXJsPWh0dHA6Ly9sb2NhbGhvc3Q6ODA4MS9yZWRpcmVjdA%3D%3D&sig=abcdb4a453080b7bac871d1d8d660bc731cfbc2a26fc6013f19a848c0018461c 422 (Unprocessable Entity)

Observação: meu cliente que faz a solicitação está em localhost e o servidor Discourse também está em localhost.
Tentei procurar por perguntas semelhantes online, mas não encontrei ajuda. Também estou postando meu código Node.js como referência

app.get('/login', (req, res) => {
  let nonce = crypto.randomBytes(16).toString('base64');
  const payload = `nonce=${nonce}&return_sso_url=http://localhost:8081/redirect`
  const base64 = Buffer.from(payload).toString('base64')
  const URL_ENCODED_PAYLOAD = encodeURIComponent(base64)
  let hmac = crypto.createHmac('sha256', 'myrandomstring')
  hmac.update(URL_ENCODED_PAYLOAD)
  let HEX_SIGNATURE = hmac.digest('hex').toLowerCase()
  res.redirect(`http://localhost:3000/session/sso_provider?sso=${URL_ENCODED_PAYLOAD}&sig=${HEX_SIGNATURE}`)
})

Alguém pode me ajudar a descobrir por que não está funcionando? Obrigado.

Tenho quase certeza de que isso requer https, o que não funciona no localhost.

@pfaffman Funciona no localhost. Acontece que foi um erro meu. Mas agora estou enfrentando um problema: quando sou redirecionado para a página do Discourse, insiro meu nome de usuário e senha e clico em login, mas ele não me redireciona de volta para o meu site. Li um post semelhante aqui Discourse doesn't redirect to return_sso_url after user logs in on private site - #4 by simon, mas eles corrigiram esse problema para logins sociais (acho que não para autenticação de nome de usuário e senha). Você pode me ajudar com isso? Obrigado.

1 curtida