2008-08-27 7 views

答えて

8

にいくつかのハッキングを使用すると、のみが認証されます。

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サーバーで作業するという超クールな利点もあります。

+2

あなたは決してそのようなすべての例外を捕まえるべきではありません... COMExceptionは、あなたがキャッチしようとしているようにLDAPサーバにアクセスできないときにスローされるものです。 –

16

.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 

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

関連する問題