2016-11-07 2 views
0

J'utilise le modèle User de Django comme backend d'authentification. Maintenant, je veux migrer tous les utilisateurs vers un serveur OpenLDAP. Je crois que si je peux utiliser OpenLDAP en utilisant le même algorithme de hachage et le même format de mot de passe, je peux simplement copier le mot de passe de Django, les utilisateurs pourront se connecter en utilisant le même nom d'utilisateur et mot de passe.Migrer les utilisateurs Django existants vers OpenLDAP avec le même mot de passe

Mon Django en utilisant PBKDF2 algorithme de hasing de l'application donc ce que je suis en train de faire est de configurer OpenLDAP utiliser PBKDF2 en utilisant ce module: https://github.com/hamano/openldap-pbkdf2

Le hachage de mot de passe dans Django sera comme:

pbkdf2_sha256 12000 $ $ MySaltString $ somehashstring ...

J'ai essayé plusieurs fois mais je n'ai pas réussi à le faire fonctionner avec OpenLDAP.

Ce serait génial si vous pouviez me donner quelques indices.

Merci beaucoup,

Trinh

Répondre

1

Si vous travaillez avec python3, vous pouvez utiliser le mécanisme salé fourni sur ldap3 package on this page 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])]}) 
+0

Donc, si je ne me trompe pas, votre exemple de script tente mettre à jour le mot de passe de l'utilisateur à OpenLDAP. Mais, ce que j'essaye de faire ici est de copier le mot de passe haché de mes applications de Django à OpenLDAP et alors l'utilisateur peut être authentifié à partir de là. –

+0

Au moment de la création de l'utilisateur, vous pouvez définir le mot de passe dans openLDAP, il n'est donc pas nécessaire de copier le mot de passe de votre application django. – Dharmik

+0

Merci pour votre suggestion. Mais je ne veux pas créer un nouvel utilisateur. Je souhaite migrer tous mes utilisateurs vers OpenLDAP. –