Non ho ancora testato questo sul mio sito web; sto cercando di capire i passaggi a mano prima di farlo.
Dal post del forum citato in precedenza:
Dati i seguenti impostazioni:
Dominio di Discourse:http://discuss.example.com
URL di DiscourseConnect:http://www.example.com/discourse/sso
Segreto di DiscourseConnect:d836444a9e4084d5b224a60c208dce14
Tentativo di accesso dell’utente
- Viene generato un nonce:
cb68251eefb5211e58c00ff1395f0c0b- Viene generato il payload grezzo:
nonce=cb68251eefb5211e58c00ff1395f0c0b- Il payload viene codificato in Base64:
bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGI=\n- Il payload viene codificato in URL:
bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGI%3D%0A- Viene generato un HMAC-SHA256 sul payload codificato in Base64:
2828aa29899722b35a2f191d34ef9b3ce695e0e6eeec47deb46d588d70c7cb56
Qui ottengo una risposta diversa. Quando ho utilizzato il codificatore HMAC che hai suggerito sul payload in Base64 non codificato in URL, ho ottenuto d26d5adf900de48890a0c3dcdeec108acd91b44a4b76c90c59955a5ba7b957f7 invece di 2828aa29899722b35a2f191d34ef9b3ce695e0e6eeec47deb46d588d70c7cb56. Quando lo uso sul payload codificato in URL, ottengo 46e749cd26dcabc84eed323ff31f830da674dc87c77a2fcb1b296f76402ea900.
Tuttavia, più avanti nel tutorial, durante la creazione del nuovo payload:
Viene generato il payload non firmato:
nonce=cb68251eefb5211e58c00ff1395f0c0b&name=sam&username=samsam&email=test%40test.com&external_id=hello123&require_activation=true
(l’ordine non importa, i valori sono codificati in URL)
Il payload viene codificato in Base64:
bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGImbmFtZT1zYW0mdXNlcm5hbWU9c2Ftc2FtJmVtYWlsPXRlc3QlNDB0ZXN0LmNvbSZleHRlcm5hbF9pZD1oZWxsbzEyMyZyZXF1aXJlX2FjdGl2YXRpb249dHJ1ZQ==
Il payload viene codificato in URL:
bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGImbmFtZT1zYW0mdXNlcm5hbWU9c2Ftc2FtJmVtYWlsPXRlc3QlNDB0ZXN0LmNvbSZleHRlcm5hbF9pZD1oZWxsbzEyMyZyZXF1aXJlX2FjdGl2YXRpb249dHJ1ZQ%3D%3D
Il payload codificato in Base64 viene firmato:
3d7e5ac755a87ae3ccf90272644ed2207984db03cf020377c8b92ff51be3abc3
Questa firma viene generata dall’hashing del payload in Base64 non codificato in URL, ecco perché sono un po’ incerto sul motivo per cui non funziona sul primo payload.