BoZoN icon indicating copy to clipboard operation
BoZoN copied to clipboard

Authentification LDAP

Open maitrey0da opened this issue 9 years ago • 20 comments

Hello,

Étant assez fan de cette application, j'aimerai la promouvoir dans mon entreprise. Serait-il fou d'imaginer une authentification LDAP des utilisateurs, avec une gestion minimale des droits ?

Merci

m/

maitrey0da avatar Feb 16 '16 13:02 maitrey0da

Bonjour et merci pour cet enthousiasme :-)

L'authentification LDAP n'est pas à l'ordre du jour pour le moment. La prochaine version va permettre de fixer la taille maxi des dossiers utilisateurs. Quels types de droits seraient-ils nécéssaires ? A+

Le 16 février 2016 14:43:46 CET, maitrey0da [email protected] a écrit :

Hello,

Étant assez fan de cette application, j'aimerai la promouvoir dans mon entreprise. Serait-il fou d'imaginer une authentification LDAP des utilisateurs, avec une gestion minimale des droits ?

Merci

m/


Reply to this email directly or view it on GitHub: https://github.com/broncowdd/BoZoN/issues/87

Envoyé de mon appareil Android avec K-9 Mail. Veuillez excuser ma brièveté.

broncowdd avatar Feb 16 '16 16:02 broncowdd

Et bien gestion simple des utilisateurs émanant d'une base LDAP : ajout et suppression d'un compte, groupe LDAP des managers qui administrent les comptes

maitrey0da avatar Feb 17 '16 13:02 maitrey0da

Justement, ce n'est pas simple d'implémenter le protocole LDAP. Pour l'heure, l'admin est le premier inscrit (ce qui peut être changé en ajoutant des profils utilisateurs): il peut créer des comptes et les supprimer ainsi que limiter la taille des dossiers utilisateurs.

Il n'est pas prévu d'ajouter des groupes d'utilisateurs ou une quelconque hiérarchie plus complexe car au départ BoZoN n'est pas fait pour ça (c'est censé être une appli minimaliste ^^). Il y a beaucoup d'utilisateurs prévus dans ton entreprise ?

Le 17/02/2016 14:18, maitrey0da a écrit :

Et bien gestion simple des utilisateurs émanant d'une base LDAP : ajout et suppression d'un compte, groupe LDAP des managers qui administrent les comptes

— Reply to this email directly or view it on GitHub https://github.com/broncowdd/BoZoN/issues/87#issuecomment-185200988.

broncowdd avatar Feb 17 '16 13:02 broncowdd

Nous sommes 2000 à Paris et 5000 au niveau national :-D

Je suis complètement conscient que BoZoN ne soit pas destiné au monde professionnel. J'entretiens uniquement un lobbying personnel à ce sujet :) J'aime les applis KISS et déteste les usines à gaz codées avec les pieds.

maitrey0da avatar Feb 17 '16 13:02 maitrey0da

Je plussoie ! ^^ Ceci dit, on atteint des chiffres qui font peur quand même ^^ Et en utilisant plusieurs instances différentes de Bozon, histoire de scinder les groupes/équipes ?

Le 17/02/2016 14:31, maitrey0da a écrit :

Nous sommes 2000 à Paris et 5000 au niveau national :-D

Je suis complètement conscient que BoZoN ne soit pas destiné au monde professionnel. J'entretiens uniquement un lobbying personnel à ce sujet :) J'aime les applis KISS et déteste les usines à gaz codées avec les pieds.

— Reply to this email directly or view it on GitHub https://github.com/broncowdd/BoZoN/issues/87#issuecomment-185204794.

broncowdd avatar Feb 17 '16 13:02 broncowdd

Tout à fait possible. Mon objectif est principalement l'authentification, qui doit se baser sur un couple identifiant/mot de passe qui est géré par un serveur LDAP. Possible ?

maitrey0da avatar Feb 17 '16 13:02 maitrey0da

A priori, ce serait possible dans le sens où j'ai clairement séparé les routines de sécurité dans une lib à part. Après, il faudrait déjà que je pige comment ça fonctionne XD vive les tutos sur le net \o/ En effet, toutes les modifs ne seront pas forcément adaptables au fonctionnement de Bozon...

Pour l'heure, on est en plein remaniement de la structure html/css pour intégrer les modifs d'Eauland qui a produit un code organisé et propre. Ensuite, plusieurs ajouts sont prévus, c qui me laissera le temps de me renseigner vraiment sur LDAP. Donc, je ne déclare pas forfait de suite. :-)

Le 17 février 2016 14:43:41 CET, maitrey0da [email protected] a écrit :

Tout à fait possible. Mon objectif est principalement l'authentification, qui doit se baser sur un couple identifiant/mot de passe qui est géré par un serveur LDAP. Possible ?


Reply to this email directly or view it on GitHub: https://github.com/broncowdd/BoZoN/issues/87#issuecomment-185209166

Envoyé de mon appareil Android avec K-9 Mail. Veuillez excuser ma brièveté.

broncowdd avatar Feb 17 '16 14:02 broncowdd

Si tu souhaites avoir des bières belges pour te motiver ;-))

maitrey0da avatar Feb 17 '16 16:02 maitrey0da

Moi je veux bien les bières belges :)

Pour revenir à ta question, bozon n'est clairement pas adapté au milieu de l'entreprise, il y a de très nombreux bugs à résoudre avant, voir certaines choses qui peuvent déranger certaines personnes.

