2010-02-03 5 views
2

Nous souhaitons utiliser un "utilisateur proxy" pour nous connecter à un serveur LDAP (Active Directory, Novell ou autre), puis nous assurer que l'utilisateur qui tente de se connecter à l'application a tapé dans un nom d'utilisateur et un mot de passe acceptables. J'ai le code pour me connecter à LDAP, mais je ne sais pas comment vérifier le nom d'utilisateur et le mot de passe. Pouvez-vous le faire via une requête LDAP?Authentification LDAP à partir de .NET avec l'utilisateur proxy

est ici le courage de mon code à ce jour:

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") 

Répondre

0

J'ai fini par créer un autre DirectoryEntry qui était l'utilisateur qui essaie d'authentifier comme ceci:

Dim authEntry As DirectoryEntry 

authEntry = New DirectoryEntry(LDAPServer, UserName, Password) 

Dim authObj = authEntry.NativeObject 

Si cela déclenche une exception, l'utilisateur n'a pas pu s'authentifier.

1

Le code que je l'ai utilisé dans le passé tente de se lier à LDAP en utilisant les informations d'identification fournies. Si l'appel à lier lance une exception, vous ne disposez pas d'un utilisateur valide:

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 
Questions connexes