Active directory 在Active Directory中密码过期时检查用户密码的有效性

Active directory 在Active Directory中密码过期时检查用户密码的有效性,active-directory,adfs2.0,Active Directory,Adfs2.0,我在一个场景中工作,用户密码在Active Directory中已经过期。我试图检查用户是否输入了有效的用户名和相应的有效但过期的密码。如果用户输入了有效的用户名和正确的过期密码,我会将他们重定向到一个页面,在那里他们可以重置密码。但是,如果用户输入了错误的过期密码,则应使用标准消息用户名和/或密码不正确通知用户。我在网上查过,他们正在讨论在将pwdLastSet设置为-1后使用validatecredentials方法禁用用户必须在下次登录时更改密码 这种方法是否允许我检查过期密码的有效性?

我在一个场景中工作,用户密码在Active Directory中已经过期。我试图检查用户是否输入了有效的用户名和相应的有效但过期的密码。如果用户输入了有效的用户名和正确的过期密码,我会将他们重定向到一个页面,在那里他们可以重置密码。但是,如果用户输入了错误的过期密码,则应使用标准消息
用户名和/或密码不正确通知用户。我在网上查过,他们正在讨论在将
pwdLastSet
设置为-1后使用
validatecredentials
方法禁用
用户必须在下次登录时更改密码


这种方法是否允许我检查过期密码的有效性?我尝试过这种方法,但它似乎对我不起作用。

是的-ValidateCredentials API给出了太多的误报

这是一个黑色艺术的东西,但你可以检查和都有“密码过期”位


我通常使用上述方法,但有些人建议直接使用Windows API-请参阅。

这与ADF有关吗?否则请删除标记。Hi nzpcmad,我尝试在try-catch块中使用if(!LogonUser(user,domain,pass,LogonTypes.Network,LogonProviders.Default,out-token)){errorCode=marshall.GetLastWin32Error();success=false;}。我收到了您提供的链接中提到的错误代码(LDAP检查帐户…)。然而,当我禁用该用户并尝试登录时,无论密码是否正确,我都会得到相同的错误代码ie 1331。当提供错误的密码时,我正期待着1326。我错过了什么吗?听起来不错-1331被禁用了。我很确定密码检查在链的末尾,即在检查密码的有效性之前,代码检查禁用、锁定等。但是错误代码的文档告诉我们,只有在提供有效的用户名和密码/凭证时,才会返回1331。在我的例子中,即使密码是错误的,我也会得到1331。当我使用正确的用户名和错误的密码时,我会得到1326个错误代码。至少我在一台实现了类似功能的旧服务器上得到了1326。这是IBM文档-请参阅-没有提到这一点。那么,我相信我必须接受它。谢谢你的及时回复。