gpt4 book ai didi

java - 使用 Apache LDAP API 从 Activedirector 检索当前密码

转载 作者:行者123 更新时间:2023-12-02 05:33:36 25 4
gpt4 key购买 nike

我有一个用例,我想重置用户的密码。在我重置密码之前,我希望他们在 Active Directory 中检查密码,并且只有当前密码正确时,他们才应该能够更改密码。

我需要知道如何使用 Apache LDAP Api 从 Active Directory 检索用户的当前密码。

 entryCursor = connection.search(searchRequest);
if(null!=entryCursor){
Entry user = entryCursor.getEntry();
Iterator<Attribute> attr = user.getAttributes().iterator();
while(attr.hasNext()){
// I assumed that unicodePwd would be part of attribute set, but looks like it is not.
Attribute currentAttribute = (Attribute) attr.next();
currentAttribute.getAttributeType();
}
}

最佳答案

你在这里问了错误的问题。您无法获取密码,因为它是经过哈希处理的,并且您不需要它。您只需要尝试使用该用户声称的当前密码进行绑定(bind)。如果成功,则说明是正确的,您可以继续更改它。如果失败了,那就不是了。

比较密码总是错误的。让系统来做工作。另一个例子,这次是 SQL:

select password from users where username = ?

后面是密码比较,应该是:

select count(*) as count from users where username = ? and password = ?

并检查count == 1

这样做的另一个优点是,如果失败,您甚至可以向自己隐瞒用户名或密码是否错误。这是一条重要的信息隐私原则:您不会告诉攻击者他已经找到了有效的用户名,现在只需猜测密码即可。

关于java - 使用 Apache LDAP API 从 Activedirector 检索当前密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25275794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com