我有一个桌面应用程序,我可以使用authentication.getPrincipal() . toString()代码行获取域用户名 . 如果域名和用户输入完全匹配我授予用户的所有访问权限 . 另一方面,当用户键入另一个用户名(与域用户名不匹配),程序检查数据库中的密码 .
问题是我想用Windows域密码检查密码而不是DB . 当用户写入用户名时,程序应查找此用户名的Windows域密码 . 我尝试LDAP但我无法通过LDAP获取域密码 .
有没有办法用域密码检查用户?换句话说,是否有可能查找属于用户的密码?
1 回答
检索密码应该是不可能的(没有人应该能够获得另一个用户的密码) .
但是,如果他们在以该帐户登录时访问,则无需检查密码 . 您可以进行authentication.getPrincipal这一事实表明他们以该用户身份登录 - 您不再需要输入密码 .
或者,如果他们使用给定的windows-auth用户名和密码访问而未以该用户身份登录,则可能有办法查看他们的密码是否有效,但我对此表示怀疑,因为IsValid()布尔调用会让您知道您刚刚移交的密码有效,因此Windows泄露了密码 .
编辑:
Java LDAP身份验证代码(来源:http://java.sun.com/products/jndi/tutorial/ldap/security/ldap.html)