【发布时间】:2019-06-04 03:57:43
【问题描述】:
下面的代码在保存时可以正常工作,但是如果我尝试使用保存的普通密码对用户进行身份验证,它不会进行身份验证? 当我手动将 phpldapadmin 中的密码更改为 MD5 并测试身份验证时,它的工作原理。
- 如何在 python 中将密码加密为 MD5 并将其保存在 LDAP?
- PHP 和 Python 的 MD5 加密有区别吗?
def addUser(record):
connect = ldapConnect()
try:
dn = "cn="+record['cn']+",ou=users,dc=example,dc=com"
attrs = {
"objectclass" : ['inetOrgPerson'.encode('utf-8'),'posixAccount'.encode('utf-8'),'shadowAccount'.encode('utf-8')],
"uid" : [record['uid'].encode('utf-8')],
"cn" : [record['cn'].encode('utf-8')],
"sn" : [record['sn'].encode('utf-8')],
"givenName" : [record['givenName'].encode('utf-8')],
"displayName" : [record['displayName'].encode('utf-8')],
"uidNumber" : [record['uidNumber'].encode('utf-8')],
"gidnumber" : [record['gidnumber'].encode('utf-8')],
"homeDirectory" : [record['homeDirectory'].encode('utf-8')],
"userpassword" : [record['userpassword'].encode('utf-8')]
}
connect.add_s(dn, modlist.addModlist(attrs))
connect.unbind_s()
return True
except ldap.LDAPError:
connect.unbind_s()
return False
【问题讨论】:
-
md5不是加密,也不是——python和php实现md5的方式没有区别(如果有——必须报bug) -
你没有。您将 OpenLDAP 配置为对密码本身进行哈希处理,并且您始终通过 LDAPS 以明文形式提供密码,即通过 SSL 的 LDAP。在存储和比较登录目的时,LDAP 将进行必要的散列。
-
你不能用MD5加密,因为MD5不是加密的。
标签: openldap python-ldap phpldapadmin