Apache, Trac et LDAP - comment les coller tous ensemble?


8

J'essaie de configurer Trac pour autoriser les utilisateurs via le plugin LDAP sur un serveur Debian (Lenny).

LDAP semble fonctionner correctement, je peux interroger avec succès via:

ldapsearch -vLx -h 127.0.0.1 -b "dc=example, dc=com" "(sn=mysurname)"

Et si je casse délibérément mes paramètres d'adresse LDAP Apache, je peux voir des erreurs dans /var/log/apache2/error.log

2010-08-27 17:19:38,909 Trac[api] WARNING: LDAP error: No such object (dc=examplefoo,dc=com)

Lorsque je visite http://example.com:8022/trac et que je clique sur le bouton de connexion, la fenêtre d'authentification apparaît (confirmant à nouveau que LDAP entre en action), cependant , lorsque j'entre un nom d'utilisateur / mot de passe correct, j'obtiens simplement un site Web Trac page avec:

Trac Error
Authentication information not available. Please refer to the installation documentation.

TracGuide — The Trac User and Administration Guide

Les journaux sont également inutiles (ignorez l'erreur svn, j'en suis conscient):

2010-09-01 14:25:30,553 Trac[api] DEBUG: NEEDS UP?: sys:False, rep:False, stats:False, fields:False, man:False
2010-09-01 14:25:30,577 Trac[env] WARNING: base_url option not set in configuration, generated links may be incorrect
2010-09-01 14:25:30,577 Trac[main] DEBUG: Dispatching <Request "GET u'/login'">
2010-09-01 14:25:30,583 Trac[svn_fs] INFO: Failed to load Subversion bindings
Traceback (most recent call last):
  File "/home/web/example/buildout-cache/eggs/Trac-0.11-py2.6.egg/trac/versioncontrol/svn_fs.py", line 251, in __init__
    _import_svn()
  File "/home/web/example/buildout-cache/eggs/Trac-0.11-py2.6.egg/trac/versioncontrol/svn_fs.py", line 69, in _import_svn
    from svn import fs, repos, core, delta
ImportError: No module named svn
2010-09-01 14:25:30,584 Trac[chrome] DEBUG: Prepare chrome data for request
2010-09-01 14:25:30,586 Trac[api] DEBUG: action controllers for ticket workflow: ['ConfigurableTicketWorkflow']
2010-09-01 14:25:30,597 Trac[perm] DEBUG: No policy allowed anonymous performing TICKET_CREATE on None
2010-09-01 14:25:30,599 Trac[perm] DEBUG: No policy allowed anonymous performing TRAC_ADMIN on None
2010-09-01 14:25:30,599 Trac[perm] DEBUG: No policy allowed anonymous performing PERMISSION_GRANT on None
2010-09-01 14:25:30,599 Trac[perm] DEBUG: No policy allowed anonymous performing PERMISSION_REVOKE on None
2010-09-01 14:25:30,599 Trac[perm] DEBUG: No policy allowed anonymous performing TICKET_ADMIN on None
2010-09-01 14:25:30,601 Trac[main] WARNING: 500 Trac Error (Authentication information not available. Please refer to the <a href="https://serverfault.com/trac/wiki/TracInstall#ConfiguringAuthentication" title="Configuring Authentication">installation documentation</a>.)
2010-09-01 14:25:30,621 Trac[perm] DEBUG: No policy allowed anonymous performing EMAIL_VIEW on None
2010-09-01 14:25:30,621 Trac[session] DEBUG: Retrieving session for ID '20e2cfb643bff0f9121fe615'
2010-09-01 14:25:30,641 Trac[tande_filters] DEBUG: self.billing_reports= set([9, 10, 11, 12, 13, 14, 15, 16, 17])
2010-09-01 14:25:30,642 Trac[ticket_webui] DEBUG: TicketWebUiAddon executing
2010-09-01 14:25:30,774 Trac[main] DEBUG: 124 unreachable objects found.

Ma configuration Apache est la suivante.

<VirtualHost example.com:8022>
    ServerName example.com
    ServerAlias example.com

    ProxyRequests Off
    <Proxy *>
      Order deny,allow
      Allow from all
    </Proxy>

    ProxyPreserveHost On
    RewriteEngine On
    RewriteCond %{HTTP:Authorization} ^(.*)
    RewriteRule ^/(.*) http://127.0.0.1:8002/$1 [P]
</VirtualHost>

<Location /trac/login>
   AuthType Basic
   AuthName "Trac"
   AuthBasicProvider ldap
   Order Allow,Deny
   Allow from All
   AuthLDAPURL "ldap://127.0.0.1:389/dc=example,dc=com?uid"
   #should be on if using groups
   AuthzLDAPAuthoritative off
   Require valid-user
   #Require ldap-group cn=tracusers,dc=example,dc=com
</Location>

Le serveur dispose d'un certain nombre d'autres services en cours de développement, d'où le numéro de port impair.

Mon trac.ini est une nouvelle installation, avec les modifications suivantes:

[ldap]
basedn = dc=example,dc=com
bind_passwd = foo
bind_user = cn=admin,dc=example,dc=com
enable = true
group_rdn = ou=people
host = 127.0.0.1
port = 389
use_tls = false
user_rdn = ou=users

[components]
ldapplugin.* = enabled

Pour les tests, je démarre simplement le serveur Trac avec:

bin/tracd --port 8202 parts/trac

Où vais-je mal? Il semble que la configuration d'Apache soit aussi défectueuse, car LDAP semble fonctionner.

Est-ce la bonne commande pour démarrer le serveur (htpasswd par exemple a ses propres options)?

À long terme, quelle est la meilleure façon d'exécuter le serveur? WSGI?


L'avez-vous réparé? Je suis intéressé par la solution de ce problème ...
Kartoch

Réponses:


1

Si vous devez tester votre liaison "Apache + LDAP + Trac", vous n'avez pas besoin de l'exécuter de façon autonome bin/tracd.

Essayez d'abord d'utiliser l'authentification Apache LDAP avec Trac sans LdapPlugin (cela ajoute simplement la possibilité de gérer les autorisations trac pour les groupes LDAP). Vous devez configurer l'authentification sur /trac/loginplace, et Trac obtiendra automatiquement le nom d'utilisateur authentifié. Regardez ici: TracModWSGI - ConfiguringAuthentication Cela fonctionne très bien dans ma configuration (Debian Squeeze, Trac 0.12). Supprimez donc toutes vos modifications de trac.ini.

Lorsque vous obtiendrez une authentification fonctionnelle, vous pourrez commencer à configurer LdapPlugin.

WSGI est le meilleur moyen à mon humble avis d'exécuter une application python sur Apache, c'est rapide et simple.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.