DiscourseConnect hash de payload com codificação incorreta

Ainda não testei isso no meu site; estou tentando entender os passos manualmente antes de fazê-lo.

Da postagem no fórum mencionada anteriormente:

Dadas as seguintes configurações:
Domínio do Discourse: http://discuss.example.com
URL do DiscourseConnect: http://www.example.com/discourse/sso
Segredo do DiscourseConnect: d836444a9e4084d5b224a60c208dce14

Tentativa de login do usuário

  • Um nonce é gerado: cb68251eefb5211e58c00ff1395f0c0b
  • A carga bruta (raw payload) é gerada: nonce=cb68251eefb5211e58c00ff1395f0c0b
  • A carga é codificada em Base64: bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGI=\n
  • A carga é codificada em URL: bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGI%3D%0A
  • Um HMAC-SHA256 é gerado na carga codificada em Base64: 2828aa29899722b35a2f191d34ef9b3ce695e0e6eeec47deb46d588d70c7cb56

É aqui que obtenho um resultado diferente. Quando usei o codificador HMAC que você sugeriu na carga em Base64 não codificada em URL, obtive d26d5adf900de48890a0c3dcdeec108acd91b44a4b76c90c59955a5ba7b957f7 em vez de 2828aa29899722b35a2f191d34ef9b3ce695e0e6eeec47deb46d588d70c7cb56. Quando o uso na carga codificada em URL, obtenho 46e749cd26dcabc84eed323ff31f830da674dc87c77a2fcb1b296f76402ea900.

No entanto, mais adiante no tutorial, durante a criação da nova carga:

A carga não assinada é gerada:
nonce=cb68251eefb5211e58c00ff1395f0c0b&name=sam&username=samsam&email=test%40test.com&external_id=hello123&require_activation=true
(a ordem não importa, os valores estão codificados em URL)

A carga é codificada em Base64
bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGImbmFtZT1zYW0mdXNlcm5hbWU9c2Ftc2FtJmVtYWlsPXRlc3QlNDB0ZXN0LmNvbSZleHRlcm5hbF9pZD1oZWxsbzEyMyZyZXF1aXJlX2FjdGl2YXRpb249dHJ1ZQ==

A carga é codificada em URL
bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGImbmFtZT1zYW0mdXNlcm5hbWU9c2Ftc2FtJmVtYWlsPXRlc3QlNDB0ZXN0LmNvbSZleHRlcm5hbF9pZD1oZWxsbzEyMyZyZXF1aXJlX2FjdGl2YXRpb249dHJ1ZQ%3D%3D

A carga codificada em Base64 é assinada
3d7e5ac755a87ae3ccf90272644ed2207984db03cf020377c8b92ff51be3abc3

Essa assinatura é gerada a partir do hash da carga em Base64 não codificada em URL, por isso estou um pouco inseguro quanto ao motivo de não funcionar na primeira carga.