ユーザーを認証し、古いパスワードを新しいパスワードに変更する Web サイトを開発しています。
私は WinNT 文字列接続を使用しており、古いパスワード チェックなしでパスワードを設定しています。
私のコードは以下の通りです:
'actual setting password
Dim entryD As New DirectoryEntry("WinNT://" + Environment.MachineName + ",computer")
Dim NewUser As DirectoryEntry = entryD.Children.Find(username, "user")
Dim nativeobject As Object = NewUser.NativeObject
NewUser.Invoke("SetPassword", New Object() {strPassNew})
NewUser.CommitChanges()
'setting password ends
これは正常に機能しますが、認証コードが機能していません。
以下の通りです。
'authentication starts
Dim adsiPath As String
adsiPath = String.Format("WinNT://{0}/{1},user", domain, username)
Dim userEntry = New DirectoryEntry(adsiPath, username, password, AuthenticationTypes.Secure)
'Dim nativeobject1 As Object = userEntry.NativeObject
Dim newobj As ActiveDs.IADsUser = userEntry.NativeObject
authent = True
'authentication ends
これは認証されますが、スローされる例外は次のとおりです。
logon failure: unknown username or bad password
初めてですが、もう一度やるとエラーは次のようになります。
"複数のユーザー名を使用して、同じユーザーによるサーバーまたは共有リソースへの複数の接続は許可されていません。サーバーまたは共有リソースへの以前の接続をすべて切断してから、再試行してください。"
これは避けたいことです... LDAP を使用したくないので、古いパスワードを認証するためのソリューションが必要です。助けてください?