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

Web & réseau Delphi Discussion :

[LDAP] [D7] [NT] problème de compatibilité avec Win NT [FAQ]


Sujet :

Web & réseau Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 73
    Points
    73
    Par défaut [LDAP] [D7] [NT] problème de compatibilité avec Win NT
    Bonjour à tous,

    Voila j'ai fait une application qui en autre se connecte à un annuaire LDAP. Pour se faire j'ai utilisé une connexion via un ADOconnexion que j'ai paramétré de la facon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ConnectionString:
    Provider=ADsDSOObject;Encrypt Password=False;Integrated Security=SSPI;Data Source=NIS;Mode=Read;Bind Flags=0;ADSI Flag=-2147483648
    Celà marche à la perfection sur des plateformes XP, Win2000. Mais par contre quand je teste sur une machine ou il y a NT, ca coince.
    Je suppose qu'il y a une dll qui n'est pas à jour ou quelque chose du genre, mais je ne sais pas du tout comment m'y prendre pour repérer laquelle.

    Si quelqu'un a une idée, elle est la bienvenue.

    Merci d'avance

    Vince

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut Re: [LDAP] [D7] [NT] problème de compatibilité avec Win NT
    Citation Envoyé par plante20100
    Si quelqu'un a une idée, elle est la bienvenue.
    As-tu vérifier si la distrib ADO est à jour sur NT 4 ?
    est-ce qu'il y a un message d'erreur dans l'EventLog ?
    As-tu tracer les appel dans ton appli ?
    L'interrogation par un autre biais WMI et/ou VBScript provoque la même erreur ?

    Et sinon ça coince à quel niveau ? Au niveau des manches ou du col

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 73
    Points
    73
    Par défaut
    Bonjour,

    Merci de ta réponse,

    1.
    ça coince à quel niveau ? Au niveau des manches ou du col
    Alors dans mon appli j'ai bien localisé l'endroit où se produit le message d'erreur. C'est quand j'appelle la création de la forme sur laquelle il y a les composants ADO qui me permettent de me connecter à mon annuaire.

    2.
    As-tu tracer les appel dans ton appli ?
    Si par la tu veux dire regarder toutes les bibliothèques qu'appelle l'appli, oui je l'ai fait (grâce à Dependency Walker) et il n'y a pas de bibliothèque manquante

    3.
    As-tu vérifier si la distrib ADO est à jour sur NT 4 ?
    Je voudrais bien mais je ne sais pas comment faire.....

    4.
    est-ce qu'il y a un message d'erreur dans l'EventLog ?
    Le message d'erreur que j'ai c'est le fournisseur n'a pas été trouvé..
    Et je n'ai rien dans le event log

    Voila j'ai installé Mdac 2.8 mais ca ne change rien. Comment je pourrais faire pour trouver la version de la disturb ADO?

    vince

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 73
    Points
    73
    Par défaut
    Il y a aussi un autre truc, quand je regarde dans Dependency walker, mon appli est entrain d'interroger la bibliothèque USER32.dll quand l'erreur se produit.
    Donc voila je sais pas si ca dit quelque chose à quelqu'un.

    Merci en tout cas d'avance pour vos suggestions

    vince

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    Il n'y a pas un client Active Directory à installer sous NT4, puisque ce n'est pas gérer en natif par NT4

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 73
    Points
    73
    Par défaut
    et ben je sais pas si c'est vraiment necessaire dans mon cas étant donné que j'essaie d'accéder à un annuaire de type OpenLDAP.

    J'ai cru comprendre que les composants d'Active Directory était dédié au annuaire Microsoft.

  7. #7
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Regarde ici
    http://www.microsoft.com/ntworkstation/downloads/Other/adclient.asp

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    Citation Envoyé par plante20100
    et ben je sais pas si c'est vraiment necessaire dans mon cas étant donné que j'essaie d'accéder à un annuaire de type OpenLDAP.

    J'ai cru comprendre que les composants d'Active Directory était dédié au annuaire Microsoft.
    L'Active directory est très proche de LDAP, MS a juste créé une version propriétaire de LDAP.

    Je pense que mdac utilse les services du client ad pour accéder à ldap. A vérifier

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 73
    Points
    73
    Par défaut
    bonjour à tous,
    Merci pour vos réponses mais helas... ca ne marche toujours pas.
    J'ai installé l' Active Directory Client Extensions for NT Workstation 4.0 sur lequel pointait le lien de Laurent Dardenne (au passage merci). Ca ne marche pas non plus, bien que le message d'erreur ait changé.
    Avant j'avais
    le fournisseur n'a pas été trouvé, vérifier qu'il est bien installé
    et maintenant c'est plutot
    erreur non spécifiée
    ... pas beaucoup plus avancé .
    si vous avez d'autres idées elles sont les bienvenues

    vince

    PS: il y a quelque chose qui est étrange comme meme, c'est que outlook qui est installé sur les stations Nt, arrive à se connecter à l'annuaire pour en sortir les adresses mail....

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    Selon la configuration d'outlook et la messagerie, il fait des requêtes ldap (via le client intégré) ou des requetes vers Exchange, c'est complétement indépendant d'AD.

    Il faut peut être reconfigurer MDAC ou le resintaller.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 73
    Points
    73
    Par défaut
    OK,
    Pour ce qui est de MDAC, j'ai déja reinstallé la dernière version mais ca n'a rien changé....

    Je pense que je vais pas tarder à aller me pendre à la plus haute branche d'un chêne.

    Mais merci comme meme de ta réponse et de te pencher sur mon problème

    vince

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    Peut être que tu n'as pas installé le bon client, celui là me semble plus adapté: http://www.microsoft.com/ntserver/nts/downloads/other/ADSI25/default.asp

    Sinon tu as la possibilité de passer par l'api Wldap32.dll
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ldap/ldap/functions.asp

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 73
    Points
    73
    Par défaut
    merci pour tes liens.

    Bon j'ai installer le client que tu m'as indiqué mais malheureusement ca ne change absolument rien . J'ai toujours le meme message d'erreur.

    Quant à refaire mon appli en utiliant l'API Wldap32.dll, ca ne m'enchante pas vraiment... J'avais déja un peu essayé avant d'opter pour les composants ADO et ca ne m'avait pas inspiré plus que ca.... Mais c'est vrai que si rien d'autre ne marche je serais bien obligé d'y passer.

    En tout cas merci pour tes conseils

    Vince

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    A mon avis tu devrais poster dans un forum plus spécialisé sur les technologie MS ou directement dans les newsgroups MS pour savoir si c'est vraiment non supporté.

  15. #15
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Essaie avec VBScript :
    Lists Active Directory sites.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Set objRootDSE = GetObject("LDAP://RootDSE")
    strConfigurationNC = objRootDSE.Get("configurationNamingContext")
     
    strSitesContainer = "LDAP://cn=Sites," & strConfigurationNC
    Set objSitesContainer = GetObject(strSitesContainer)
     
    objSitesContainer.Filter = Array("site")
     
    For Each objSite In objSitesContainer
        WScript.Echo objSite.Name
    Next

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 73
    Points
    73
    Par défaut
    merci pour ton code mais j'ai un petit souci il me dit que:
    la propriété Active directory n'est pas présente dans le cache
    Ca me fait ca alors que je suis sur mon poste W2k.
    Est-ce qu'il y a une référence spéciale à rajouter? J'ai cherché mais sans rien trouvé de très concluant.

    Merci d'avance.
    Vince

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 73
    Points
    73
    Par défaut
    C'est juste pour vous dire que ca y ait je suis arrivé au bout de mes peines.
    Il fallait bien installer le patch que préconisait Laurent Dardenne (merci beaucoup au passage).

    Mais ce que je n'ai pas compris c'est que ca ne fonctionnait que quand j'enlevais la déclaration de la connectionstring dans l'inspecteur d'objet et que je l'attribuait dans mon code....

    Et en fait quand je tronque ma connectionstring pour ne garder que :

    ConnectionString:
    Provider=ADsDSOObject;
    Ca marche dans l'inspecteur d'objet.... allez comprendre quelque chose

    En tout cas ca prouve une chose c'est quand on fait du copier/coller (ce que j'avais fait pour la connectionstring) sans chercher à comprendre ce qu'il y a derrière, c'est toujours source de problème...

    Encore une fois merci pour votre aide, en espérant pouvoir vous rendre un jour la pareil...

    Vince

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    Est ce que tu pourrais poster un exemple de connexion et de requete LDAP ?

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 73
    Points
    73
    Par défaut
    Voila une petite appli qui permet de se connecter à un annuaire LDAP type OpenLDAP (elle marche aussi peut etre avec des annuaires type Active Directory mais j'ai pas testé) et de faire une requete.


    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
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Grids, ValEdit, StdCtrls, DB, ExtCtrls, DBCtrls, DBGrids, ADODB,strutils;
     
     
    type
      TForm1 = class(TForm)
        ADOConnection1 : TADOConnection;
        ADOQuery1 : TADOQuery;
        DataSource1 : TDataSource;
        Button1 : TButton;
        ListBox1: TListBox;
        Edit1: TEdit;
        Label1: TLabel;
        Label2: TLabel;
        Button2: TButton;
        ComboBoxQuoi: TComboBox;
        Label3: TLabel;
        ComboBoxTypeQui: TComboBox;
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure RunConnexion(Sender: TObject);
        procedure Terminer(Sender: TObject);
        procedure FormActivate(Sender: TObject);
      private
        { Private declarations }
      public
        sold:string;
      end;
     
    var
      Form1 : TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Adoquery1.Active := false;
      adoquery1.Free;
      adoconnection1.Close;
      adoconnection1.Free;
    end;
     
     
    procedure TForm1.RunConnexion(Sender: TObject);
    var Req, Qui, Quoi, TypeQui : string;
        Save_Cursor : TCursor;
        I, nb : integer;
        FieldValNameVariant : variant;
    begin
      Save_Cursor := Screen.Cursor;
      Screen.Cursor := crHourGlass;
      adoquery1.Active := false;
      adoquery1.SQL.Clear;
      Listbox1.Clear;
      Qui := Edit1.Text;
      Quoi := ComboboxQuoi.text;
      TypeQui := ComboboxTypeQui.text;
     
      if (Qui = '') then
        showmessage('Il faut remplir le champs Qui')
      else
        begin
          ADOConnection1.ConnectionString:='Provider=ADsDSOObject';
          ADOConnection1.LoginPrompt:=false;
          ADOConnection1.Connected:=true;
          datasource1.DataSet := adoquery1;
          Req := 'SELECT ' + Quoi + ' FROM ''LDAP://l'adresse de ton annuaire:389/o=Your Organization,c=fr'' WHERE objectClass = ''inetOrgPerson'' AND ' + TypeQui + ' = ''' + Qui + '''';
          adoquery1.SQL.Add(Req);
          try
            adoquery1.Active := true;
            nb := datasource1.DataSet.RecordCount;
            if (nb > 0) then
              begin
                datasource1.DataSet.FindFirst;
                FieldValNameVariant := datasource1.DataSet.FieldByName(Quoi).AsVariant;
                if (not datasource1.DataSet.FieldByName(Quoi).IsNull) then
                  Listbox1.Items.Add(datasource1.DataSet.FieldByName(Quoi).AsVariant[0]);
              end;
            for I:=2 to nb do
              if (datasource1.DataSet.FindNext) then
                if (not datasource1.DataSet.FieldByName(Quoi).IsNull) then
                  Listbox1.Items.Add(datasource1.DataSet.FieldByName(Quoi).AsVariant[0]);
          except
            on E: Exception do
              showmessage (E.Message);
          end;
        end;
        Screen.Cursor := Save_Cursor;  // Always restore to normal
    end;
     
    procedure TForm1.Terminer(Sender: TObject);
    begin
      Form1.Close;
    end;
     
    procedure TForm1.FormActivate(Sender: TObject);
    begin
      ComboboxQuoi.clear;
      ComboboxQuoi.Items.Add('sn');
      ComboboxQuoi.Items.Add('cn');
      ComboboxQuoi.Items.Add('givenName');
      ComboboxQuoi.Items.Add('mail');
      ComboboxQuoi.Items.Add('uid');
      ComboboxQuoi.ItemIndex := 0;
     
      ComboBoxTypeQui.clear;
      ComboBoxTypeQui.Items.Add('sn');
      ComboBoxTypeQui.Items.Add('cn');
      ComboBoxTypeQui.Items.Add('givenName');
      ComboBoxTypeQui.Items.Add('mail');
      ComboBoxTypeQui.Items.Add('uid');
      ComboBoxTypeQui.ItemIndex := 0;
    end;
     
    end.
    Voila merci encore au forum sans qui je serais encore à chercher ce que LDAP veut dire .

    A bientôt

    Vince

  20. #20
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par plante20100
    Il fallait bien installer le patch que préconisait Laurent Dardenne (merci beaucoup au passage).
    Certes, mais c'est cpdump qui a donné le la
    Citation Envoyé par cpdump
    Il n'y a pas un client Active Directory à installer sous NT4, puisque ce n'est pas gérer en natif par NT4
    Je me permet juste une bémol

    ps
    Pour ton code on peut l'utiliser sans autre info ?
    C'est pour la FAQ Delphi Win32.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. problème de compatibilité avec Firefox
    Par aztec dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/08/2006, 14h42
  2. Problème de compatibilité avec firefox
    Par djnext dans le forum Mon site
    Réponses: 4
    Dernier message: 15/08/2006, 23h39
  3. Problème de compatibilité avec DreamWeaver 8.
    Par ok---Où dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 06/07/2006, 20h27
  4. [CKEditor] Problème de compatibilité avec FireFox
    Par FzF dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 28/06/2006, 16h07
  5. Problème de compatibilité avec IE ?¿
    Par artotal dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 13/01/2006, 04h14

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