Apache, Trac und LDAP - wie klebt man sie alle zusammen?


8

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?


Hast du es behoben? Ich bin an der Lösung dieses Problems interessiert ...
Kartoch

Antworten:


1

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/loginOrt 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 aus trac.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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.