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

Framework .NET Discussion :

[.NET2][LDAP] pb de requete LDAP


Sujet :

Framework .NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Points : 14
    Points
    14
    Par défaut [.NET2][LDAP] pb de requete LDAP
    Bonjour,
    J'ai 2 annuaires AD et un autre LDAP. j'arrive à me connecter à AD. il n' y a pas de pb.
    Le pb vient de l'autre LDAP(SUN).J'ai besoin de m'y connecter pour trouver des infos J'ai une erreur dans directory service
    je fait le code suivante
    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
     
     
    'initialisation de la connexion avec l'annuaire et de l'objet de recherche
     
    Try
        ldapEntry = New DirectoryEntry("LDAP://adresseIP/ dc=fr" _
                       ,login,password)
        ldapEntry.AuthenticationType = AuthenticationTypes.Anonymous
     
        objSearcher = New DirectorySearcher(ldapEntry, strRecherche)
        objSearcher.PropertiesToLoad.Add("Matricule")
        objSearcher.PropertiesToLoad.Add("Lastname")
        objSearcher.PropertiesToLoad.Add("Jobcode")
     
        'récupération des résultats
         objResults = objSearcher.FindAll
     
         If objResults.Count = 1 Then
              Return True
         End If
                Return False
    Catch ex As Exception
                MsgBox(ex.Message & " " & ex.Source)
    Finally
            If Not (ldapEntry Is Nothing) Then ldapEntry.Close()
     
    End Try
    J'obtien l'erreur suivante : Parametre Invalide Directory services

    est ce que ca marche qu' avec AD?
    je n'ai pas de mot de passe ni de log pour me connecter j'essaie de me connecter en annonyme. Est ce que mon code est correcte?
    mon path et mon filtre fonctionnent car je les ai tester dans un ldap browser

    Merci pour toute reponses

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    J'ai mis un login et un mot de passe quelconque il me fait comme erreur
    Depassement de la limite administrative pour cette requete

    Alors que sur mon ldap BROWSER (prog JAVA) je me loggue en anonymous et je peux effectuer cette requete

    QQn à des billes dessus

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    j'ai fait un petit test
    J'obtient bien ce que je recherche
    exemple avec ldapbrowser en anonyme j'ai 2 resultats
    objetsearcher me retrouve plus de 2 resultats c'est ca qui me plante
    donc comment definir qu'il doit seulement trouver les id de ceux qu'il a droit en connection anonyme
    parce que avec un findone ca fonctionne et un findall ca m'affiche depassement de limite administrative

    une idée?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Points : 14
    Points
    14
    Par défaut Ca fonctionne mais c'est pas top
    J'ai un peu bidouiller pour que ca fonctionne en fesant ceci
    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
     
     
     
     Dim strSearchNom As String = LCase(TextBox1.Text)
     Dim conn As ADODB.Connection
     Dim rs1 As ADODB.Recordset
     Dim strUsername, strPassword
     strUsername = ""
    strPassword = ""
     
     conn = New ADODB.Connection
    conn.Provider = "ADSDSOObject"
     
    conn.Open("ADs Provider", strUsername, strPassword)
     
    rs1 = conn.Execute("<LDAP://adresseIP/ou=0 ou=XXX, dc=fr>; _
           (lastname= " & strSearchNom & "*); _
           lastname,erUid,jobcode,servicecode;subtree")
     
     rs1.MoveFirst()
     
    Dim bool As Boolean = rs1.EOF
     
     
    While Not bool
        ListBox1.Items.Add(rs1.Fields(0).Value.ToString & "/ " _ 
       & rs1.Fields(1).Value.ToString _
       & " /" & rs1.Fields(2).Value.ToString _
       & " /" & rs1.Fields(3).Value.ToString) _
     
       Try
           rs1.MoveNext()
           bool = rs1.EOF
       Catch ex As Exception
           bool = True
       End Try
     
     End While
     
    conn.Close()
    la question que je me pose c'est qu'est ce qui fait planter mon appli
    si je retire le try ca me plante au niveau du rs1.MoveNext() avec erreur depassement de limite administrative
    ma requete m'envoie donc le resultat avec qqch en plus qui fait planter l'appli

    si qqn a des bille dessus pour que je ne meure pas idiote

    merci

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par helachan
    si qqn a des bille dessus pour que je ne meure pas idiote
    Si c'est une demoiselle qui demande, je vais répondre

    Non, sérieusement: Essaye de modifier la valeur de la propriété SizeLimit en la mettant à moins de 1000:

    http://www.thescripts.com/forum/thread348610.html

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Merci pour ta réponse

    j'ai essayé de limiter la recherche en fesant objSearcher.sizelimit = 100
    ca ne fonctionne toujours pas, toujours la limite administrative
    qd je modifie la sizelimit à 1 et que je fait une requete qui me retourne un seul resultat ca me plante? toujours la limite administrative
    donc c'est pas une histoire de nombre d'objets retournés

    d'autres idée?

  7. #7
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Essaye en modifiant la propriété PageSize alors

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    je l'ai fait et il me fait l'erreur suivant :
    La valeur de la propriété page size ne peut pas etre definie

  9. #9
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Bon bah là, j'ai plus d'idées, désolé

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Points : 14
    Points
    14
    Par défaut PB de lecture des propriétés
    Bonjour,

    Ils ont migré leur annuaire vers la version superieur qui à ete entre temps acheter par IBM. Plus rien ne marche.

    avec ADODB j'obtiens l'erreur suivante lors de l'execution du code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    rs1 = conn.Execute("<LDAP://adresseIP/ou=0 ou=XXX, dc=fr>; _
           (lastname= " & strSearchNom & "*); _
           lastname,erUid,jobcode,servicecode;subtree")
    le message d'erreur est le suivant : interopexception erreur non répertorié

    J'ai ensuite utilisé API directoryServices.(code: voir message du 27/03/2007 13h17 qui fonctionne avec l'ancien annuaire qd j'ai un compte qui permet la lecture )
    je trouve bien ceux que je recherche mais quand j'essaye de lire la valeur d'une propriété j'obtiens l'erreur suivante. Unknown error (0x8000500c)

    qqn peut il m'aider à resoudre ce probleme très urgent

    merci

    Cordialement

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Points : 14
    Points
    14
    Par défaut Touvé
    Re bonjour,
    J'ai trouvé la solution à mon probleme sur ce poste
    http://www.eggheadcafe.com/forumarch...st25248709.asp
    En gros le probleme venait de l'ADSI qui n'arrive pas à lire le shema IBM
    Il conseille d'utiliser l'API System.DirectoryServices.Protocols

    Je vais essayer de programmer avec cette API mais j'ai pas trouvé grand chose dessus.
    Si qqn a des exemples dessus je suis preneuse

    merci

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Points : 14
    Points
    14
    Par défaut Eureka
    j'ai trouvé mon bonheur ici
    http://msdn2.microsoft.com/en-us/library/bb332056.aspx

    je vais vous mettre mon code pour vous en faire profiter:
    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
    'ldapServerName = adresse IP du serveur LDAP
    'userName du type uid=toto,cn=users,dc=world, dc=localnet
    _targetOu l'OU où se trouve les elements recherchés
    
    Public Function Connect(ByVal ldapServerName As String, ByVal userName As String, ByVal password As String) As LdapConnection
      'to use LDAP calls, you must first connect to the directory.
       Try
           'creation d'une connection LDAP
           Dim id As New LdapDirectoryIdentifier(ldapServerName, False, False)
           Dim nc As New NetworkCredential(userName, password)
           connection = New LdapConnection(id)
           With connection
                  .Credential = nc
                  .AuthType = AuthType.Basic
                  .Timeout = New TimeSpan(0, 5, 60)
                  .SessionOptions.ProtocolVersion = 3
            End With
            Return connection
            Catch e As Exception
                Console.WriteLine("\r\nErreur:\r\n\t" + e.GetType().Name + ":" + e.Message)
                Return Nothing
            End Try
    
        End Function
    
    Public Function getUsersLDAP(ByVal strNameSearch As String) As ArrayList
       Dim arrProperties(1) As String
       Dim strRecherche As String = ""
       Dim r As New ArrayList
       'initialisation des propriétés à récupérer dans le LDAP
       arrProperties(0) = "sn"
       arrProperties(1) = "givenName"
    
        'initialisation du filtre de recherche
        strRecherche = "(sn=" + strNameSearch + "*)"
    'initialisation de la connexion avec l'annuaire et de l'objet de recherche
        connection = Me.Connect(_ldapServerName, _login, _motPasse)
    
        Dim resultat As New ArrayList
        Dim sb As New StringBuilder(50)
        Try
           '// creation d'un filtre
           Dim SearchRequest As SearchRequest = New SearchRequest()
           With SearchRequest
                 .Scope = Protocols.SearchScope.Subtree
                 .DistinguishedName = _targetOu
                 .Filter = strRecherche
            End With
            Dim searchResponse As SearchResponse = CType(connection.SendRequest(SearchRequest), SearchResponse)
            Console.WriteLine("\r\nNombre de réponse:{0}", searchResponse.Entries.Count)
    
             '// creation de la liste de réponse de la recherche
             For Each entry As SearchResultEntry In searchResponse.Entries
                    Console.WriteLine("{0}:{1}", searchResponse.Entries.IndexOf(entry), entry.DistinguishedName)
                sb.Remove(0, sb.Length)
                For Each attr As String In arrProperties
                    If Not (entry.Attributes(attr) Is Nothing) Then
                       sb.Append(entry.Attributes(attr).Item(0))
                       sb.Append(" ")
                    End If
                Next
                resultat.Add(sb.ToString)
            Next
            Return resultat
            Catch ex As Exception
                '    Console.WriteLine("\nerreur:\n\t{0}: {1}", ex.GetType().Name, ex.Message)
                Return Nothing
            End Try
        End Function

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

Discussions similaires

  1. [MySQL] [requete LDAP] Prendre le nom de l'OU
    Par bullrot dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/04/2009, 11h33
  2. Requete LDAP AD
    Par jules418 dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 26/03/2008, 08h59
  3. requete LDAP pour supprimer un user
    Par adel.87 dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 13/03/2008, 20h52
  4. Réponses: 2
    Dernier message: 14/03/2007, 19h33
  5. Erreur losr de requete LDAP
    Par pimousse9 dans le forum Web & réseau
    Réponses: 1
    Dernier message: 15/08/2005, 12h56

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