¿Puede funcionar AuthnProviderAlias ​​ldap con Apache2.4.x?

Esto funciona perfectamente en Apache2.2, pero no en 2.4 (y yonecesitar usar 2.4 ahora):

<AuthnProviderAlias ldap myldap>
  AuthLDAPBindDN cn=Manager,dc=example,dc=com
  AuthLDAPBindPassword xxxx
  AuthLDAPURL ldap://localhost:9011/dc=example,dc=com?uid?sub?(objectClass=*)
</AuthnProviderAlias>

Listen 48443
<VirtualHost myserver:48443>
 <Directory /path/to/a/folder>
        Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
        AllowOverride All
        order allow,deny
        Allow from all

        AuthBasicProvider myldap mySecondLdap myThirdLdap ...

        AuthType Basic
        AuthName "LDAP authentication for folder"
        Require valid-user
        ...
  </Directory>
</VirtualHost>

Usando directamente las directivas deApache 2.4 mod_authnz_ldap trabaja en el<Directory > sección:

AuthLDAPBindDN cn=Manager,dc=example,dc=com
AuthLDAPBindPassword xxx
AuthLDAPURL ldap://localhost:9011/dc=example,dc=com?uid?sub?(objectClass=*)
AuthBasicProvider ldap

Pero eso permite una autentificación.contra solouno Servidor LDAP, y tengo que autenticarme contra al menos dos.
De ahí el uso deAuthnProviderAlias, que ahora es (2.4) parte demod_authn_core módulo de autenticación de núcleo, en lugar de lo viejo2.2 módulo de autenticación LDAPmod_authn_alias.

He compilado todas las versiones 2.4.x (de 2.4.1 a 2.4.6, e incluso actual), conAPR 1.4.8, y APR-util 1.5.2, en modo debug (-g -O0)

Lo que intenté es una sesión de depuración (gdb --command=debug, con 'debug'un archivo de parámetros gdb como sigue):

file /home/vonc/usr/local/apps/apache/bin/httpd
set logging file /home/vonc/gdb.txt
set logging on
set args -X
show args
set breakpoint pending on

# authn_alias_check_password
b mod_authn_core.c:115
# authaliassection
b mod_authn_core.c:203
b mod_authn_core.c:255

run
wh
fs next
where

Lo que veo es:

laauthaliassection funcion demod_authn_core se llamados vecesprobablemente porserver/main.c llamadasap_process_config_tree dos veces (una vez aquíyuna vez ahí) en el mismomain() función.

Esa funcionobtiene elauthcfg

authn_alias_srv_conf *authcfg =
    (authn_alias_srv_conf *)ap_get_module_config(r->server->module_config,
                                                 &authn_core_module);

Yestablece el proveedor con el nombre correcto 'ldap'y alias derecho'myldap'

apr_hash_set(authcfg->alias_rec, provider_alias, APR_HASH_KEY_STRING, prvdraliasrec);

PERO: cuando la contraseña necesita ser revisada (enauthn_alias_check_password, se poneauthcfg otra vez ybuscar al proveedor:

    provider_alias_rec *prvdraliasrec = apr_hash_get(authcfg->alias_rec,
                                                     provider_name, APR_HASH_KEY_STRING);

Usa el derechoprovider_name 'myldap', ... y que siempre vuelve.null.
eso significaprvdraliasrec->provider->check_password nunca te llamen

Una pregunta similar en ellista de correo http-dev (23 de agosto de 2013 "¿Está AuthnProviderAlias ​​sutilmente dividido en 2.4?") fue ... sin respuesta.

¿Cómo solucionarías este error?

Respuestas a la pregunta(2)

Su respuesta a la pregunta