2011-06-06 3 views
2

Je voudrais implémenter un processus d'authentification dynamique en utilisant Apache et PHP. Mon projet actuel est casser en deux parties:Authentification dynamique Apache via PHP

  1. J'ai un fonctionnement classique de projet LAMP, où les utilisateurs ont déjà un login/mot de passe que j'utiliser pour leur donner accès à différentes parties de mon système.

  2. Certains documents (Text, Office, ...) sont hébergés sur un serveur DAV distinct (même serveur mais domaines différents) et les utilisateurs peuvent les modifier directement à partir de leur programme Office (Word, Excel ...) en utilisant Dav/Combinaison ActiveX/IE.

Je voudrais permettre aux utilisateurs enregistrés sur mon premier système à utiliser méthode différente de DAV en fonction de leur droit actuel (stocké dans le DB)

Par exemple, M. X peut avoir accès au document A avec la méthode PUT/GET, mais pas d'accès au document B.

Je résous généralement ce genre de problème en utilisant une authentification PHP, mais, autant que je sache, mon authentification s'est produite dans l'application Microsoft Office. Bureau directement "discuter" avec Apache donc j'ai certainement besoin de remplacer le fichier .htaccess par exemple. J'ai trop d'utilisateurs pour les stocker à la main dans le .htaccess (~ 10K) et de nombreux fichiers sur le serveur DAV (~ 1K). En outre, les droits des utilisateurs peuvent changer avec le temps.

Existe-t-il un moyen de générer des fichiers htaccess dynamiques? Ou pour ajouter une sorte de gestionnaire pour "dire" à Apache d'autoriser ou d'interdire un utilisateur/mot de passe à certains fichiers?

Répondre

2

Tout ce que vous avez besoin est http://modauthmysql.sourceforge.net/

Vous pouvez configurer votre apache par .htaccess pour authentifier contre DB mysql. Bien sûr, vous pouvez utiliser les tables Mysql existantes avec des utilisateurs.

Voici ma configuration de travail:

<Directory "/u05/data"> 
      AllowOverride All 

      Order Allow,Deny 
      Allow from All 
      Deny from None 

      AddType application/octet-stream .rar 
      AuthName "Download zone - secured" 
      AuthType Basic 

      AuthMYSQLEnable on 
      AuthMySQLUser http_auth 
      AuthMySQLPassword http_auth 
      AuthMySQLDB mydatabase 
      AuthMySQLUserTable users 
      AuthMySQLNameField user_name 
      AuthMySQLPasswordField user_password 
      AuthMySQLPwEncryption crypt 

      require valid-user 
    </Directory> 
+0

J'ai oublié la question et mis cette fonctionnalité entre parenthèses. Mais autant que je vois, votre réponse semble être une très bonne façon de le faire. – elwood

0

Je suppose que vous pourriez installer un fichier cron php qui interroge la base de données, récupère les noms d'utilisateur et leurs permissions et construit le fichier htacess basé sur cette information. Le script devrait avoir des permissions en écriture sur ce fichier htacess donc je vous suggère de le mettre en sécurité, en dehors de vos projets web et en dehors du répertoire www.

+0

Ce serait la plus simple et la plus évidente à faire, mais l'organisation des fichiers dans des dossiers, sous-dossiers, etc ... font au moins très complexe pour générer un seul fichier qui gère pour chaque dossier et fichier, la liste des utilisateurs qui peuvent y accéder/écrire. Je pense que j'ai absolument besoin de trouver un moyen de dire à Apache si un utilisateur spécifique est autorisé à accéder à un fichier spécifique ou non, avec un morceau de PHP basé sur ma base de données – elwood