【发布时间】:2013-10-15 15:29:56
【问题描述】:
我有一个经典的 ASP 应用程序,我通过 Active Directory 对用户进行身份验证,如下所示:
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 验证密码要求。
【问题讨论】:
标签: asp-classic active-directory adsi