IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Filtre dans une requête LDAP


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 80
    Points : 44
    Points
    44
    Par défaut Filtre dans une requête LDAP
    bonjour,
    voilà, j'ai fais une boite de connexion qui se lance à l'ouverture de mon programme, je voulais savoir quelle méthode employer pour se connecter à l'active directory et savoir si l'utilisateurs à bien des droits d'administrateur.
    j'ai fais le code suivant, qui ne fait que tester si l'utilisateur introduit est bien dans l'active directory.
    merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    private void Connection_Click(object sender, EventArgs e)
            {
     
                    DirectoryEntry LDAP = new DirectoryEntry("LDAP://" + ServerName.Text, Login.Text, Password.Text);
                    DirectorySearcher LDAPOK = new DirectorySearcher(LDAP);
                    LDAPOK.SearchScope = SearchScope.Subtree;
                    LDAPOK.Filter = "(&(objectclass=user)(sAMAccountName=" + Login.Text + "))";
     
                    if (ServerName.Text == "" || Login.Text == "" || Password.Text == "")
                    {
     
                        if (ServerName.Text == "")
                        {
                            ServerNameL.ForeColor = System.Drawing.Color.Red;
                        }
                        else
                        {
                            ServerNameL.ForeColor = System.Drawing.Color.Black;
                        }
     
                        if (Login.Text == "")
                        {
                            LoginL.ForeColor = System.Drawing.Color.Red;
                        }
                        else
                        {
                            LoginL.ForeColor = System.Drawing.Color.Black;
                        }
     
                        if (Password.Text == "")
                        {
                            PasswordL.ForeColor = System.Drawing.Color.Red;
                        }
                        else
                        {
                            PasswordL.ForeColor = System.Drawing.Color.Black;
                        }
     
                    }
                    else
                    {
     
                        try
                        {
     
                            this.Cursor = Cursors.WaitCursor;
     
                            SearchResult user = LDAPOK.FindOne();
                            adduser main = new adduser(LDAP);
                            this.Hide();
                            main.ShowDialog();
                            this.Close();
     
     
                        }
     
                        catch (Exception ex)
                        {
                            this.Cursor = Cursors.Arrow;
     
     
                            if ((ex.Message).Length==36)
     
                            {
                                Login.Text = "";
                                Password.Text = "";
                                ServerName.Text = "";
                                ServerNameL.ForeColor = System.Drawing.Color.Black;
                                LoginL.ForeColor = System.Drawing.Color.Black;
                                PasswordL.ForeColor = System.Drawing.Color.Black;
                                MessageBox.Show(ex.Message);
                                ServerName.Focus();
                            }
     
                            else
                            {
                                ServerNameL.ForeColor = System.Drawing.Color.Black;
                                LoginL.ForeColor = System.Drawing.Color.Black;
                                PasswordL.ForeColor = System.Drawing.Color.Black;
                                Login.Text = "";
                                Password.Text = "";
                                MessageBox.Show(ex.Message);
                                Login.Focus();
                            }
     
                            }
     
                        }
                    }
     
     
        }
     
     
            }

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 153
    Points : 138
    Points
    138
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    public bool IsAuthenticated(string domain, string username, string pwd)
             {
                 string domainAndUsername = domain + @"\" + 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 + ")";
                     search.PropertiesToLoad.Add("cn");
                     SearchResult result = search.FindOne();
                     if(null == result)
                     {
                         return false;
                     }
                     // Update the new path to the user in the directory
                     _path = result.Path;
                     _filterAttribute = (String)result.Properties["cn"][0];
                 }
                 catch (Exception ex)
                 {
                     throw new Exception("Error authenticating user. " + ex.Message);
                 }
                 return true;
             }
     
     
         }
    pour tester la connection, cela peut peut etre aider

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 80
    Points : 44
    Points
    44
    Par défaut
    et bien je teste déjà la connexion comme ça, ma méthode fonctionne, mais j'aimerais savoir quel est l'attribut que je peux mettre dans le filtre pour savoir si la personne qui se connecte à des droits administrateur en plus de vérifier s'il est dans l'active directory.Avec le try, s'il a trouvé l'objet, la suite du programme est accessible, mais j'aimerais que en + il vérifie que l'objet trouvé aie les droits administrateur, sans quoi il générera une exception comme quoi il n'y a pas d'objet qui correspondent à la demande et je pourrai en fonction de cette exception afficher un message comme quoi l'utilisateur n'a pas les droits,comme je l'ai fait pour l'exception dans le cas où le seveur n'est pas opérationnel, je teste la longueur du message dans l'exception( impossible de le faire sur le String du message car il y a des caracteres inconnu en plus )

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 80
    Points : 44
    Points
    44
    Par défaut
    je pense que je vais tester s'il est membre du groupe d'admin mais je n'arrive pas à faire le filtre convenablement pour la requete LDAP, quelqu'un a t il une idée ?

Discussions similaires

  1. [AC-2010] Comment faire un filtre dans une requête
    Par Snakes1 dans le forum Access
    Réponses: 1
    Dernier message: 01/05/2013, 03h31
  2. Réponses: 4
    Dernier message: 26/02/2008, 09h55
  3. Réponses: 4
    Dernier message: 22/02/2008, 10h02
  4. Filtre dans une requête
    Par pat04 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 16/02/2007, 15h28
  5. filtre dans une requête sql ?
    Par jessy212 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 02/09/2006, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo