Forum Programmation.c Kolab et Jabberd2

Posté par  .
Étiquettes : aucune
0
6
déc.
2004
Bonjour,
je cherche à faire marcher le projet kolab avec un serveur jabberd2. Le problème de ce petit projet est que le serveur Jabberd2 attend du serveur LDAP des mots de passe en clair alors que le serveur ldap de kolab retourne des hash SHA1.

Aprés avoir parcouru la documentation du serveur jabberd2, je n'ai pas trouver d'options donc je pense que ma solution va passer par un patch qui ferait un hash du mot de passe envoyé par le client avant la comparaison de celui ci avec celui du serveur ldap ...

Aprés avoir un peu fouillé dans les sources de Jabberd2, je suis tomber sur un fichier source sha1.c qui donne l'algo pour fair un hash mais le source est trés peu documenté (en tout cas pas suffisament pour moi et mon niveau en C) :).

Donc voila, je recherche l'aide d'une gentille personne pour m'aider à atteindre ce petit but. (déja me donner un exemple d'utilisation de la fonction pour le reste j'essayerai de me débrouiller).

Voici les fichiers en question :
sha1.c : http://www.jabberstudio.org/cgi-bin/viewcvs.cgi/jabberd2/util/sha1.(...)
sha1.h : http://www.jabberstudio.org/cgi-bin/viewcvs.cgi/jabberd2/util/sha1.(...)

Merci d'avance .... :)
  • # il faut vraissemblablement employer sha1_hash ..

    Posté par  . Évalué à 1.

    [Pas testé]

    void sha1_hash(const unsigned char *dataIn, int len, unsigned char hashout[20]) ;

    const char* monpassword="TOTO";

    unsigned char cryptedpass[20];

    sha1_hash( monpassword,strlen(monpassword), cryptedpass);

    et tu récuperes le hash dans cryptedpass ..
    • [^] # Re: il faut vraissemblablement employer sha1_hash ..

      Posté par  . Évalué à 1.

      Erf j'avais pas vu cette fonction.

      Merci de cette reponse.

      Juste pour voir si j'ai bien compris, je vais recupérer le resultat dans cryptedpass et il faudrat que je reconvertisse en caractèré ascii (passé des 20octets reprensentant les 160bits vers un tableau de 40octets contenants les caractères lisibles).
  • # auth_pipe

    Posté par  . Évalué à 1.

    Pourquoi tu n'utilises pas l'authentification via un script, a qui jabberd2 passe les login et password sur stdin?

    Il y a des examples ds jabberd2 d'un tel script en perl.
    • [^] # Re: auth_pipe

      Posté par  . Évalué à 1.

      Je n'ai pas vu cette méthode dans la documentation du serveur dans sa version 2. Aurait tu un lien ou un exemple ? Sinon ça pourrait etre une bonne solution qui faciliterait la maintenant des paquets (etant donné qu'il y aurait plus besoin de patcher les souces :) )
    • [^] # Re: auth_pipe

      Posté par  . Évalué à 1.

      Autre petite question, est ce que cette méthode à des repercutions sur les performances ?
      Je me poses justes cette question par rapport à l'existence de différents modules ecrits en C alors que ces mêmes modules aurait trés bien peut etre réalisé aussi en perl par exemple.
      • [^] # Re: auth_pipe

        Posté par  . Évalué à 1.

        Aucune idee, malheureusement :((

        Chez moi ca semble bien aller, avec jusqu'a une centaine de personnes en ligne. Il faut veiller a faire un code propre, ou tu libere bien tes variables a la fin de chaque fonction, car le script reste en memoire en permanence, tant que c2s tourne.

        Et n'oublies pas t'utiliser MIME::Base64 pour recuperer ton mot de passe.
  • # le module authreg_ldap

    Posté par  . Évalué à 1.

    Si tu veux vraiment faire ca dans le C de jabberd2, ca se passe plutot ici:
    http://www.jabberstudio.org/cgi-bin/viewcvs.cgi/jabberd2/c2s/authre(...)

    et la fonction a changee est:

    static int _ldap_check_password(authreg_t ar, char *username, char *realm, char password[257])
    • [^] # Re: le module authreg_ldap

      Posté par  . Évalué à 1.

      Oui j'avais vu cette fonction aprés un survol rapide du source. Ma question posait surtout sur l'utilisation de la fonction de sha1 :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.