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

Langage Perl Discussion :

perl, ldap et bugzilla


Sujet :

Langage Perl

  1. #1
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 79
    Par défaut perl, ldap et bugzilla
    Bonjour.
    A défaut d'un forum ldap je poste ici car j'ai un souci avec ma connexion ldap/bugzilla et bugzilla est écrit en perl.
    si ce n'est pas le forum le plus adéquat n'hésitez pas à m'indiquer le bon chemin.

    J'ai configuré bugzilla afin d'utiliser l'annuaire ldap/active directory de ma boîte.
    Au début cela ne fonctionnait pas et j'avais une erreur 531 (connection refused)
    Après des recherches j'ai découvert que cela venait du paramètre userWorkstations.
    Pour que cela fonctionne l'utilisateur ne servant à connecter bugzilla sur l'annuaire devait avoir le droit d'ouvrir une session sur la machine contenant l'annuaire (il n'y pas d'authentification anonyme possible).
    Bon ok admettons.
    Le soucis c'est que les autres utilisateurs ne peuvent pas ouvrir de session sur bugzilla s'ils n'ont pas le même droit...
    Et mon administrateur réseau refuse tout net d'accorder ce droit aux autres utilisateurs.
    Il ne voit pas pourquoi ils devraient avoir le droit d'ouvrir une session sur la machine contenant l'annuaire pour s'authentifier.
    Moi aussi je ne comprend pas pourquoi mais je constate seulement le problème, sans ce droit l'authentification ne fonctionne pas.

    Et la je ne sais pas si le problème vient de la configuration de l'annuaire ou du code (en perl) de bugzilla.

    Est ce que certains ont été confronté à ce problème ? Doit on changer quelque chose dans le code d'ouverture de la session ldap ?
    Ou bien est ce un paramétrage de l'annuaire ?

    La j'avoue que je suis bloqué et je n'ai aucune compétence ldap. Et mes connaissances sur le perl sont à peine meilleures.... (c'est très compréhensible mais c'est un langage que je ne connais pas)

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Hum, j'aurais peut-être pu t'aider sur un problème Perl, mais là, DSL, je n'ai aucune idée.

  3. #3
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 79
    Par défaut
    En fait j'ai trouvé ce matin une solution de contournement après avoir bien consulté la documentation.

    Le problème vient de la procédure dans bugzilla pour vérifier les mots de passe.
    Voici comment fait bugzilla
    1)faire un bind (avec le login, mot de passe)
    2) si retour -> mot de passe erronée
    3) sinon mot de passe ok

    ca marche bien mais seulement si on utilise pas l'attribut userWorkstation.
    Car si on utilise cet attribut et si on ne met pas le nom de la machine contenant l'annuaire dedans le bind renvoie une erreur.
    Et comme on analyse pas le retour on en déduit (à tort) que le mot de passe est erroné.
    L'ancien code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       my $pw_result = $self->ldap->bind($dn, password => $params->{password});
        return { failure => AUTH_LOGINFAILED } if $pw_result->code;

    Et ma correction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
           my $pw_result = $self->ldap->bind($dn, password => $params->{password});
    	if ($pw_result->code) {
    		 if ($pw_result->error !~ /data\s531/) {return { failure => AUTH_LOGINFAILED } }
    	}
    Je rajoute un test sur la valeur de l'erreur, si celle ci contient "data 531" cela signifie que le mot de passe est ok mais que la connexion est refusée. Bon après y'a d'autre soucis comme la récupération de l'email, du nom etc mais pour simplement vérifier le mot de passe ca marche.

    Il y a surement mieux à faire mais je n'y connais rien en perl... Déjà j'ai galéré pour comprendre comment tester le contenu d'error (je cherchais une fonction de comparaison de chaine comme en java...)

Discussions similaires

  1. Perl LDAP ajout d'un utilisateur dans un AD
    Par jean tof dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 10/02/2012, 20h48
  2. LDAP et perl
    Par wopsy dans le forum Modules
    Réponses: 2
    Dernier message: 28/09/2009, 13h44
  3. Perl soap ldap
    Par nablaaa dans le forum Langage
    Réponses: 0
    Dernier message: 28/02/2009, 12h02
  4. Perl, LDAP et userPassword
    Par Le Mage dans le forum SGBD
    Réponses: 0
    Dernier message: 26/09/2007, 15h05
  5. [PERL] NET::LDAP : Mise en cache des requêtes
    Par ricomervin dans le forum Modules
    Réponses: 1
    Dernier message: 17/04/2007, 10h36

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