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 (Ldap)


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 53
    Par défaut Active directory (Ldap)
    Bonjour,

    Après de maintes recherches un peu partout sur le web et sur developpez, je patauge un peu.

    Je vous explique la situation :

    Nous avons un 'active directory' avec dedans les personnes de l'entreprise ayant différents droits (réparties dans des groupes).

    Mon but est que lorsqu'un utilisateur, connecté sous windows, lance une application WinDev (ou WebDev), sois directement authentifié dans l'application.
    Qu'il ne doive donc pas se relogguer pour accéder à l'application.

    Mes recherches m'ont conduit à cette solution :
    • Importer tous les utilisateurs pouvant avoir accès à l'application depuis l'active directory.


    • Pour tous ces utilisateurs, définir un mot de passe générique, n'ayant rien à voir avec celui de l'active directory


    • Exécuter le code suivant lors du lancement de l'application :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
       
         gsMotdepasse est une chaine = "test"
             selon gpwLogin(RéseauUtilisateur(),gsMotdepasse)
      	cas 0 : PageAffiche(PAGE_Accueil)
      	cas gpwErreur :	Info("Erreur")
      	AUTRE CAS
       
              FIN


    Dès lors, si l'utilisateur connecté à l'application est repris dans le groupware, il aura accès direct à l'application, le cas contraire, il n'aura pas accès.

    Le gros inconvénient que je vois sur cette solution est la modification en masse des mots de passe des utilisateurs.
    Si 200 personnes doivent y avoir accès, je vais devoir modifier manuellement les 200 mots de passe ?

    N'y aurait-il pas moyen de directement dire dans l'application :
    si l'utilisateur est dans le groupe 'test' de l'active directory, alors il a accès à l'application ?

    J'aimerais malgré tout utiliser le groupware, car il me permettrait de définir des droits pour certaines personnes sur certains boutons, liens, ...

    Bref, je suis un peu perdu, auriez-vous des suggestions ?

    Merci D'avance !

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Par défaut
    Bonjour,

    la possibilité de vérifier les mots de passe ainsi que les groupes est bien réelle et fonctionne bien. Je te transmets mon code pour cela :

    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
    Procedure LDAPVerificationLoginPassword(saiLogin="",saiMDP="")
     
     
     
    SI saiLogin = "" OU saiMDP = "" ALORS
     
    	RENVOYER 1
     
    FIN
     
     
     
    sDNUtilisateur est une chaîne
     
    sUneValeur est une chaîne
     
    nNbValeur est un entier
     
    chaDomaine, chaServeurLDAP, chaDNUtilisateurs, chaPortLDAP, chaVersionLDAP, chaGroupe sont des chaînes
     
     
     
    // Recherche des valeurs pour les champs
    	chaDomaine 
    	chaServeurLDAP
    	chaDNUtilisateurs
    	chaPortLDAP 
     
    	chaVersionLDAP
    	chaGroupe
     
     
     
    SI chaDomaine = "" OU chaServeurLDAP = "" OU chaDNUtilisateurs = "" OU chaGroupe = "" OU chaPortLDAP = "" OU chaVersionLDAP = "" ALORS
     
    	RENVOYER 2
     
    FIN
     
     
     
    // Vérification du couple "Login / Mot de passe" utilisateur
     
    // Initialisation
     
    LDAPRAZ()
     
    LDAPSession.Hôte = chaServeurLDAP
     
    LDAPSession.Port = 389 // par défaut, utiliser la variable sinon
    LDAPSession.Version = 3	// par défaut, utiliser la variable sinon
    LDAPSession.Utilisateur = saiLogin + "@" + chaDomaine
     
    LDAPSession.MotDePasse = saiMDP
     
     
     
    // Connexion
     
    SI PAS LDAPConnecte("MaSession") ALORS
     
    	RENVOYER 3
     
    FIN
     
     
     
    // Stockage du DN lié au compte de l'utilisateur
     
    sDNUtilisateur = LDAPRecherche("MaSession",chaDNUtilisateurs,"CN="+saiLogin)
     
     
     
    //Nb de valeur pour l'attribut "memberOf"
     
    nNbValeur=LDAPNbValeur("MaSession",sDNUtilisateur,"memberOf")
     
     
     
    //ajout de toutes les valeurs dans la table
     
    POUR nNumValeur = 1 A nNbValeur
     
    	sUneValeur = LDAPValeur("MaSession",sDNUtilisateur,"memberOf",nNumValeur)
     
    	SI ChaîneOccurrence(sUneValeur,chaGroupe) ALORS
     
                    // Le groupe est trouvé, l'utilisateur a le droit d'utiliser le logiciel
    		// Déconnexion 
     
    		LDAPDéconnecte("MaSession")
     
    		RENVOYER 0
     
    	FIN
     
    FIN
     
     
     
    // Aucun groupe donnant l'accès au logiciel n'a été trouvé dans les valeur de l'attribut memberOf
     
    // Déconnexion 
     
    LDAPDéconnecte("MaSession")
     
     
     
    RENVOYER 4
    Bonne lecture

    Nicolas

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 53
    Par défaut
    Merci pour ta réponse !

    J'ai lu attentivement, mais j'ai juste un petit bémol :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SI saiLogin = "" OU saiMDP = ""
    Il faut donc bien que l'utilisateur entre son login et mot de passe lui même ?

    J'aimerais by-passer cette phase de login.

    Rester dans un système Single Sign On, où l'utilisateur doit juste se connecter à sa session windows, et ensuite peut accéder à ses applications.

    Est-ce envisageable ?

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Par défaut
    J'ai mis ce test car j'ai encore de temps en temps des gens qui me cliquent sur le bouton ok sans avoir remplit quoi que soit ... !

    Sinon, pour récupérer le login de la session windows c'est possible mais ça ne permet pas à un autre utilisateur de se connecter dans la session d'un autre (parfois le chef de services se connecte pour rectifier une saisie ou faire un traitement particulier non autorisé par l'utilisateur). C'est aussi pour ça que j'ai laissé cette possibilité.

    Nicolas

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 53
    Par défaut
    Mmmh, je pense que je ne suis pas bien fait comprendre !

    En fait, tout ce que j'aimerais faire, c'est donner à certains utilisateur des droits sur une application.

    Mais que ces utilisateurs ne doivent plus rentrer d'informations une fois qu'ils se sont logués sur windows.

    Exemple :

    Un application qui permet de consulter les statistiques des ventes.
    Seules les personnes se trouvant dans le groupe "achat" de l'active directory ont droit d'accès à cette application.

    Les autres personnes sont interdites d'accès.

    Donc, une fois loguée sous une sessions windows, si une personne du service achat lance l'application, j'aimerais qu'elle ne doivent plus rentrer aucune informations d'authentification.
    Elle accederait directement à l'appli.

    Une personne d'un autre service verrait un message d'erreur immédiatement.

    Dans le cas du chef de service :
    Si il a le droit de faire des traitements particuliers que les utilisateurs communs n'ont pas le droit de faire, lorsqu'il lance l'application, ces traitements lui seront visible directement (car il aura été authentifié via sa session windows).

    J'espère que je m'exprime correctement.

    En tout cas, merci de t'intéresser à mon cas !

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Par défaut
    Pas de problème, tu étais bien clair !

    Ce que je voulais te préciser c'est que j'ai laissé une fenêtre de login sur l'appli car ça permet à certains collaborateurs de se connecter à l'application en étant sur la session de quelqu'un d'autre.

    Sinon, il faut récupérer les droits de l'utilisateur en se loguant avec un compte ayant les droits d'accès pour le faire (équivalent à administrateur) et parcourir les groupes de ce login windows.

    à bientôt,

    Nicolas

Discussions similaires

  1. Active directory/LDAP - Affectation utilisateurs dans groupes
    Par SuperPat dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 24/04/2008, 17h26
  2. Réponses: 5
    Dernier message: 15/03/2007, 09h52
  3. [POO] Créer un user dans une Active Directory (LDAP)
    Par Invité dans le forum Langage
    Réponses: 15
    Dernier message: 17/06/2006, 00h46
  4. Active Directory, LDAP et JAVA
    Par jessica94 dans le forum API standards et tierces
    Réponses: 13
    Dernier message: 15/03/2006, 17h43
  5. [C#] Active directory LDAP
    Par Gauden dans le forum Windows Forms
    Réponses: 9
    Dernier message: 02/05/2005, 13h57

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