Я ищу способ перенести огромную базу данных домашнего сервера Synapse на OpenLDAP без сброса паролей пользователей. Переход на LDAP необходим, поскольку мы хотели бы интегрировать все наши онлайн-сервисы друг в друга
Поэтому я ищу способ заставить OpenLDAP понимать хэши паролей Synapse.
Алгоритм хеширования Synapses объясняется здесь :
pw = unicodedata.normalize("NFKC", password)
hashed = bcrypt.hashpw(
pw.encode('utf8') + password_pepper.encode("utf8"),
bcrypt.gensalt(bcrypt_rounds),
).decode('ascii')
Можно ли реализовать такое хеширование на OpenLDAP или любом другом сервере LDAP с открытым исходным кодом?
Если bcrypt является действительным алгоритмом для базовой системы, он должен работать как часть схемы хранения паролей CRYPT OpenLDAP.
Если, например, ваши существующие хэши паролей выглядят как $2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
вы должны быть в состоянии установить userPassword
атрибута OpenLDAP на {CRYPT}$2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
и затем аутентифицироваться.
(Если вы делаете это в командной строке, убедитесь, что $text
не интерпретируется как переменная оболочки перед вводом в базу данных)