Привет. Возможно, это глупый вопрос, но мы мигрируем наш форум с XenForo на Discourse. У нас есть бэкенд-сервер для авторизации, который подключается к базе данных и проверяет учётные данные в таблице пользователей.
Алгоритм bcrypt в XenForo работал как ожидалось, без каких-либо проблем. Однако при миграции на Discourse алгоритм PBKDF2 не соответствовал нашим ожиданиям. Тот же самый пароль, та же самая соль, то же самое количество итераций и длина, но результирующий хеш отличается.
Я пробовал различные реализации алгоритма PBKDF2, но все они выдавали одинаковый хеш (отличный от хеша Discourse), включая мою собственную реализацию.
Мы бы предпочли избежать таких механизмов, как OAuth2 или SSO, из-за дополнительных накладных расходов и объёма работы, который они на нас возлагают.
Кто-нибудь использовал Discourse для подобных задач? Если да, то как вы решили эту проблему?
Для Xenforo мы в основном использовали реализацию Go crypto/bcrypt. То, что хеши, полученные из различных реализаций алгоритма PBKDF2, совпадают, позволяет предположить, что Go, возможно, хранит строки или преобразует их в байты несколько иначе.
Мне придется попробовать это завтра (у нас уже поздно). Если OpenSSL даст нужный результат, то мне придется найти привязки OpenSSL для Go или же полностью переключиться на другой язык (с привязками к OpenSSL) для бэкенда.
Неважно. Мне пришлось использовать шестнадцатеричное представление соли в качестве аргумента, а не декодированную соль, как я делал в посте выше. Теперь хеши совпадают.