localhost에서 Discourse를 ID 제공자로 사용할 수 없음

로컬에 Discourse를 설정했습니다. 이제 Discourse를 ID 제공자(Identity Provider)로 사용하려고 합니다. 아래 가이드를 따랐습니다.

하지만 오류가 발생합니다.

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

참고: 요청을 보내는 클라이언트는 localhost에 있으며, Discourse 서버도 localhost에 있습니다.
온라인에서 비슷한 질문을 찾아보았지만 도움을 찾지 못했습니다. 참고용으로 Node.js 코드도 함께 올립니다.

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}`)
})

왜 작동하지 않는지 알아내도록 도와주실 수 있을까요? 감사합니다.

로컬 호스트에서는 작동하지 않는 HTTPS가 필요하다고 꽤 확신합니다.

@pfaffman 로컬호스트에서는 정상적으로 작동합니다. 결국 제 실수였습니다. 하지만 이제 discourse 페이지로 리다이렉트된 후 사용자 이름과 비밀번호를 입력하고 로그인 버튼을 클릭해도 제 웹사이트로 다시 리다이렉트되지 않는 문제가 생겼습니다. 여기서 비슷한 게시글을 읽었습니다: Discourse doesn't redirect to return_sso_url after user logs in on private site - #4 by simon 해당 문제는 소셜 로그인의 경우 해결된 것 같지만, 사용자 이름/비밀번호 인증에는 적용되지 않는 것 같습니다. 이 부분에 대해 도움을 주실 수 있을까요? 감사합니다