아직 내 웹사이트에서 이 내용을 테스트하지 않았습니다. 테스트하기 전에 수동으로 단계를 파악해 보고 있습니다.
앞서 언급된 포럼 게시글에서:
다음 설정이 주어졌을 때:
Discourse 도메인:http://discuss.example.com
DiscourseConnect URL:http://www.example.com/discourse/sso
DiscourseConnect 시크릿:d836444a9e4084d5b224a60c208dce14
사용자가 로그인 시도
- Nonce 생성:
cb68251eefb5211e58c00ff1395f0c0b- 원시 페이로드(Raw payload) 생성:
nonce=cb68251eefb5211e58c00ff1395f0c0b- 페이로드 Base64 인코딩:
bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGI=\n- 페이로드 URL 인코딩:
bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGI%3D%0A- Base64 인코딩된 페이로드에 대해 HMAC-SHA256 생성:
2828aa29899722b35a2f191d34ef9b3ce695e0e6eeec47deb46d588d70c7cb56
여기서 제가 다른 결과를 얻고 있습니다. 제안해 주신 HMAC 인코더를 Base64 인코딩되었으나 URL 인코딩되지 않은 페이로드에 적용하면 2828aa29899722b35a2f191d34ef9b3ce695e0e6eeec47deb46d588d70c7cb56 대신 d26d5adf900de48890a0c3dcdeec108acd91b44a4b76c90c59955a5ba7b957f7가 나오고, URL 인코딩된 페이로드에 적용하면 46e749cd26dcabc84eed323ff31f830da674dc87c77a2fcb1b296f76402ea900가 나옵니다.
그러나 튜토리얼 후반부, 새 페이로드 생성 과정에서:
서명되지 않은 페이로드 생성:
nonce=cb68251eefb5211e58c00ff1395f0c0b&name=sam&username=samsam&email=test%40test.com&external_id=hello123&require_activation=true
(순서는 중요하지 않으며, 값은 URL 인코딩됨)
페이로드 Base64 인코딩
bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGImbmFtZT1zYW0mdXNlcm5hbWU9c2Ftc2FtJmVtYWlsPXRlc3QlNDB0ZXN0LmNvbSZleHRlcm5hbF9pZD1oZWxsbzEyMyZyZXF1aXJlX2FjdGl2YXRpb249dHJ1ZQ==
페이로드 URL 인코딩
bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGImbmFtZT1zYW0mdXNlcm5hbWU9c2Ftc2FtJmVtYWlsPXRlc3QlNDB0ZXN0LmNvbSZleHRlcm5hbF9pZD1oZWxsbzEyMyZyZXF1aXJlX2FjdGl2YXRpb249dHJ1ZQ%3D%3D
Base64 인코딩된 페이로드 서명
3d7e5ac755a87ae3ccf90272644ed2207984db03cf020377c8b92ff51be3abc3
이 서명은 Base64 인코딩되었으나 URL 인코딩되지 않은 페이로드를 해시하여 생성되므로, 첫 번째 페이로드에서는 왜 작동하지 않는지 조금 혼란스럽습니다.