Аутентификация LDAP из .NET с использованием Proxy User - PullRequest
2 голосов
/ 03 февраля 2010

Мы хотим использовать «прокси-пользователя» для подключения к серверу LDAP (Active Directory, Novell или другим способом), а затем убедиться, что пользователь, пытающийся войти в приложение, ввел допустимое имя пользователя и пароль. У меня есть код для подключения к LDAP просто отлично, но я не знаю, как проверить имя пользователя и пароль. Вы можете сделать это через запрос LDAP?

Вот мой внутренний код:

Public Function Authenticate(ByVal UserName As String, ByVal Password As String)

  Dim LDAPServer As String = ConfigurationManager.AppSettings("LDAPServer")
  Dim proxyUsername As String = ConfigurationManager.AppSettings("LDAPProxyUser")
  Dim proxyPassword As String = ConfigurationManager.AppSettings("LDAPProxyPassword")

  Dim entry As DirectoryEntry

  entry = New DirectoryEntry(LDAPServer, proxyUsername, proxyPassword)

  'This performs the LDAP authentication'
  Dim obj As Object = entry.NativeObject

  Dim search As New DirectorySearcher(entry)
  search.Filter = String.Format("(SAMAccountName={0})", UserName)

  'How do I check the password now?'

  Dim result As SearchResult = search.FindOne()

  If result Is Nothing Then Throw New Exception("Unable to find SAMAccountName")

Ответы [ 2 ]

1 голос
/ 03 февраля 2010

Код, который я использовал в прошлом, пытается привязаться к LDAP с использованием предоставленных учетных данных.Если вызов bind вызывает исключение, то у вас нет действительного пользователя:

Dim servers() As String = New String(0) {"mylap.domain.com"}
Dim con As New LdapConnection(New LdapDirectoryIdentifier(servers, True, False))
con.SessionOptions.SecureSocketLayer = True
con.Credential = New Net.NetworkCredential("cn=" & userName, password)
con.AuthType = AuthType.Basic

Using con
   con.Bind()
End Using
0 голосов
/ 04 февраля 2010

Я закончил тем, что создал другой DirectoryEntry, который был пользователем, который пытался аутентифицироваться следующим образом:

Dim authEntry As DirectoryEntry

authEntry = New DirectoryEntry(LDAPServer, UserName, Password)

Dim authObj = authEntry.NativeObject

Если это вызывает исключение, пользователь не смог аутентифицироваться.

...