Discrepancia en la codificación del hash de carga útil de DiscourseConnect

Aún no he probado esto en mi sitio web; estoy intentando deducir los pasos manualmente antes de hacerlo.

Según la publicación del foro mencionada anteriormente:

Dadas las siguientes configuraciones:
Dominio de Discourse: http://discuss.example.com
URL de DiscourseConnect: http://www.example.com/discourse/sso
Secreto de DiscourseConnect: d836444a9e4084d5b224a60c208dce14

Intento de inicio de sesión del usuario

  • Se genera un nonce: cb68251eefb5211e58c00ff1395f0c0b
  • Se genera la carga útil sin procesar: nonce=cb68251eefb5211e58c00ff1395f0c0b
  • La carga útil se codifica en Base64: bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGI=\n
  • La carga útil se codifica en URL: bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGI%3D%0A
  • Se genera un HMAC-SHA256 sobre la carga útil codificada en Base64: 2828aa29899722b35a2f191d34ef9b3ce695e0e6eeec47deb46d588d70c7cb56

Aquí es donde obtengo una respuesta diferente. Cuando usé el codificador HMAC que sugeriste con la carga útil en Base64 sin codificar en URL, obtuve d26d5adf900de48890a0c3dcdeec108acd91b44a4b76c90c59955a5ba7b957f7 en lugar de 2828aa29899722b35a2f191d34ef9b3ce695e0e6eeec47deb46d588d70c7cb56. Cuando lo usé con la carga útil codificada en URL, obtuve 46e749cd26dcabc84eed323ff31f830da674dc87c77a2fcb1b296f76402ea900.

Sin embargo, más adelante en el tutorial, durante la creación de la nueva carga útil:

Se genera la carga útil sin firmar:
nonce=cb68251eefb5211e58c00ff1395f0c0b&name=sam&username=samsam&email=test%40test.com&external_id=hello123&require_activation=true
(el orden no importa, los valores están codificados en URL)

La carga útil se codifica en Base64:
bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGImbmFtZT1zYW0mdXNlcm5hbWU9c2Ftc2FtJmVtYWlsPXRlc3QlNDB0ZXN0LmNvbSZleHRlcm5hbF9pZD1oZWxsbzEyMyZyZXF1aXJlX2FjdGl2YXRpb249dHJ1ZQ==

La carga útil se codifica en URL:
bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGImbmFtZT1zYW0mdXNlcm5hbWU9c2Ftc2FtJmVtYWlsPXRlc3QlNDB0ZXN0LmNvbSZleHRlcm5hbF9pZD1oZWxsbzEyMyZyZXF1aXJlX2FjdGl2YXRpb249dHJ1ZQ%3D%3D

La carga útil codificada en Base64 se firma:
3d7e5ac755a87ae3ccf90272644ed2207984db03cf020377c8b92ff51be3abc3

Esta firma se genera a partir de la hash de la carga útil en Base64 sin codificar en URL, por eso tengo cierta duda sobre por qué no funciona con la primera carga útil.