Trac, authentification à FluxBB au traver de mod_auth_mysql

L'une des façons les plus rapides de faire une authentification sur le net est de passer par un fichier htaccess et un htpasswd. C'est à dire mettre dans un fichier le login et le mot de passe (crypté). Le problème c'est que si cette solution permet de mettre facilement et rapidement un contenu derrière une protection par authentification, elle est cependant guerre poussée et évolutive.

Nous allons donc voir comment modifier notre htaccess (ou encore mieux, notre vHost) pour aller chercher l'information dans une base de données via le module apache mod_auth_mysql. Nous verrons cela au travers d'un exemples : l'identification sur un Trac via les identifiants d'un FluxBB.

Trac et l'identification

Trac n'offre pas de zone membre à proprement parlé. Toute personne qui s'identifie à Trac voit son compte automatiquement crée. Il en résulte qu'on peu donc affecter des droits à un compte qui n'a pas encore était crée. Mais alors comment s'authentifier ? C'est justement là la force de Trac : on peut s'identifier par la méthode que l'on souhaite. Dans un premier temps j'étais passé par un htpasswd mais à présent je désire m'authentifier avec l'identifiant et le mot de passe d'un forum FluxBB.

Prérequis

Évidement il vous faudra un Trac et un FluxBB installés et configurés. Il vous faudra aussi, bien évidement, mod_auth_mysql (yum install mod_auth_mysql). Histoire de faire un cliché avant/après, voici la configuration de mon Trac avant la manipulation :

  1. <Location />
  2. SetHandler mod_python
  3. PythonHandler trac.web.modpython_frontend
  4. PythonOption TracEnv /home/llaumgui/public_html/trac.llaumgui.com/www/
  5. PythonOption TracUriRoot /
  6. # "/tmp" should be some writable temporary directory
  7. SetEnv PYTHON_EGG_CACHE /tmp
  8. # "trac" can be any string, but must be the same for all
  9. # Trac instances on the same Apache install
  10. PythonInterpreter trac
  11. </Location>
  12.  
  13. <Location /login>
  14. AuthType Basic
  15. AuthName "Connection sur les dev de LLaumgui"
  16. AuthUserFile /home/llaumgui/public_html/trac.llaumgui.com/trac.htpasswd
  17. Require valid-user
  18. </Location>

On y remarque que l'identification se fait au travers du fichier /home/llaumgui/public_html/trac.llaumgui.com/trac.htpasswd.

Connexion

On va maintenant passer à une identification MySQL :

  1. Order deny,allow
  2. Deny from all
  3. AuthName "Veuillez saisir votre nom d'utilisateur et votre mot de passe Dotclear"
  4. AuthType Basic
  5. require valid-user
  6. Satisfy Any
  7.  
  8. AuthMySQLAuthoritative On
  9. AuthMySQLEnable On
  10.  
  11. # On se connecte à la base mon_fluxbb du serveur localhost
  12. # Bien sûr l'idéal est qu'apache n'est accès à mon_fluxbb qu'en lecture.
  13. AuthMySQLHost localhost
  14. AuthMySQLUser apache
  15. AuthMySQLPassword mon_mot_de_passe
  16. AuthMySQLDB mon_fluxbb
  17.  
  18. # La table contenant la liste des utilisateur dans FluxBB est la table fluxbb_user
  19. # Le login correspond à username et le mot de passe à password
  20. # Dans FluxBB, les mots de passe sont crypté en sha1
  21. AuthMySQLUserTable fluxbb_user
  22. AuthMySQLNameField username
  23. AuthMySQLPasswordField password
  24. AuthMySQLNoPasswd Off
  25. AuthMySQLPwEncryption sha1

On constate que le choix des méthodes d'encryptages est limité à crypt, scrambled, md5, aes et sha1. Il n'est donc malheureusement pas possible de connecter un Trac avec un Dotclear. En effet, pour le cryptage des mots de passe, Dotclear passe par crypt::hmac.

mod_auth_mysql permet aussi des requêtes plus complexes avec des jointures sur d'autres tables et des clauses where, pour plus d'information, la documentation devrait vous aider.

Attribution - Partage dans les Mêmes Conditions 4.0 International