Announcement

Collapse
No announcement yet.

Authentifizierung mit LDAP

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Authentifizierung mit LDAP

    Hallo,

    in meinem Formular git der User seinen Namen und Passwort ein. Daraufhin möchte ich den User samt Passwort mit LDAP überprüfen.

    Soweit so gut. Den User finde ich in meiner ADS, aber wie kann ich das Passwort prüfen?

    Hier mal der Code zum auslesen des Users:
    Code:
    private void get_chkuser()
    {
        try
    {
        DirectoryEntry de = new DirectoryEntry("LDAP://LDAPServer/OU=users,OU=x,OU=y,DC=z,DC=a,DC=b", "user", "pass");
    
        // Angabe Suchausdruck
        DirectorySearcher src = new DirectorySearcher("(&(&(|(&(objectCategory=person)(objectSid=*)(!samAccountType:1.2.840.113556.1.4.804:=3))(&(objectCategory=person)(!objectSid=*))(&(objectCategory=group)(groupType:1.2.840.113556.1.4.804:=14)))(objectCategory=user)(userPrincipalName=peterparker*)))");
    
        src.SearchRoot = de;
        src.SearchScope = SearchScope.Subtree;
    
        foreach (SearchResult res in src.FindAll())
        {
            Response.Write(res.Properties["Name"][0] + "<br>");
        }
        }
        catch (Exception e)
        {
            e.Message.ToString();
        }
    }

  • #2
    lösung

    Hallo habe ne Lösung gefunden:

    Code:
    public bool isLDAPAuthenticated(string username, string pwd)
            {
                string domainAndUsername = ldapDomain + @"\" + username;
                DirectoryEntry entry     = new DirectoryEntry(_path, domainAndUsername, pwd);
    
                try
                {
                    //Bind to the native AdsObject to force authentication.
                    object obj               = entry.NativeObject;
                    DirectorySearcher search = new DirectorySearcher(entry);
    
                    search.Filter       = "(SAMAccountName=" + username + ")";                
                    SearchResult result = search.FindOne();
    
                    // User wurde in ADS/LDAP nicht gefunden
                    if (null == result)
                    {                   
                        return false;
                    }
    
                    //Update the new path to the user in the directory.
                    _path = result.Path;
                    return true;
                }
                catch (Exception ex)
                {
                    Session["note"]  = "false";
                    Session["flash"] = ex.Message;
                    return false;
                }
            }

    Comment

    Working...
    X