2013-10-15 89 views
3

更改Active Directory密碼我有一個傳統的ASP應用程序,我通過Active Directory如下驗證用戶:在傳統的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,並顯示一條消息,但對於旅行的人,他們將無法更改密碼,除非他們進入他們的桌面,這對於一些技能較低的用戶可能會造成問題,高管。

我想這是一個冗長的方式,詢問是否有任何方法通過傳統的ASP來改變AD密碼更改?

我可以通過JavaScript對密碼進行驗證。

回答

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