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

Powerbuilder Discussion :

[PowerBuilder] LDAP et Dlls /COM


Sujet :

Powerbuilder

  1. #1
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut [PowerBuilder] LDAP et Dlls /COM
    Bonjour,

    J'utilise Powerbuilder (eh oui...). Je dois mettre en place un système de connexion utilisant le LDAP. Donc j'ai beau parcourir ce forum, la MSDN, je ne trouve que des exemples en VB ou en Delphi qui utilisent des objets implémentés dans le langage en lui-même.

    PowerBuilder ( 8.0 ) est un peu aux paquerettes (et depuis longtemps) donc je n'ai rien dans la doc PB qui parle du LDAP. Le cotnraire m'aurait étonné. Je cherche donc des DLLs ou des objets COM qui me permettrait de valider une authentfication.

    Voilà l'algorithme que je veux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1-L'utilisateur entre son login et son mot de passe
    2-J'envoie cela au LDAP
    3-Je récupère true ou false
    Rien de sorcier. Mais comment j'interroge ce LDAP, par quel objet je passe ? J'ai lu des trucs sur la adsldp.dll , mais aucun point d'entrée dan cette DLL. Où puis je trouvé celà ? J'ai pourtant bien lu que cela fonctionnait comme les API !
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  2. #2
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    J'ai trouvé la solution, il s'agit de la DLL ADVAPI.DLL
    Il faut utiliser la fonction USERLOGON
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    LogonUser
    The LogonUser function attempts to log a user on to the local computer. The local computer is the computer from which LogonUser was called. You cannot use LogonUser to log on to a remote computer. You specify the user with a user name and domain, and authenticate the user with a plaintext password. If the function succeeds, you receive a handle to a token that represents the logged-on user. You can then use this token handle to impersonate the specified user or, in most cases, to create a process that runs in the context of the specified user.
    
    BOOL LogonUser(
      LPTSTR lpszUsername,
      LPTSTR lpszDomain,
      LPTSTR lpszPassword,
      DWORD dwLogonType,
      DWORD dwLogonProvider,
      PHANDLE phToken
    );
    Ce qui donne sous Powerbuilder :
    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
    //Déclaration dans les Local Externale Function de mon objet  :
    FUNCTION boolean LogonUserA(ref string uname,ref string domain,ref string password,ulong ptype,ulong provider,ref long token) LIBRARY "ADVAPI32.DLL"
    
    //déclaration dans les variables d'isntances de mon objet arbitrairement nommé n_cst_ldap :
    CONSTANT INTEGER LOGON32_LOGON_NETWORK 				= 3
    CONSTANT INTEGER LOGON32_LOGON_INTERACTIVE 			= 2
    CONSTANT INTEGER LOGON32_LOGON_BATCH 					= 4
    CONSTANT INTEGER LOGON32_LOGON_NETWORK_CLEARTEXT 	= 8
    CONSTANT INTEGER LOGON32_LOGON_NEW_CREDENTIALS 		= 9
    CONSTANT INTEGER LOGON32_LOGON_SERVICE 				= 5
    CONSTANT INTEGER LOGON32_LOGON_UNLOCK	 				= 7
    
    CONSTANT INTEGER LOGON32_PROVIDER_DEFAULT			   = 0
    CONSTANT INTEGER LOGON32_PROVIDER_WINNT35			   = 1
    CONSTANT INTEGER LOGON32_PROVIDER_WINNT40			   = 2
    CONSTANT INTEGER LOGON32_PROVIDER_WINNT50			   = 3
    
    
    //Exemple d'utilisation
    lb_debug = LOGONUSERA( ref as_user, ref as_domain, ref as_mdp, LOGON32_LOGON_NETWORK , LOGON32_PROVIDER_DEFAULT, ref ll_handle)
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  3. #3
    Membre régulier
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    Je voudrais faire la même chose mais je travail sur plusieurs type de systèmes. En particulier, 2003 et 2000, mais, le problème, c'est que, visiblement, la DLL n'est pas définie dans ces deux systèmes (J'ai un message d'erreur trouvant pas la fonction LOGONUSERA).

    Merci.
    mamid

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Même contrainte
    Bonjour,

    j'ai le même problème. Donc si quelqu'un à la solution je suis preneur.

    Merci
    Rivebise

    Citation Envoyé par mamid1706 Voir le message
    Bonjour,

    Je voudrais faire la même chose mais je travail sur plusieurs type de systèmes. En particulier, 2003 et 2000, mais, le problème, c'est que, visiblement, la DLL n'est pas définie dans ces deux systèmes (J'ai un message d'erreur trouvant pas la fonction LOGONUSERA).

    Merci.

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

Discussions similaires

  1. [DLL] Enregistrer DLL (COM) par programmation
    Par pataguillon dans le forum MFC
    Réponses: 5
    Dernier message: 14/03/2006, 14h01
  2. Comment accéder à une DLL COM depuis un exécutable ?
    Par Denys dans le forum API, COM et SDKs
    Réponses: 10
    Dernier message: 20/09/2005, 08h04
  3. Qu'est ce qu'une DLL Com?
    Par Clotilde dans le forum Langage
    Réponses: 1
    Dernier message: 24/05/2005, 20h07
  4. [DLL - COM] Ajouter un chemin de DLL
    Par karl3i dans le forum MFC
    Réponses: 2
    Dernier message: 22/09/2004, 12h38
  5. Les composants : ATL, DLL, COM, OCX, ...
    Par Pucpood dans le forum Windows
    Réponses: 3
    Dernier message: 04/07/2003, 10h03

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