Ich versuche, Trac so einzurichten , dass Benutzer über das LDAP-Plugin auf einem Debian-Server (Lenny) autorisiert werden.
LDAP scheint korrekt zu funktionieren, ich kann erfolgreich abfragen über:
ldapsearch -vLx -h 127.0.0.1 -b "dc=example, dc=com" "(sn=mysurname)"
Und wenn ich absichtlich meine Apache LDAP-Adresseinstellungen aufbreche, sehe ich Fehler in /var/log/apache2/error.log
2010-08-27 17:19:38,909 Trac[api] WARNING: LDAP error: No such object (dc=examplefoo,dc=com)
Wenn ich besuchen http://example.com:8022/trac und klicken Sie auf das Authentifizierungsfenster den Login - Button öffnet sich (erneut bestätigt , dass LDAP in kicking), aber , wenn ich einen korrekten Benutzernamen / Passwort eingeben bekomme ich nur ein Trac Web Seite mit:
Trac Error
Authentication information not available. Please refer to the installation documentation.
TracGuide — The Trac User and Administration Guide
Die Protokolle sind ebenfalls nicht hilfreich (ignorieren Sie den SVN-Fehler, das ist mir bewusst):
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.
Mein Apache-Setup ist wie folgt.
<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>
Auf dem Server werden eine Reihe anderer in Entwicklung befindlicher Dienste ausgeführt, daher die ungerade Portnummer.
Meine trac.ini ist eine Neuinstallation mit den folgenden Änderungen:
[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
Zum Testen starte ich den Trac-Server einfach mit:
bin/tracd --port 8202 parts/trac
Wo gehe ich falsch? Es fühlt sich an, als ob die Apache-Konfiguration als Fehler vorliegt, da LDAP anscheinend funktioniert.
Ist das der richtige Befehl, um den Server zu starten (htpasswd hat zum Beispiel seine eigenen Optionen)?
Was ist auf lange Sicht der beste Weg, um den Server zu betreiben? WSGI?
quelle
Antworten:
Wenn Sie Ihre "Apache + LDAP + Trac" -Bindung testen müssen, müssen Sie sie nicht eigenständig ausführen
bin/tracd
.Versuchen Sie zunächst, die Apache LDAP-Authentifizierung mit Trac ohne LdapPlugin zu verwenden (es wird lediglich die Möglichkeit hinzugefügt, Trac-Berechtigungen für LDAP-Gruppen zu verwalten). Sie sollten die Authentifizierung vor
/trac/login
Ort konfigurieren , und Trac erhält automatisch einen authentifizierten Benutzernamen. Schauen Sie hier: TracModWSGI - ConfiguringAuthentication Dies funktioniert gut in meinem Setup (Debian Squeeze, Trac 0.12). Entfernen Sie einfach alle Ihre Änderungen austrac.ini
.Wenn Sie eine funktionierende Authentifizierung erhalten, können Sie mit der Konfiguration von LdapPlugin beginnen.
WSGI ist meiner Meinung nach der beste Weg, um eine Python-Anwendung auf Apache auszuführen. Es ist schnell und einfach.
quelle