在经典 ASP 中更改活动目录密码



我有一个经典的ASP应用程序,我通过活动目录对用户进行身份验证,如下所示:

sDomain = "@domain_name.abc"
sUserID = LCase(Request.Form("UserID"))
sPassword = Request.Form("Password")
On Error Resume Next
Set adObject = GetObject("WinNT:")
Set userObject = adObject.OpenDSObject("WinNT://domain_name.abc", sUserID & sDomain, sPassword, ADS_SECURE_AUTHENTICATION)
Select Case Err.Number
'-2147023565 disabled account
'-2147022989 password expired
'0 success
'Else some other error
End Select

刚刚出现的问题是我们更改了密码过期策略。 网络密码从未过期(不要问,小公司),但现在它们设置为每 120 天过期一次。

我们为此打开了组策略,任何保持电脑打开并尝试登录 Intranet 的人都被拒绝并显示一般错误消息,因为他们需要更改密码。

现在,我可以捕获如上所示的错误-2147022989并显示一条消息,但对于旅行的人来说,除非他们VPN进入桌面,否则他们将无法更改密码,这对于一些技能较低的用户和高管来说可能是个问题。

我想这都是询问是否有通过经典ASP促进AD密码更改的冗长方式?

我想,我可以通过JavaScript来验证密码要求。

知道了。

Set objIADS = GetObject("WinNT:").OpenDSObject("WinNT://domain", "Administrator", sDomainPassword, ADS_SECURE_AUTHENTICATION)
Set objIADSUser = objIADS.GetObject("user", sUserID)
objIADSUser.ChangePassword sOldPassword, sNewPassword
'Alternatively: objIADSUser.SetPassword sNewPassword
objIADSUser.SetInfo

最新更新