도메인 사용자의 사용자 이름과 암호가 주어지면 해당 사용자를 프로그래밍 방식으로 인증하는 가장 좋은 방법은 무엇입니까?System.DirectoryServices를 사용하여 도메인 사용자 인증
6
A
답변
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 서버로 작업 할 수 있다는 매우 멋진 장점이 있습니다.
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
네임 스페이스는 또한 (등, 암호 만료, 암호 변경) 도메인 계정을 조작하는 방법을 많이 제공 할 것으로 보인다.
그런 예외를 모두 잡아서는 안됩니다 ... COMException은 LDAP 서버에 액세스 할 수 없을 때 throw 될 것이므로 사용자가 잡는 것입니다. –