【发布时间】:2018-09-04 05:05:59
【问题描述】:
我在 CentoS 6.9 上使用 openldap slapd 2.4.40 和 postgresql9.2.23 作为 back-sql
LDAP uid 和 userPassword 的用户名和密码通过 DES 编码存储在 postgresql 中。
原始明文是JacicFk5
DES 编码/加密文本为IfjFxsltK/MPE,存储在 DB 中。
我可以通过存储的密码看到作为ldapseach结果的用户信息。
ldapsearch -x -b "dc=example,dc=com" -D uid="HDZZZ0R0N,ou=people,dc=example,dc=com" -w IfjFxsltK/MPE '(&(uid= HDZZZ0R0N)(objectClass=*))'
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=com> with scope subtree
# filter: (&(uid= HDZZZ0R0N)(objectClass=*))
# requesting: ALL
#
# user01, people, example.com
dn: uid= HDZZZ0R0N,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
cn:: W+aOkl3lia/nlKPnianjg6Hjg7Pjg4bjg4rjg7PjgrnvvIgzNu+8iVNURw==
sn:: W+aOkl3lia/nlKPnianjg6Hjg7Pjg4bjg4rjg7PjgrnvvIgzNu+8iVNURw==
uid: HDZZZ0R0N
userPassword:: SWZqRnhzbHRLL01QRQ==
但是,我无法通过原始明文密码进行 ldapsearch
ldapsearch -x -b "dc=example,dc=com" -D uid="HDZZZ0R0N,ou=people,dc=example,dc=com" -w JacicFk5 '(&(uid= HDZZZ0R0N)(objectClass=*))'
ldap_bind: Invalid credentials (49)
有没有人告诉我如何让 ldapsearch 以明文方式解析给定密码,并通过 DES 编码来存储密码?
我想知道如何从 ldapseach 命令行将纯文本 JacicFk5 制作成散列 IfjFxsltK/MPE 并使其与 DB 中的 IfjFxsltK/MPE 匹配为 userPassowrd。
是否有适合ldap.conf 或slapd.conf 的指令?
我已经检查了以下内容。
echo "SWZqRnhzbHRLL01QRQ==" |perl -MMIME::Base64 -ne 'print decode_base64($_) . "\n"'
它返回IfjFxsltK/MPE
perl -e 'print("userPassword: {crypt}".crypt("JacicFk5","If")."\n");'
它返回userPassword: {crypt}IfjFxsltK/MPE
更多信息。 我的 ldapseach 可以通过 ownclod 为存储在 AD 服务器中的用户解析密码文本。
【问题讨论】:
-
嗯,我想将存储在 LDAP 中的所有密码转换为纯文本。我总是反过来做。由于我的回答对您没有帮助,因此我将其删除。
-
根据 slapd2.4.40
ppolicy的配置文件,除非 swich 打开,否则不会启用。-enable-ppolicy Password Policy overlay no|yes|mod [no]我的是 CentOS 的软件包。我无法改变。 -
我通过启用 ppolicy 自行构建了相同版本的 slapd。没有任何变化。
-
我现在准备自定义 slapd 源。有没有人告诉我哪个源文件最好添加 DES 加密以使明文密码与存储的密码匹配?
-
@tukan ,您的信息很重要。你不能删除。
标签: hash active-directory openldap des crypt