DiscourseConnect : problème de correspondance de hachage de charge utile

Je n’ai pas encore testé cela sur mon site web ; j’essaie de déterminer les étapes à la main avant de le faire.

D’après le post du forum mentionné précédemment :

Étant donné les paramètres suivants :
Domaine Discourse : http://discuss.example.com
URL DiscourseConnect : http://www.example.com/discourse/sso
Secret DiscourseConnect : d836444a9e4084d5b224a60c208dce14

Tentative de connexion de l’utilisateur

  • Un nonce est généré : cb68251eefb5211e58c00ff1395f0c0b
  • La charge utile brute est générée : nonce=cb68251eefb5211e58c00ff1395f0c0b
  • La charge utile est encodée en Base64 : bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGI=\n
  • La charge utile est encodée en URL : bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGI%3D%0A
  • Un HMAC-SHA256 est généré sur la charge utile encodée en Base64 : 2828aa29899722b35a2f191d34ef9b3ce695e0e6eeec47deb46d588d70c7cb56

C’est là que j’obtiens une réponse différente. Lorsque j’ai utilisé l’encodeur HMAC que vous avez suggéré sur la charge utile en Base64 non encodée en URL, j’ai obtenu d26d5adf900de48890a0c3dcdeec108acd91b44a4b76c90c59955a5ba7b957f7 au lieu de 2828aa29899722b35a2f191d34ef9b3ce695e0e6eeec47deb46d588d70c7cb56. Lorsque je l’utilise sur la charge utile encodée en URL, j’obtiens 46e749cd26dcabc84eed323ff31f830da674dc87c77a2fcb1b296f76402ea900.

Cependant, plus loin dans le tutoriel, lors de la création de la nouvelle charge utile :

Une charge utile non signée est générée :
nonce=cb68251eefb5211e58c00ff1395f0c0b&name=sam&username=samsam&email=test%40test.com&external_id=hello123&require_activation=true
(l’ordre n’a pas d’importance, les valeurs sont encodées en URL)

La charge utile est encodée en Base64 :
bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGImbmFtZT1zYW0mdXNlcm5hbWU9c2Ftc2FtJmVtYWlsPXRlc3QlNDB0ZXN0LmNvbSZleHRlcm5hbF9pZD1oZWxsbzEyMyZyZXF1aXJlX2FjdGl2YXRpb249dHJ1ZQ==

La charge utile est encodée en URL :
bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGImbmFtZT1zYW0mdXNlcm5hbWU9c2Ftc2FtJmVtYWlsPXRlc3QlNDB0ZXN0LmNvbSZleHRlcm5hbF9pZD1oZWxsbzEyMyZyZXF1aXJlX2FjdGl2YXRpb249dHJ1ZQ%3D%3D

La charge utile encodée en Base64 est signée :
3d7e5ac755a87ae3ccf90272644ed2207984db03cf020377c8b92ff51be3abc3

Cette signature est générée en hachant la charge utile encodée en Base64 non encodée en URL, c’est pourquoi je suis un peu incertain quant à la raison pour laquelle cela ne fonctionne pas sur la première charge utile.