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

WinDev Discussion :

Active Directory et API Windows


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2011
    Messages : 137
    Par défaut Active Directory et API Windows
    Bonjour tout l'monde.

    Un souci concernant les API windows au sein de Windev commence à m'exaspérer sérieusement. En effet, j'ai une application d'archivage de factures qui peut être utilisée par de nombreuses personnes. MAIS, chaque personne possède des droits qui leur sont propres. Donc certaines personnes peuvent avoir accès à tant d'onglets, tandis que d'autres moins d'onglets etc ...

    Dernièrement, ces droits étaient définis par un fichier .ini, on m'a demandé de faire en sorte que désormais, ce soit défini par l'Active Directory. Pour cela, je dois récupérer le MemberOf de l'utilisateur (pour connaitre son service au sein de l'entreprise). Ex : pour ma part, mon MemberOf est Informatique, mon domain est le nom de mon entreprise. Mais ce, sans demander le mot de passe à l'utilisateur.

    J'ai essayé ça :

    Code windev : 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
     
    Workgroup est une chaîne = ""
    pInfos est un entier système// Pointeur sur les infos retournées par l'API
    join_status est un entier // Pointeur sur le statut
    QUAND EXCEPTION DANS
    	// 1er paramètre à 0x00 --> ordinateur local
    	API("Netapi32.dll", "NetGetJoinInformation", 0x00,&pInfos,&join_status) //ou NetGetJoinInformation ou NetWkstaGetInfo
    	// join_status = 0 --> statut inconnu
    	// join_status = 1 --> pas de réseau accessible
    	// join_status = 2 --> groupe de travail
    	// join_status = 3 --> domaine
    	SI join_status=2 ALORS Workgroup = SansEspace(ChaîneRécupère(pInfos,crAdresseUNICODE))
     
    FAIRE
    	RENVOYER ""
    FIN
    // Libération de la mémoire réservée par NetGetJoinInformation
    Workgroup = SansEspace(ChaîneRécupère(pInfos,crAdresseUNICODE))
    API("Netapi32.dll", "NetApiBufferFree", &pInfos)

    J'ai récupéré ce code sur un forum windev... en vain. Le join_status est toujours à 3. J'ai tenté avec NetWkstaGetInfo mais ça ne fonctionne pas du tout là. Le code est à 0. Y a t'il un moyen avec une API Windows de connaître ce MemberOf ?

    Information supplémentaire :

    Je vous ai parlé de MemberOf tout à l'heure, voici comme je l'obtiens (mauvaise façon, car utilisation du mot de passe) :

    Code windev : 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
     
    LDAPRAZ()
    //Paramètres de connexion
    LDAPSession.Hôte = "nom de mon serveur ad"
    LDAPSession.Port = 389
    LDAPSession.Version = 2
     
    LDAPSession.Utilisateur = "login_user@domain.local"
    LDAPSession.MotDePasse = "password_user"
    // Connexion
    resultat est un booléen = LDAPConnecte("MaSession")
    SI PAS resultat ALORS
    	Ferme(Fen_Archivage) 
    FIN
    strDN est une chaîne = LDAPRecherche("MaSession","dc=cerpbn,dc=lan","sAMAccountName=" + LDAPSession.Utilisateur)
    SI strDN<> "" ALORS
    	// Impossible de lister le DN de connexion
    	// l'utilisateur n'a pas été logué avec le bon mot de passe.
    	Erreur("Le mot de passe de l'utilisateur "+ LDAPSession.Utilisateur + " est erroné.")
    FIN
     
     
    strInfo est une chaîne
    strFiltre est une chaîne ="sn= nom_user" 
    strSession est une chaîne = "MaSession"
     
     
    strDN = LDAPRecherche(strSession, "dc=cerpbn,dc=lan", strFiltre) //Lance une recherche dans un serveur LDAP
    SI PAS ErreurDétectée() ALORS
    	SI strDN <> "" ALORS
    		strListeAttributs est une chaîne = LDAPListeAttribut("MaSession", strDN)
    		strInfo = "Description : " + LDAPValeur(strSession, strDN, "description", 1) + RC
    		strInfo += "Company : " + LDAPValeur(strSession, strDN, "company", 1) + RC
    		strInfo += "MemberOf : " + LDAPValeur(strSession, strDN, "MemberOf", 1) + RC
    		strInfo += "Département : " + LDAPValeur(strSession, strDN, "Department", 1) + RC
    		strInfo += "PrimaryGroupID : " + LDAPValeur(strSession, strDN, "primaryGroupID", 1) + RC
    		strInfo += "UserAccountControl : " + LDAPValeur(strSession, strDN, "userAccountControl", 1) + RC
    		strNom est une chaîne = LDAPValeur(strSession, strDN, "sn", 1)
    		strPrenom est une chaîne = LDAPValeur(strSession, strDN, "givenName", 1)
    		strInfo += "sAMAccountName : "+ LDAPValeur(strSession, strDN, "sAMAccountName", 1) + RC
    		strInfo += "userPrincipalName : "+ LDAPValeur(strSession, strDN, "userPrincipalName", 1) + RC
    		strInfo += "DN:"+ strDN + RC
    		Info("Bonjour " + strPrenom + " " + strNom + RC + strInfo)
    	FIN	
    FIN
     
    // Déconnexion
    LDAPDéconnecte("MaSession")

  2. #2
    Membre émérite
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 615
    Par défaut
    Bonjour
    As-tu regardé du coté de l'exemple complet WD active directory DotNet ?
    Je sais que cet exemple existe, mais pour ma part je ne l'ai pas utilisé...

    Bon dev
    Gancau

  3. #3
    Membre très actif
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2011
    Messages : 137
    Par défaut
    Non, il me demande d'utiliser un mot de passe également.

    Mais merci, tu m'as mis sur la voie des exemples de base de WD, du coup en fouillant un peu, j'ai réussi à trouver l'exemple des infos système. Je vais regarder de quoi il a l'air en attendant de trouver la solution

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/12/2013, 09h00
  2. [Windows 2003] Active Directory ouverture de session.
    Par aityahia dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 01/05/2007, 15h15
  3. delphi 7 et active directory windows 2003 server
    Par czezko dans le forum Delphi
    Réponses: 2
    Dernier message: 03/04/2007, 10h21
  4. API Active Directory
    Par Danyboy11 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 26/03/2007, 08h14

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