KISS [jeu 2 mot(s)]

ghost avatar Feb 21 '16 20:02 ghost

Je suis d'accord: avec une version stable, à la rigueur... et encore: ce n'est pas fait pour une aussi grosse structure, je pense. De plus, j'ai encore des choses à y ajouter ^^

broncowdd avatar Feb 22 '16 08:02 broncowdd

un player vidéo par exemple ^^

Le 22/02/2016 09:14, Bronco a écrit :

Je suis d'accord: avec une version stable, à la rigueur... et encore: ce n'est pas fait pour une aussi grosse structure, je pense. De plus, j'ai encore des choses à y ajouter ^^

— Reply to this email directly or view it on GitHub https://github.com/broncowdd/BoZoN/issues/87#issuecomment-187064025.

ghost avatar Feb 22 '16 08:02 ghost

Ce n'est vraiment pas le plus dur ^^

broncowdd avatar Feb 22 '16 08:02 broncowdd

feature 2.3, trop bien

Le 22/02/2016 09:24, Bronco a écrit :

Ce n'est vraiment pas le plus dur ^^

— Reply to this email directly or view it on GitHub https://github.com/broncowdd/BoZoN/issues/87#issuecomment-187065996.

ghost avatar Feb 22 '16 08:02 ghost

plutôt 2.4 vu que sinon, on n'arrivera jamais à sortir une version 2.3 ^^

broncowdd avatar Feb 22 '16 08:02 broncowdd

Je vous remercie pour vos commentaires. N'empeche qu'il soit possible de segmenter mes utilisateurs dans des instances séparées. Après, je vois mal les limitations entre 10 utilisateurs et 100 au niveau du dev...

maitrey0da avatar Feb 22 '16 08:02 maitrey0da

Ce ne sont pas tellement les limitations dans le code que dans l'interface et le fonctionnement: ceci dit, si tu peux tester avec une centaine d'utilisateurs, tes remontées seront précieuses pour les éventuelles optimisations, car les limites de certaines parties du code peuvent se manifester (je n'ai pas cherché à optimiser très profondément l'affichage des fichiers, la régénération de l'ensemble des liens pour complément etc... du coup avec des milliers de fichiers, il faudra peut-être passer à un stockage des données différent par exemple).

broncowdd avatar Feb 22 '16 09:02 broncowdd

Une piste de solution Bonjour, Une idée de solutionhttps: https://yunohost.org/#/packaging_apps https://fr.wikipedia.org/wiki/Authentification_HTTP#M.C3.A9thode_Basic https://github.com/Kloadut/SSOwat Pour ceux que ça intéresse, à bientôt

michelwend avatar Mar 12 '16 19:03 michelwend

DE la lecture en prévision ^^ merci !

broncowdd avatar Mar 13 '16 11:03 broncowdd

Tu pourrais peut-être aussi utiliser les fonctions natives pour gérer les mots de passe ? De ce que j'en ai lu, c'est quand même la meilleure façon de procéder pour avoir un minimum de sécurité robuste. Parce que c'est toi, voici une classe pour gérer tout ça (je ne suis pas aller la chercher bien loin, c'est dans la doc...) :

class PasswordTools {

    private static function options() {
        return array(
            'cost' => self::getOptimalBcryptCostParameter(),
            'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
        );
    }

    /**
     * This code will benchmark your server to determine how high of a cost you can
     * afford. You want to set the highest cost that you can without slowing down
     * you server too much. 8-10 is a good baseline, and more is good if your servers
     * are fast enough. The code below aims for ≤ 50 milliseconds stretching time,
     * which is a good baseline for systems handling interactive logins.
     * @Param int $min_ms Minimum amount of time in milliseconds that it should take
     * to calculate the hashes
     */
    private static function getOptimalBcryptCostParameter($timeTarget = 0.25) {// 250 milliseconds 
        $cost = 8;
        do {
            $cost++;
            $start = microtime(true);
            \password_hash("rasmuslerdorf", PASSWORD_DEFAULT, ["cost" => $cost, 'salt' => 'usesomesillystringforsalt']);
            $end = microtime(true);
        } while (($end - $start) < $timeTarget);

        return $cost;
    }

    /**
     * Note that the salt here is randomly generated.
     * Never use a static salt or one that is not randomly generated.
     *
     * For the VAST majority of use-cases, let password_hash generate the salt randomly for you
     */
    public static function create_hash($password) {
        return \password_hash($password, PASSWORD_DEFAULT, self::options());
    }

    public static function validate_password($password, $good_hash) {
        if (\password_verify($password, $good_hash)) {
            return true;
        } else {
            return false;
        }
    }

    public static function isPasswordNeedsRehash($password,$hash) {
        if (\password_needs_rehash($hash, PASSWORD_DEFAULT, self::options())) {
            return self::create_hash($password);
        }
        return false;
    }
}

jerrywham avatar Mar 24 '16 23:03 jerrywham

Pour l'utiliser tu importes le fichier dans lequel tu as copié la classe, avant tout traitement puis tu procèdes de la sorte :

 if (PasswordTools::validate_password($password, $good_hash) ) {
    if ($newPass = PasswordTools::isPasswordNeedsRehash($password, $good_hash)) {
        //Code pour mettre le profil utilisateur à jour avec le nouveau hash
    }
       // Code de connexion (enregistrement en bdd...)
}

jerrywham avatar Mar 24 '16 23:03 jerrywham