Ciao. Questa è probabilmente una domanda stupida, ma stiamo migrando il nostro forum da XenForo a Discourse. Abbiamo un server backend per l’autorizzazione che prevede la connessione al database e la verifica delle credenziali rispetto alla tabella degli utenti.
L’algoritmo bcrypt di XenForo ha funzionato come previsto e senza alcun problema. Quando siamo passati a Discourse, tuttavia, l’algoritmo PBKDF2 non sembra aver soddisfatto le mie aspettative. Stessa password esatta, stesso salt esatto, stesso numero di iterazioni ed esatta lunghezza, ma l’hash di output è diverso.
Ho provato varie implementazioni dell’algoritmo PBKDF2, ma tutte producono lo stesso identico hash (diverso da quello di Discourse). Inclusa la mia implementazione.
Preferirei evitare meccanismi come OAuth2 o SSO a causa dell’overhead aggiuntivo e del lavoro extra che ci impongono.
Qualcuno ha utilizzato Discourse per tali casi d’uso e, in tal caso, come ha risolto questo problema?
Abbiamo utilizzato principalmente l’implementazione crypto/bcrypt di Go per Xenforo. Gli stessi hash di varie implementazioni dell’algoritmo pbkdf2 mi suggeriscono che Go possibilmente memorizza stringhe o converte stringhe in byte in un modo alquanto diverso.
Dovrò provarlo domani (è tardi qui). Se OpenSSL mi darà il risultato desiderato, allora dovrò cercare binding OpenSSL per Go, oppure dovrò passare a una lingua completamente diversa (che ha binding OpenSSL) per il backend.
Non importa. Ho dovuto usare la rappresentazione esadecimale del sale come argomento, non il sale decodificato come stavo facendo nel post precedente. Ora gli hash sono uguali.