Java 在检查所有约束条件时,是否有办法重置用户密码?

Java 在检查所有约束条件时,是否有办法重置用户密码?,java,active-directory,ldap,Java,Active Directory,Ldap,发件人: 如果修改请求包含一个删除操作,该操作包含unicodePwd的值Vdel,然后是一个添加操作,该操作包含unicodePwd的值Vadd,则服务器将该请求视为更改密码的请求。服务器使用本节后面介绍的密码解码程序对Vadd和Vdel进行解码。Vdel是旧密码,而Vadd是新密码 如果修改请求包含单个替换操作,其中包含unicodePwd的值Vrep,则服务器将该请求视为密码的管理重置,即在不知道旧密码的情况下修改密码。服务器使用本节后面介绍的密码解码程序对Vrep进行解码,并将其用作新密

发件人:

如果修改请求包含一个删除操作,该操作包含unicodePwd的值Vdel,然后是一个添加操作,该操作包含unicodePwd的值Vadd,则服务器将该请求视为更改密码的请求。服务器使用本节后面介绍的密码解码程序对Vadd和Vdel进行解码。Vdel是旧密码,而Vadd是新密码

如果修改请求包含单个替换操作,其中包含unicodePwd的值Vrep,则服务器将该请求视为密码的管理重置,即在不知道旧密码的情况下修改密码。服务器使用本节后面介绍的密码解码程序对Vrep进行解码,并将其用作新密码

我还没有找到方法让用户在使用AD作为用户存储的Web服务器上执行忘记密码->确认电子邮件->设置新密码过程,同时根据PwdHistoryLength的密码重用检查来验证密码。我该怎么做

公开课考试{ 私有静态DirContext AdminldaContext; 公共静态无效主字符串[]args引发异常{ initLdapContext; createNewUseruser.x; assertThrows->updateUserPasswordByAdminuser.x,x,NamingException.class, X应在最小长度处失效; updateUserPasswordByAdminuser.x,良好的Pwd$%^123; updateUserPassworduser.x,良好Pwd$%^123,良好Pwd$%^1237; updateUserPasswordByAdminuser.x,良好的Pwd$%^1234; updateUserPasswordByAdminuser.x,良好的Pwd$%^12345; updateUserPasswordByAdminuser.x,良好的Pwd$%^123456; updateUserPassworduser.x,良好Pwd$%^123456,良好Pwd$%^1234567; assertThrows->updateUserPassworduser.x,好的Pwd$%^1234567,好的Pwd$%^123456, NamingException.class,密码为123456的密码应拒绝使用; assertThrows->updateUserPasswordByAdminuser.x,良好的Pwd$%^12345,NamingException.class, 应拒绝使用带有12345的密码,以便重新使用; } //静态void initLdapContext:初始化adminLdapContext //静态void createNewUserString uname:使用adminLdapContext并创建sAMAccountName=cn=uname的用户 //静态void updateUserPasswordString uname、String oldpass、String newpass:在Unicode上使用Vdel+Vadd //静态void updateUserPasswordByAdminString uname,String newpass:在Unicode上使用Vrep
//静态void资产throwsrunnablethrows r,Class您的问题并不完全清楚,但如果我理解正确,您希望这不起作用:

updateUserPasswordByAdmin("user.x", "good-Pwd$%^12345")
我假设updateUserPasswordByAdmin执行管理重置,而不是更改

如果是这样的话,那么这将始终有效,因为重置时不会强制执行密码历史记录要求。我怀疑这是一种安全功能,因为它会将过去的密码透露给不知道密码的人


您无法获得旧密码列表。

我正在开发的系统应该允许用户使用其他授权方式重置自己的密码,因此从整个集成的角度来看,管理员在任何时候都不会了解用户密码。我知道为什么会这样设计,但我不同意ted说没有改变它的选项。我只是在问题中添加了一个变通方法。你觉得如何?你的理解是正确的,updateUserPasswordByAdmin在管理员权限下的修改中使用Vrep。这是一个有趣的变通方法。但是你为什么要在更改密码时这样做呢?用户不能是forc我建议在更改密码时始终使用该工具。此外,根据域上设置的最短密码期限,您可能无法立即更改密码。在我的情况下,用户在更改密码时实际上可能会被迫使用该工具,因为我们有一个有趣的项目,客户坚持用户表可以在数据库中,由AD托管。
updateUserPasswordByAdmin("user.x", "good-Pwd$%^12345")