16/12/2024

Cloud

Filez – Authentification LDAP

I. Présentation

Filez propose deux types d'authentifications. Soit en utilisant une base de donnée, comme on a pu voir dans le tutoriel précédent accessible ici, soit via un annuaire LDAP. Ici j'utiliserai l'annuaire de Microsft, Active Directory.

II. Mise en place

Afin de ne pas modifier la hiérarchie des unités d'organisation de l'AD, on peut créer un groupe afin d'habiliter les personnes à accéder à Filez.

image16

Il faut ensuite modifier le fichier de configuration, filez.ini qui se trouve dans le répertoire Config de filez et notifier à Filez que l'on va utiliser un annuaire LDAP pour l'authentification à la place d'une BDD :

Remplacer :

; Name of the class used to identify the user. Built-in factories are :
;  * Fz_User_Factory_Ldap
;  * Fz_User_Factory_Database
user_factory_class = Fz_User_Factory_Database

Par :

; Name of the class used to identify the user. Built-in factories are :
;  * Fz_User_Factory_Ldap
;  * Fz_User_Factory_Database
user_factory_class = Fz_User_Factory_Ldap

Puis modifier les donnees présent dans la partie "user_factory_options" pour interroger l'annuaire lors de l'authentification. (rapin est un nom donné à titre d'exemple) :

[user_factory_options]
host = "dc2008.rapin.local"
useSsl = false
baseDn = "dc=rapin,dc=local"
accountDomainName = "rapin.local"
username = "CN=admin,DC=rapin,DC=local"
password = "password"
bindRequiresDn = false
accountFilterFormat= "(&(&(objectClass=user)(sAMAccountName=%s))(memberOf=cn=filez,ou=Groupes,dc=rapin,dc=local))"
author avatar
Arnaud Baumard
Adepte des nouvelles technologies, passionné d'informatique et plus particulièrement dans l'administration systèmes et réseaux, je viens partager mes connaissances, mes trouvailles, mes projets.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

13 commentaires sur “Filez – Authentification LDAP

  • petite coquille, il n’y a pas de différence entre le fichier config d’origine et celui modifié.

    Répondre
  • si si ^^ mais la fenêtre n’est pas assez grande pour tout afficher.

    Répondre
  • Bonjour,

    Merci pour votre article, cependant savez-vous s’il est possible de se connecter de manière automatique via l’active directory ?
    Est-on obligé de passer via un serveur CAS ?

    Julien.

    Répondre
    • Bonjour Julien,

      A ma connaissance non, et la seule solution, afin que l’utilisateur ne soit pas obligé de ressaisir ses informations de connexion, est (comme tu l’as dit) le serveur CAS avec SSO.

      Arnaud

      Répondre
  • Merci beaucoup pour ta réponse rapide !

    Je vais essayer de me renseigner pour le serveur CAS bien que d’après les échos que j’ai eu, ce n’est pas une techno simple !

    Sais-tu si FileZ aura encore droit à des mises à jour ?

    Répondre
    • Oui je pense. Mais je pense pas qu’il y en est une pour automatiser l’authentification a filez étant donné que ce n’est un produit Microsoft.

      Répondre
  • J’ai essayé de mettre au point une authentification via NTLM.

    En modifiant les paramètres de mon Apache, je suis parvenu à récupérer mes identifiants via le NTLM (vérifié par une capture de trame Wireshark et par les fichiers de logs Apache).

    Cependant, FileZ est configuré pour afficher la page d’authentification par défaut. Je pense qu’il suffirait de modifier le code php afin qu’il puisse récupérer les informations récupérées par le NTLM pour s’authentifier.

    J’ai trouvé ce code sur GitHub : https://github.com/loune/php-ntlm/blob/master/ntlm.php

    Je ne m’y connais pas en php, mais la problématique ne me semble pas impossible à résoudre.

    Répondre
    • Peux tu me donner les paramètres que tu as modifiés dans ta conf Apache ?

      J’ai regardé sur le lien que tu m’as donné, je ne m’y connais pas non plus en php, mais ça vaut le coup d’essayer 😉 tiens moi au courant.

      Répondre
  • J’ai suivi particulièrement ce tuto (mais pas que) : http://gnomeskull.com/?p=162

    Voilà ma conf de mon fichier ntlm.conf,

    PerlAuthenHandler Apache2::AuthenNTLM
    AuthType NTLM
    AuthName FileZ
    require valid-user
    PerlAddVar ntdomain « DOMAIN PDC »
    PerlSetVar defaultdomain DOMAIN
    PerlSetVar splitdomainprefix 0
    PerlSetVar ntlmdebug 1
    PerlSetVar ntlmauthoritative on

    Répondre
    • Salut Julien,

      As tu réussi à faire ce que tu voulais ?

      Répondre
  • Salut Arnaud,

    Je pars prochainement en congés et j’ai eu d’autres choses sur le tas à faire …
    Je m’y replongerai début septembre. De tout façon j’ai deux solutions :
    – soit je me lance et je tente moi même de modifier les fichiers php
    – soit je trouve quelqu’un dans ma boîte qui s’y connait.

    Je te tiendrais au courant dans tous les cas, mais si tu connais quelqu’un de compétent en php, ça m’intéresse !

    Répondre
  • Nous avons réussi (en repartant de zéro par rapport aux derniers commentaires) avec un collègue à s’authentifier de manière automatique via les protocoles NTLM (ne pas oublier les d’activer l’authentification NTLM sous Windows, IE et Firefox).

    Le principe est de récupérer les login/mot de passe via NTLM et de les réinjecter dans les variables d’authentification de FileZ.
    De cette manière, nous n’avons pas supprimé la page d’authentification mais nous avons rendu les informations affichées.

    ETAPE 1
    On commence par installer les modules ntlm (libapache2-authenntlm-perl et apache2-authenntlm-0.02).

    Après chaque installation, redémarrer le service Apache.

    J’ai ajouté les différents codes pour le ntlm dans le fichier de conf /etc/apache2/sites-enabled/000-default :

    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/FileZ/

    Options FollowSymLinks
    AllowOverride all
    Options Indexes FollowSymLinks MultiViews
    Order allow,deny
    allow from all

    PerlAuthenHandler Apache2::AuthenNTLM
    AuthType ntlm,basic
    AuthName Basic
    require valid-user
    PerlAddVar ntdomain « mondomain nomserveurAD »
    PerlSetVar defaultdomain mondomain
    PerlSetVar ntlmdebug 2
    PerlSetVar splitdomainprefix 1
    PerlSetVar ntlmsemtimeout 2

    On redémarre apache.

    Pour tester le fonctionnement du NTLM, on créé une page pour visualiser le infophp(). (Voir tuto sur le net, par exemple http://kb.mediatemple.net/questions/764/How+can+I+create+a+phpinfo.php+page%3F#gs)

    Une fois sur cette page, on cherche la valeur de la variable $_SERVER[`REMOTE_USER] qui doit contenir votre login. Nous n’avons trouvé comment visualiser la variable contenant le mot de passer mais pas d’inquiétude, ça ne nous a pas gêné !

    ETAPE 2
    Nous avons ensuite modifié le fichier FileZ/app/views/auth/loginForm.php du site web :

    <input type="hidden" name="username" class="username" value=" »/>

    <input type="hidden" class="awesome large blue" value=" » />

    document.forms[0].submit();
    $(document).ready (function () {
    $(« input[name=’username’] »).get(0).focus ();
    });

    Les types « hidden » ont été mis pour permettre de « cacher » les infos afficher par la page d’authentification.
    La commande « document.forms[0].submit(); » permet de soumettre automatiquement les infos d’authentification.

    Pour finir de tout « cacher », on modifie le fichier FileZ/resources/css/main.css et on commente « background: #494846; ».

    On peut redémarrer le service apache pour être sûr.

    Normalement, si on a rien oublié ci dessus, ça devrait fonctionner.
    L’ETAPE 2 n’est pas optimale et peut être amélioré. Si vous avez de meilleures idées, n’hésitez pas !

    Répondre
  • Bonjour,

    je rencontre un problème avec la connexion à mon AD.
    Par contre je peux voir que la connexion à l’AD fonctionne car lorsque je rentre un mauvais Login et mot de passe, le serveur m’envoi un message d’erreur « Nom d’utilisateur ou mot de passe incorrect ». Mais lorsqu’ils sont bon la session ne s’ouvre pas et il redemande un login et mot de passe.
    ![image](https://user-images.githubusercontent.com/25910582/53596632-3d134a00-3b44-11e9-84b9-7f34bbbff429.png)

    Voici ma config filez.ini :
    [app]
    use_url_rewriting = 1
    log_dir = « /var/log/filez »
    upload_dir = « /var/filez/uploads »
    max_file_lifetime = 20
    default_file_lifetime = 10
    max_extend_count = 7
    min_hash_size = 4
    max_hash_size = 8
    default_locale = « fr »
    auth_handler_class = « Fz_Controller_Security_Internal »
    user_factory_class = « Fz_User_Factory_Ldap »
    user_quota = « 2G »
    https = « off »
    progress_monitor = « Fz_UploadMonitor_ProgressUpload »
    antivirus = « clamscan -i –no-summary –remove »
    admin_email = « [email protected] »

    [db]
    dsn = « mysql:host=localhost;dbname=filez »
    user = « toto »
    password = « toto »

    [cron]
    days_before_expiration_mail = 2
    frequency = « +10 day »

    [email]
    from_name = « Filez »
    host = « 192.168.0.251 »
    port = 25
    from_email = « [email protected] »
    name = « filez »

    [user_factory_options]
    host = « 192.168.0.2 »
    useSsl = « false »
    baseDn = « dc=adbdt,dc=local »
    accountDomainName = « adbdt.local »
    username = « CN=readAD,OU=Personnels,DC=adbdt,DC=local »
    password = « toto »
    bindRequiresDn = « false »
    accountFilterFormat = « (&(objectClass=user)(sAMAccountName=%s)) »
    bindRequiresDn = true

    [user_attributes_translation]
    firstname = « givenname »
    lastname = « sn »
    email = « mail »
    id = « uid »

    [looknfeel]
    show_credit = 1
    help_url = « help »

    Auriez vous une autre piste ?
    Merci

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.