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

C# Discussion :

DirectoryEntry et WindowsIdentity


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 44
    Par défaut DirectoryEntry et WindowsIdentity
    Bonjour,
    Voila mon problème. Je stocke en base de données certains comptes Windows. Pour les récupérer, je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    DirectoryEntry Ldap = new DirectoryEntry();
    DirectorySearcher searcher = new DirectorySearcher(Ldap);
    StringBuilder filter = new StringBuilder();
    filter.Append("(&(objectCategory=Person)(objectClass=user))");
    searcher.Filter = filter.ToString();
    SearchResultCollection searchResultCollection = searcher.FindAll();
    foreach (SearchResult anUser in searchResultCollection)
    {
          DirectoryEntry compteWindows = anUser.GetDirectoryEntry();
          .....
    }
    par exemple, pour l'utilisateur, Robert Dupont
    compteWindows.Properties["name"].Value.ToString()
    me renvoie
    Robert Dupont
    Je rajoute le nom de domaine devant avec
    Ldap.Properties["name"].Value.ToString()

    Maintenant au lancement de l'appli, je regarde si l'utilisateur courant est enregistré. Pour ce, je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WindowsIdentity identity = WindowsIdentity.GetCurrent();
    Le problème est que identity.Name me renvoie Domaine\Robert
    Comment puis je faire le lien entre les utilisateurs que j'ai enregistré et WindowsIdentity.GetCurrent() ? Ou alors est ce que je me plante quelque part ?
    Merci beaucoup d'avance
    Manu

  2. #2
    Max
    Max est déconnecté
    Expert confirmé

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Par défaut
    Salut.

    Bon, déjà, je dois avouer que je ne trouve pas ton explication très claire . Ce que tu cherches à faire, c'est récupérer les informations dans l'AD relatives à l'utilisateur connecté à ton application ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 44
    Par défaut
    je me doutais que ca n'était pas très clair
    En fait je veux utiliser l'authetification Windows pour se connecter à l'appli, mais seulement pour ceux qui sont autorisés par l'administrateur (ceux ci sont stockés dans al base de données).
    Pour rechercher et sélectionner les personnes autorisées, j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    DirectoryEntry Ldap = new DirectoryEntry();
    DirectorySearcher searcher = new DirectorySearcher(Ldap);
    StringBuilder filter = new StringBuilder();
    filter.Append("(&(objectCategory=Person)(objectClass=user))");
    searcher.Filter = filter.ToString();
    SearchResultCollection searchResultCollection = searcher.FindAll();
    foreach (SearchResult anUser in searchResultCollection)
    {
          DirectoryEntry compteWindows = anUser.GetDirectoryEntry();
          .....
    }
    C'est là que je vais autoriser l'utilisateur Robert Dupont
    Quand un utilisateur lance l'appli, je récupère l'authentification Windows et regarde si celui ci est autorisé. C'est là que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WindowsIdentity identity = WindowsIdentity.GetCurrent();
    Le problème est que identity.Name contient Domaine\Robert alors que l'utilisateur a autorisé Domaine\Robert Dupont. Bref je récupère pas les mêmes informations dans les 2 cas...
    Je sais pas si c'est plus clair...

  4. #4
    Max
    Max est déconnecté
    Expert confirmé

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Par défaut
    Bon, OK. Déjà, de quelle BDD tu parles ? Le code que tu montres tu interroges un AD (ou un LDAP).

    Sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WindowsIdentity identity = WindowsIdentity.GetCurrent();
    Domaine c'est le nom de domaine qui correspond à ton DC AD. Robert c'est le samaccountname dans AD. Si tu veux chercher précisément si cet utilisateur est présent dans l'AD, tu rajoutes un filtre sur le samaccountname au moment de ta recherche :
    "(&(objectCategory=Person)(objectClass=user)(samaccountname=robert))"
    En même temps, à l'exception des comptes locaux, ton utilisateur est à priori obligatoirement présent dans ton AD... Tu devrais pas gérer les droits à base de groupes AD plutôt ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 44
    Par défaut
    Merci beaucoup pour ta réponse. Effectivement il faut que j'utilise la propriété
    samaccountname
    Merci beaucoup
    Manu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. DirectoryEntry IIS Access Denied
    Par MerciPourLinfo dans le forum Windows Forms
    Réponses: 0
    Dernier message: 24/03/2009, 16h21
  2. Réponses: 0
    Dernier message: 05/02/2009, 12h14
  3. Réponses: 1
    Dernier message: 02/02/2009, 13h39
  4. Réponses: 8
    Dernier message: 19/06/2006, 15h31

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