7

ドメイン ユーザーのユーザー名とパスワードが与えられた場合、そのユーザーをプログラムで認証する最善の方法は何でしょうか?

4

2 に答える 2

17

.NET 3.5 では、この問題に対処するために新しい名前空間 System.DirectoryServices.AccountManagement が追加されたようです。コードサンプルは次のとおりです。

Private Function ValidateExternalUser(ByVal username As String, ByVal password As String) As Boolean
    Using context As PrincipalContext = New PrincipalContext(ContextType.Domain, _defaultDomain)
        Return context.ValidateCredentials(username, password, ContextOptions.Negotiate)
    End Using
End Function

名前空間は、ドメイン アカウントを操作するための多くの方法も提供しているようです (パスワードの変更、パスワードの期限切れなど)。

于 2008-08-28T16:06:26.050 に答える
9

認証のみにいくつかのハックを使用できます。

Try
    Dim directoryEntry as New DirectoryEntry("LDAP://DomainController:389/dc=domain,dc=suffix", "username", "password")
    Dim temp as Object = directoryEntry.NativeObject
    return true
Catch
    return false
End Try

ユーザーが有効でない場合、ディレクトリ エントリ NativeObject にアクセスできず、例外がスローされます。これは最も効率的な方法ではありませんが (例外は悪いことです)、迅速で簡単です。これには、AD だけでなく、すべての LDAP サーバーで動作するという非常に優れた利点もあります。

于 2008-08-28T04:21:26.090 に答える