Apache, Trac y LDAP: ¿cómo pegarlos todos?

8

Estoy tratando de configurar Trac para autorizar a los usuarios a través del complemento LDAP en un servidor Debian (Lenny).

LDAP parece estar funcionando correctamente, puedo consultar con éxito a través de:

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

Y si deliberadamente rompo la configuración de mi dirección Apache LDAP, puedo ver errores en /var/log/apache2/error.log

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

Cuando visito http://example.com:8022/trac y hago clic en el botón de inicio de sesión, aparece la ventana de autenticación (confirmando nuevamente que LDAP se está activando), sin embargo , cuando ingreso un nombre de usuario / contraseña correctos, obtengo un sitio web de Trac página con:

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

TracGuide — The Trac User and Administration Guide

Los registros son igualmente inútiles (ignore el error svn, soy consciente de eso):

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.

Mi configuración de apache es la siguiente.

<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>

El servidor tiene una serie de otros servicios en desarrollo en ejecución, de ahí el número de puerto impar.

Mi trac.ini es una instalación nueva, con los siguientes cambios:

[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

Para probar, acabo de iniciar el servidor Trac con:

bin/tracd --port 8202 parts/trac

¿A dónde me estoy yendo mal? Parece que la configuración de Apache es un error, ya que LDAP parece estar funcionando.

¿Es ese el comando correcto para iniciar el servidor (htpasswd, por ejemplo, tiene sus propias opciones)?

A la larga, ¿cuál es la mejor manera de ejecutar el servidor? WSGI?

Jon Hadley
fuente
¿Lo arreglaste? Me interesa la solución de este problema ...
Kartoch

Respuestas:

1

Si necesita probar su enlace "Apache + LDAP + Trac", no necesita ejecutarlo de manera independiente bin/tracd.

Primero intente utilizar la autenticación Apache LDAP con Trac sin LdapPlugin (solo agrega la capacidad de administrar los permisos de trac para grupos LDAP). Debe configurar la autenticación en la /trac/loginubicación, y Trac obtendrá automáticamente el nombre de usuario autenticado. Mire aquí: TracModWSGI - Configuración de autenticación Esto funciona bien en mi configuración (Debian Squeeze, Trac 0.12). Tan solo elimine todas sus modificaciones de trac.ini.

Cuando obtenga la autenticación de trabajo, puede comenzar a configurar LdapPlugin.

WSGI es, en mi humilde opinión, la mejor manera de ejecutar la aplicación Python en Apache, es rápido y simple.

Selivanov Pavel
fuente