3

次のように、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 をオンにしたままイントラネットにログインしようとした人は、パスワードを変更する必要があるため、一般的なエラー メッセージで拒否されました。

上記のようにエラーをトラップし-2147022989てメッセージを表示できますが、旅行中の人はデスクトップに VPN 接続しない限りパスワードを変更できず、スキルの低いユーザーや幹部にとっては問題になる可能性があります。

これは、従来の ASP を介して AD パスワードの変更を容易にする方法があるかどうかを尋ねる長い方法だと思いますか?

私は、JavaScript を介してパスワード要件の検証を行うことができます。

4

1 に答える 1

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
于 2013-10-17T19:23:56.070 に答える