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

API, COM et SDKs Delphi Discussion :

Authentification sur un serveur LDAP


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Par défaut Authentification sur un serveur LDAP

    j'ai créé une application ou des utilisateurs doivent s'authentifier on utilisant leurs login Active Directory (LDAP).
    j'arrive a faire ça en utilisant la Commande ADsOpenObject mais je sent que c'est pas la meilleur solution.

    Déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      function ADsOpenObject(lpszPathName: PWideChar;
      lpszUserName: PWideChar; lpszPassword: PWideChar;
      dwReserved: LongInt; const riid: TGUID; out obj): HResult;
       stdcall; external 'activeds.dll';
    Appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Hr := ADSOpenObject('LDAP://cieptalcars',Edit1.Text,Edit2.Text,ADS_SECURE_AUTHENTICATION,IID_IADs,Outt);
    if hr = S_OK then
     ShowMessage('Connection Avec succées')
     else
      ShowMessage(IntToStr(Hr));
    j'ai le résultat souhaité mais je pense que cette commande fait plus qu'une authentification cars c'est un peut long et Vu le Open ADSOpenObject

    existe t'il une autres solution j'ai cherché et je suis tombé sur des commandes API
    que je n'est pas encore su encore les utilisés (NetAccessCheck)

    si quelqu'un peut m'aider sa serais appréciable.
    NB : Je trouve le support msdn un peut pauvre (manque d'exemple d'utilisation)

  2. #2
    Membre Expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Par défaut
    j'ai omis de dire qu'il faut :
    • Transtypé les variables text en PWideChar
    • est de déclarer outt comme Pointer.
    • déclarer l'unités ActiveDs_TLB que vous devrais préalablement importé

    pour que le transtypage réussit on doit passer par des variable WideString pour que celui-ci ne soit pas ambigu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    procedure TForm1.Button1Click(Sender: TObject);
    var  Hr : HResult;
         outt :Pointer;
         Username,Password : WideString;
    begin
     Username :=Edit1.Text;
     PassWord:= Edit2.Text;
    Hr := ADSOpenObject('LDAP://cieptalcars',PWideChar(Username),PWideChar(Password),ADS_SECURE_AUTHENTICATION,IID_IADs,Outt);
    if hr = S_OK then
     ShowMessage('Connection Avec succées')
     else
      ShowMessage(IntToStr(Hr));
    end;

  3. #3
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 081
    Par défaut
    Dans le Titre, tu devrais ajouter "LDAP MicroSoft", car ADSI contenu dans activeds.dll, ne fonctionne qu'avec Active Directory si j'ai bien compris, je suis justement, en plein dedans, je dois utiliser un LDAP sur un Linux, j'ai voulu tenter ADO (avant d'essayer des API spécifiques, voire resteindre à MicroSoft) Pour le moment, avec ADO ça ne passe pas car je n'ai pas trouver le Provider a renseigner (Driver a installer ???)
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 081
    Par défaut
    J'ai tenté d'utiliser les API que tu indique aityahia (bon j'ai mis tous les paramètres en dur pour le moment)

    J'ai le code erreur "8007001F" et selon la MSDN cela donne LDAP_OTHER, ERROR_GEN_FAILURE = "Unknown error".

    J'aurais préféré une erreur comme quoi mon serveur n'est pas actif (j'ai pris le serveur de domaine car d'après ce que j'ai pu voir, cela contient l'ensemble des users dans Active Directory), j'ai donc essayé de me connecter avec mon login et mot de passe, mais cela ne passe pas (évidemment, je n'ai pas le pass de l'admin, sinon ça serait trop facile)

    EDIT : en Appelant ADsGetObject au lieu de ADSOpenObject, j'ai "80072030" = "Object does not exist.", bon, donc ma cible est bonne ce sont mes dc et cn qui sont foireux (et personne n'y connait quelque chose au bureau)

    EDIT 2 : Lol j'ai testé ADsGetObject sur mon LDAP sur le Linux, cela se connecte ! mais ADSOpenObject échoue !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Hello,

    je viens de mettre en ligne un code LDAP natif Delphi

    http://lookinside.free.fr/delphi.php?LDAP
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 704
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    Hello,

    je viens de mettre en ligne un code LDAP natif Delphi

    http://lookinside.free.fr/delphi.php?LDAP
    J'ai essayé, mais la fonction LDAPSearch ne trouve jamais rien. (http://www.developpez.net/forums/sho...d.php?t=452824)




    Sinon, ADO ne trouve rien (dans une DLL).
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  7. #7
    Membre Expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Par défaut
    Salut shai.
    c'est vrai que j'ai pas testé avec un serveur Linux meme avec IPlanet, d'ailleur je m'apprete a déployer mon application chez un client je sais meme pas quel type de serveur il utilise.
    je vais faire des recherche et je vous tiendrais au courant.

    @

  8. #8
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 081
    Par défaut
    Bon, par ADO, j'ai beau bidouillé dans tous les sans la connectionstring et le SQL (dont en fait j'ignore la syntaxe pour LDAP)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Provider=ADsDSOObject;Password=ahah;User ID=shai;Encrypt Password=False;Data Source=192.168.1.1;Location="dc=toto,dc=tata";Mode=Read;Bind Flags=0;ADSI Flag=-2147483648
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT AdsPath, CN, SN FROM "LDAP://dc=toto,dc=tata"
    ce ne passe pas du tout

    mais par l'API, cela fonctionne sans mettre ADS_SECURE_AUTHENTICATION

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Hr :=  ADSOpenObject('LDAP://192.168.1.1/dc=toto,dc=tata', 'cn=shai,ou=contacts,dc=toto,dc=tata', 'ahah', 0, IID_IADs, Outt);  // fonctionne sur Linux !
    Comment sur Active Directory, connait ton le nom distingué LDAP d'un item ?


    @Paul Toth, tu es une vraie brute, ton code est super court pour LDAD, je le testerais aussi dès que j'aurais du temps ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. authentification sur un serveur
    Par judy-brainy dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 07/10/2011, 09h04
  2. Réponses: 8
    Dernier message: 15/04/2009, 14h21
  3. question sur couplage serveurs ldap,web,dns
    Par tenderstoune dans le forum Réseau
    Réponses: 2
    Dernier message: 29/02/2008, 15h07
  4. [WinCVS] problème d'authentification sur un serveur CVS distant
    Par lin_connu dans le forum CVS
    Réponses: 0
    Dernier message: 28/01/2008, 14h58
  5. Authentification via un serveur LDAP
    Par jh0483 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 16/01/2006, 06h53

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