로컬에 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}`)
})
왜 작동하지 않는지 알아내도록 도와주실 수 있을까요? 감사합니다.