Hallo. Das ist wahrscheinlich eine dumme Frage, aber wir migrieren unser Forum von XenForo zu Discourse. Wir haben einen Backend-Server für die Autorisierung, der sich mit der Datenbank verbindet und Anmeldeinformationen gegen die Benutzertabelle prüft.
XenForos bcrypt-Algorithmus funktionierte wie erwartet und ohne Probleme. Als wir jedoch zu Discourse migrierten, schien der PBKDF2-Algorithmus nicht meinen Erwartungen zu entsprechen. Genau dasselbe Passwort, genau dieselbe Salt, genau dieselbe Anzahl von Iterationen und Länge, aber der Ausgabe-Hash ist anders.
Ich habe verschiedene Implementierungen des PBKDF2-Algorithmus ausprobiert, aber alle geben denselben (von Discourse abweichenden) Hash aus. Einschließlich meiner eigenen Implementierung.
Ich würde Mechanismen wie OAuth2 oder SSO wegen des zusätzlichen Overheads und des zusätzlichen Aufwands, den sie uns auferlegen, lieber vermeiden.
Hat jemand Discourse für solche Anwendungsfälle verwendet und, wenn ja, wie haben Sie dieses Problem gelöst?
Wir haben hauptsächlich die Implementierung von Go’s crypto/bcrypt für Xenforo verwendet. Die gleichen Hashes aus verschiedenen pbkdf2-Algorithmus-Implementierungen lassen mich vermuten, dass Go möglicherweise Strings auf eine etwas andere Weise speichert oder in Bytes umwandelt.
Das muss ich morgen ausprobieren (es ist spät hier). Wenn OpenSSL mir das gewünschte Ergebnis liefert, müsste ich nach OpenSSL-Bindings für Go suchen oder zu einer völlig anderen Sprache (die OpenSSL-Bindings hat) für das Backend wechseln.
Entschuldigung, ich bin derzeit nicht in der Lage, Ihnen das mitzuteilen, da Zeitzonen nervig sind. Es ist hier sehr spät und ich könnte das erst am nächsten Tag tun.
Lass gut sein. Ich musste die Hex-Darstellung des Salzes als Argument verwenden, nicht das dekodierte Salz, wie ich es im obigen Beitrag getan habe. Jetzt sind die Hashes gleich.