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

Delphi Discussion :

Connexion serveur LDAP avec Delphi


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 7
    Par défaut Connexion serveur LDAP avec Delphi
    Bonjour,

    J'aurais besoin de créer une solution d'authentification qui utiliserait en fait le login et password d'un utilisateur d'un serveur LDAP. Pour cela il faudrait que je me connecte à un serveur LDAP et que je valide ou non la connexion avec le combo login/password (j'imagine).
    Le problème c'est que j'en suis quasiment au stade zéro. J'ai effectué beaucoup de recherches, sur ce forum, sur d'autres anglais et français, et je ne trouve rien de convaincant. Soit je n'arrive pas à mettre en oeuvre la solution, soit elle est dépassée et ne compile même plus.
    De plus, j'aurais voulu que cette solution fonctionne à la fois sous windows, et à la fois sous linux, donc j'imagine que les solutions à base de activeds.dll sont donc à proscrire pour ce cas...

    Ce qui m'a paru le plus intéressant pour le moment est le travail de Paul TOTH que voici. Malheureusement je n'arrive même pas à passer la case connexion (honte à moi ?).

    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
     
    procedure login(const user,pass:string; var id,FullName:string);
    var
     ldap:integer;
     dn  :string;
    begin
     ldap:=LDAPOpen('ldap_serveur');
     if (ldap=INVALID_SOCKET) then raise Exception.Create('Serveur de sécurité introuvable');
     try
      dn:=LDAPSearch(ldap,user);                             
      if (dn='') then raise Exception.Create('Compte inconnu');
      if LDAPBind(ldap,dn,pass)=false then raise Exception.Create('Mot de passe invalide');
      id:=LDAPAttribute(ldap,dn,'EmployeeID');
      if id='' then raise Exception.Create('Annuaire incomplet');
      FullName:=LDAPAttribute(ldap,dn,'cn');
     finally
      LDAPClose(ldap);
     end;
    end;
    J'ai trouvé un serveur LDAP de test sur le web, avec lequel j'arrive à me connecter avec Apache Studio. Voici le lien pour les curieux.

    Donc dans le code ci-dessus je remplace 'ldap_serveur' par 'ldap.forumsys.com' mais erreur... Suis-je totalement à côté de la plaque ?

    Merci beaucoup à ceux qui m'aideront.

  2. #2
    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 : 56
    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
    Bonjour,

    Attention, cette unité d'un autre age utilise des String Ansi, le code ne peut pas fonctionner sur un Delphi >= 2009

    il faut au minimum remplacer tous les String par AnsiString ou RawByteString et les Char par AnsiChar...ou réécrire le tout avec un type binaire comme TBytes mais celui-ci n'offre pas la même souplesse.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 7
    Par défaut
    Ah, je me disais bien aussi...
    Du coup quelle serait la meilleure solution selon toi ? La seule que j'ai vue pour l'instant c'est le composant IPWorks mais à 2k balles le composant...
    Connaîtrais-tu des alternatives ?

  4. #4
    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 : 56
    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
    Citation Envoyé par MivGabin Voir le message
    Ah, je me disais bien aussi...
    Du coup quelle serait la meilleure solution selon toi ? La seule que j'ai vue pour l'instant c'est le composant IPWorks mais à 2k balles le composant...
    Connaîtrais-tu des alternatives ?
    si tu ne veux pas tester le Recherche/Remplace de String en RawByteString, je peux te facturer la prestation

    sinon je crois savoir que Windows possède une API LDAP mais je ne l'ai jamais utilisée et je ne sais pas si elle est déclarée en standard dans Delphi
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 7
    Par défaut
    Malheureusement même en changeant les strings, je ne parviens à aucun résultat.
    Concernant l'API windows, j'imagine qu'elle ne me permettrait que la connexion à un active directory et exit l'OpenLDAP?

  6. #6
    Membre émérite Avatar de sergio_is_back
    Homme Profil pro
    Consultant informatique industrielle, développeur tout-terrain
    Inscrit en
    Juin 2004
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant informatique industrielle, développeur tout-terrain
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 187
    Par défaut
    Pourquoi ne pas utiliser une connexion ADO ? (TADOConnection) avec le provider ADsDSOObject...

    Voici un petit exemple trouvé rapidement http://delphi.cjcsoft.net/viewthread.php?tid=45953
    Mais y'en a plein d'autres sur la façon d'accéder à LDAP via le fournisseur d'accès MSAD pour OLEBD

    https://docs.microsoft.com/fr-fr/sql...ql-server-2017

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

Discussions similaires

  1. connexion à BD interbase avec Delphi
    Par Abou Zar dans le forum Bases de données
    Réponses: 6
    Dernier message: 14/06/2010, 19h25
  2. Problème de connexion serveur ftp avec vsftpd
    Par petitclem dans le forum Réseau
    Réponses: 22
    Dernier message: 18/06/2008, 15h22
  3. [AD] se connecter au serveur LDAP avec un client LDAP de base
    Par novices dans le forum Windows Serveur
    Réponses: 5
    Dernier message: 24/04/2007, 18h17
  4. Réponses: 5
    Dernier message: 15/03/2007, 09h52
  5. connexion a ldap avec java
    Par himachalene dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 05/12/2006, 19h15

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