首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java向LDAP发送加密密码

用Java向LDAP发送加密密码
EN

Stack Overflow用户
提问于 2018-10-19 09:16:25
回答 1查看 1.2K关注 0票数 0

我有一个问题,我不知道如何解决它。

我从文本文件中加载一个加密密码(SSHA),我需要从Java源代码中添加一个具有此密码的用户。

文件中的示例: e1NTSEF9Ukd6ZEZyanZBZlJGMGs3eGFDOGZxQ3U3QlozcUZXRGJoeWIyS0E9PQ==

真实密码: 123

示例代码不能按我的要求工作:

代码语言:javascript
复制
String encryptedPSWD = "e1NTSEF9Ukd6ZEZyanZBZlJGMGs3eGFDOGZxQ3U3QlozcUZXRGJoeWIyS0E9PQ==";
attributes.add(new BasicAttribute("userPassword","{SSHA}"+encryptedPSWD);

它不工作,因为我们只能发送真实值密码?问题是,这是单方面加密,LDAP也无法解密吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-20 13:27:30

来自LDAP服务器的错误号和文本将具有指导意义;但是,在一般情况下,有两件事情是非常突出的:

(1)假设用户已经有了密码,您将修改现有属性,而不是添加属性。如果尝试向已经获得值的单个值属性添加值,或者尝试向已经存在的多值属性添加值,则会得到ldap错误20。

代码语言:javascript
复制
LDAPModificationSet attributes = new LDAPModificationSet();
LDAPAttribute attrUserPassword = new LDAPAttribute("userPassword", "{SSHA}"+encryptedPSWD);
attributes.add(LDAPModification.REPLACE, attrUserPassword);

(2)某些目录不允许默认使用“预编码”密码。这是因为密码策略不能应用于未知密码(例如,我如何知道这个密码至少有八个字符,包含一个特殊字符,并且不包含字典单词?)。在这种情况下,我管理返回错误53的服务器,以及“密码属性userPassword不允许预编密码”的文本,但是其他目录服务器可能会使用不同的代码返回(53是一个相当通用的代码,在服务器配置中只是意味着阻止操作完成)。如何排序取决于LDAP服务器--我的服务器在密码策略中有一个允许预编码的密码布尔值。我通常将其设置为"true",大量导入用户,然后将设置返回为'false‘,以防止应用程序开发人员绕过我们的密码策略。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52889356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档