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?
la source
Réponses:
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/login
place, 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 detrac.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.
la source