2008-08-27 3 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 서버에 액세스 할 수 없을 때 throw 될 것이므로 사용자가 잡는 것입니다. –

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 

네임 스페이스는 또한 (등, 암호 만료, 암호 변경) 도메인 계정을 조작하는 방법을 많이 제공 할 것으로 보인다.