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

时间:2013-10-15 15:29:56

标签: asp-classic active-directory adsi

我有一个经典的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天到期。

我们为此启用了组策略,任何离开PC并尝试登录Intranet的人都被拒绝了,因为他们需要更改密码。

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

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

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

1 个答案:

答案 0 :(得分:3)

知道了。

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
相关问题