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

VB.NET Discussion :

Ldap MemberOf - Afficher les groupes d'un utilisateur dans une ListBox


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 18
    Par défaut Ldap MemberOf - Afficher les groupes d'un utilisateur dans une ListBox
    Bonjour,

    Je rencontre un problème avec l'affichage des groupes d'un utilisateur en provenant de l'Active Directory vers ma ListBox.

    En effet, lorsque je lance le code, il m'affiche la listes des groupes sous cette forme:

    CN=XXX,OU=XXX etc etc

    et autant de fois que le user a de groupes dans son compte.

    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For i As Integer = 1 To 100
     
                'ListBox_User_MemberOf.Items.Add(i.ToString(Search_User_Informations(TextBox_Username.Text, "memberOf")))
                ListBox_User_MemberOf.Items.Add(Search_User_Informations(TextBox_Username.Text, "memberOf") & i.ToString())
     
            Next i
    1ère question: Est-ce que mon code For i As Interger est correct, c'est-à-dire est-ce qu'il joue bien son rôle d'ajout d'une nouvelle ligne pour chaque groupe trouvé?

    2ème question: Comment faire pour afficher le "vrai" nom de chaque groupe (par exemple Gu_Administrateur au lieu de CN=XXX,OU=XXX)?

    Merci

  2. #2
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 18
    Par défaut
    Bonjour,

    Pouvez-vous svp m'aider à ce sujet?

    La propriété memberOf ne m'affiche qu'un seul groupe pour l'utilisateur, alors que celui-ci en a beaucoup plus.

    Je poste ici le mon code (la fonction m'a été fournie par SainteLaitLait):

    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
     
     
    Public Function Search_User_Informations(ByVal AD_Username As String, ByVal AD_Propriete As String) As String
            Try
     
                Dim mydirentry As New DirectoryEntry("LDAP://rootDSE")
                Dim searcher As New DirectorySearcher("LDAP://rootDSE")
     
                'Au départ, la valeur est vide
                Dim StrRetADInfo As String = ""
     
                'Spécifier la propriété Ã* rechercher. Si plusieurs, faire d'autres .add()
                searcher.PropertiesToLoad.Add(AD_Propriete)
     
                'Spécifier le filtre du searcher, la condition si tu veux.
                searcher.Filter = "(anr=" & AD_Username & ")"
     
                'Déclarer la variable qui va contenir les résultats, qui sont une collection
                Dim results As SearchResultCollection
     
                'On dit a notre searcher de trouver tout ce qui concorde avec propertiesToLoad et Filter.
                'Stockage de la collection renvoyée par le searcher dans results
                results = searcher.FindAll()
     
                'Exploration de la collection avec un for each
                'Cela permet d'avoir accès aux propriétés des membres de la collection sans devoir travailler avec les indices du tableau
                For Each result As SearchResult In results
                    'result représente un item dans la collection qu'est results
                    'chaque item de la collection a un attribut Properties, qui est un tableau avec les
                    'résultat de la recherche.On utilise la variable AD_Propriete pour que ce soit dynamique.
                    'Imagine que ca donne :(properties(profilePath)(0) lorsque AD_Propriete vaut "profilePath".
                    'C'est donc un tableau Ã* deux dimensions. L'axe des x est représenté 
                    'par les propriété recherchée, et l'axe des y sont les infos relatives Ã* chaque propriété
                    StrRetADInfo = (result.Properties(AD_Propriete)(0)).ToString
                Next
     
                'Retour de la valeur trouvée
                Return StrRetADInfo
     
     
            Catch ex As Exception
     
                'Si aucune valeur est retournée, on attribut une valeur
                StrErreur = ""
                Return StrErreur
     
            End Try
     
        End Function
     
    ...
     
      Private Sub Button_Load_Informations_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Load_Informations.Click
     
    Dim SAMAccountName As String = Search_User_Informations(TextBox_User_UserId.Text, "SAMAccountName")
     
    If SAMAccountName <> "" Then
    For Each MemberOf_Results As Object In Search_User_Informations(TextBox_User_UserId.Text, "memberOf")
    TextBox1.Text = Replace(Split(Search_User_Informations(TextBox_User_UserId.Text, "memberOf"), ",")(0), "CN=", "", 1, -1, 1)
    Next
    Else
    TextBox1.Text = ""
    End If
    Merci

  3. #3
    Membre confirmé Avatar de mohamed301084
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2010
    Messages : 104
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    ''' <summary>
        ''' Retourne le(s) rôle(s) de l'utilisateur passé en parametre 
        ''' </summary>
        ''' <param name="user"> </param>
        ''' <returns> Un tableau avec les rôles attribués à l'utilisateur dans AD </returns>
        ''' <remarks> Retourne Nothing sinon</remarks>
        Private Function GetRoles(ByVal user As String) As String()
     
            Dim propertyCount As Integer
     
            'Initialisation du tableau avec 10 String "" 
            Dim roles As String()
            roles = New String(10) {}
     
            Dim myDE As New System.DirectoryServices.DirectoryEntry("LDAP://NOMDOMAINE", "userActiveDirectory", "mdpActiveDirectory")
            Dim mySearcher As New DirectorySearcher(myDE)
            mySearcher.Filter = "sAMAccountName=" & user
            mySearcher.PropertiesToLoad.Add("memberOf")
     
            Try
                Dim myresult As SearchResult = mySearcher.FindOne()
                propertyCount = myresult.Properties("memberOf").Count
     
                Dim dn As String
                Dim equalsIndex, commaIndex As String
                For i As Integer = 0 To propertyCount - 1
                    dn = myresult.Properties("memberOf")(i).ToString
                    equalsIndex = dn.IndexOf("=", 1).ToString
                    commaIndex = dn.IndexOf(",", 1).ToString
                    If equalsIndex = "-1" Then
                        Exit For
                    End If
                    roles(i) = dn.Substring((CInt(equalsIndex) + 1), (CInt(commaIndex) - CInt(equalsIndex)) - 1)
                Next
     
            Catch ex As Exception
     
                If ex.GetType Is GetType(System.NullReferenceException) Then
                    'they are still a good user just does not 
                    'have a "memberOf" attribute so it errors out.
                    'code to do something else here if you want
                    roles = Nothing
                End If
            End Try
     
            Return roles
     
        End Function

    Voici ce que tu cherches,


    je te laisse mettre le tableau dans ta listbox

  4. #4
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 18
    Par défaut
    salut mohamed301084,

    merci pour ton post

    je vais faire mon neuneux....je n'arrive pas à afficher la liste dans ma listbox

    voici mon code (suis certain que je suis à côté de la plaque)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            For Each MemberOf_Results As Object In GetRoles(TextBox1.Text)
                   ListBox1.Items.Add(Replace(Split(GetRoles(TextBox1.Text), ",")(0), "CN=", "", 1, -1, 1))
            Next
     
        End Sub
    Encore merci pour ton aide.

    Salutations.

  5. #5
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 18
    Par défaut
    Salut,

    J'ai également testé simplement avec les 2 codes suivants mais cela ne fonctionne pas non plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Button1_Click(ByVal Sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
    ListBox1.Items.AddRange(GetRoles(TextBox1.Text))
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Button1_Click(ByVal Sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
    ListBox1.Items.Add(GetRoles(TextBox1.Text))
     
    End Sub
    Please Help

Discussions similaires

  1. Récupérer les groupes d'un utilisateur dans LDAP
    Par Invité dans le forum Langage
    Réponses: 0
    Dernier message: 01/09/2010, 10h59
  2. Afficher les images d'un dossier dans une IHM
    Par danathane dans le forum Langage
    Réponses: 4
    Dernier message: 26/06/2008, 15h27
  3. Réponses: 7
    Dernier message: 18/01/2007, 15h03
  4. Afficher les élements d'un formulaire dans une autre fenetre
    Par BernardT dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/12/2005, 22h52

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