我有一个问题,我不知道如何解决它。
我从文本文件中加载一个加密密码(SSHA),我需要从Java源代码中添加一个具有此密码的用户。
文件中的示例: e1NTSEF9Ukd6ZEZyanZBZlJGMGs3eGFDOGZxQ3U3QlozcUZXRGJoeWIyS0E9PQ==
真实密码: 123
示例代码不能按我的要求工作:
String encryptedPSWD = "e1NTSEF9Ukd6ZEZyanZBZlJGMGs3eGFDOGZxQ3U3QlozcUZXRGJoeWIyS0E9PQ==";
attributes.add(new BasicAttribute("userPassword","{SSHA}"+encryptedPSWD);它不工作,因为我们只能发送真实值密码?问题是,这是单方面加密,LDAP也无法解密吗?
发布于 2018-10-20 13:27:30
来自LDAP服务器的错误号和文本将具有指导意义;但是,在一般情况下,有两件事情是非常突出的:
(1)假设用户已经有了密码,您将修改现有属性,而不是添加属性。如果尝试向已经获得值的单个值属性添加值,或者尝试向已经存在的多值属性添加值,则会得到ldap错误20。
LDAPModificationSet attributes = new LDAPModificationSet();
LDAPAttribute attrUserPassword = new LDAPAttribute("userPassword", "{SSHA}"+encryptedPSWD);
attributes.add(LDAPModification.REPLACE, attrUserPassword);(2)某些目录不允许默认使用“预编码”密码。这是因为密码策略不能应用于未知密码(例如,我如何知道这个密码至少有八个字符,包含一个特殊字符,并且不包含字典单词?)。在这种情况下,我管理返回错误53的服务器,以及“密码属性userPassword不允许预编密码”的文本,但是其他目录服务器可能会使用不同的代码返回(53是一个相当通用的代码,在服务器配置中只是意味着阻止操作完成)。如何排序取决于LDAP服务器--我的服务器在密码策略中有一个允许预编码的密码布尔值。我通常将其设置为"true",大量导入用户,然后将设置返回为'false‘,以防止应用程序开发人员绕过我们的密码策略。
https://stackoverflow.com/questions/52889356
复制相似问题