Перенесите существующих пользователей Django на OpenLDAP с тем же паролем.

Я использую модель пользователя Django в качестве механизма аутентификации. Теперь я хочу перенести всех пользователей на сервер OpenLDAP. Я полагаю, что если я смогу заставить OpenLDAP использовать тот же алгоритм хеширования и формат строки пароля, я могу просто скопировать хэш пароля из Django, и пользователи просто смогут входить в систему, используя то же имя пользователя и пароль, когда я подключаю OpenLDAP.

Мое приложение Django использует алгоритм хэширования PBKDF2, поэтому я пытаюсь настроить OpenLDAP для использования PBKDF2 с помощью этого модуля: https://github.com/hamano/openldap-pbkdf2

Хэш пароля в Django будет выглядеть так:

pbkdf2_sha256$12000$MySaltString$somehashstring...

Я пытался много раз, но не мог заставить его работать с OpenLDAP.

Было бы здорово, если бы вы, ребята, могли дать мне несколько советов.

Большое спасибо,

Тринь


person Trinh Nguyen    schedule 07.11.2016    source источник


Ответы (1)


Если вы работаете с python3, вы можете использовать механизм с солью, предоставленный в пакете http://ldap3.readthedocs.io/standard.html

from ldap3 import HASHED_SALTED_SHA
from ldap3.utils.hashed import hashed

hashed_password = hashed(HASHED_SALTED_SHA, 'new_password')
connection.modify('cn=user1,o=test', {'userPassword': [(MODIFY_REPLACE,[hashed_password])]})
person Dharmik    schedule 07.11.2016
comment
Итак, если я прав, ваш образец сценария пытается обновить пароль пользователя до OpenLDAP. Но то, что я пытаюсь сделать здесь, это скопировать хешированный пароль из моих приложений Django в OpenLDAP, а затем оттуда можно будет аутентифицировать пользователя. - person Trinh Nguyen; 07.11.2016
comment
Во время создания пользователя вы можете установить пароль в openLDAP, поэтому нет необходимости копировать пароль из вашего приложения django. - person Dharmik; 08.11.2016
comment
Спасибо за предложение. Но я не хочу создавать нового пользователя. Я хочу перевести всех своих пользователей на OpenLDAP. - person Trinh Nguyen; 08.11.2016