这在 Apache2.2 中完美运行,但在 2.4 中不适用(我现在需要使用 2.4):
<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>
直接使用来自Apache 2.4 mod_authnz_ldap的指令在以下<Directory >
部分有效:
AuthLDAPBindDN cn=Manager,dc=example,dc=com
AuthLDAPBindPassword xxx
AuthLDAPURL ldap://localhost:9011/dc=example,dc=com?uid?sub?(objectClass=*)
AuthBasicProvider ldap
但这只允许对一个LDAP 服务器进行身份验证,并且我必须对至少两个进行身份验证。
因此,使用AuthnProviderAlias
现在 (2.4)mod_authn_core
核心身份验证模块的一部分,而不是旧的2.2 LDAP 身份验证模块mod_authn_alias
。
我已经在调试模式下使用APR 1.4.8 和 APR-util 1.5.2编译了所有 2.4.x 版本(从 2.4.1 到 2.4.6,甚至是当前版本) ( -g -O0
)
我尝试的是调试会话(gdb --command=debug
,带有 ' debug
' 的 gdb 参数文件如下):
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
我看到的是:
- 的
authaliassection
函数mod_authn_core
被调用了两次,可能是因为在同一个函数server/main.c
中调用ap_process_config_tree
了两次(一次在这里,一次在那里) 。main()
该函数得到authcfg
authn_alias_srv_conf *authcfg =
(authn_alias_srv_conf *)ap_get_module_config(r->server->module_config,
&authn_core_module);
并使用正确的名称' '和正确的别名' '设置提供者ldap
myldap
apr_hash_set(authcfg->alias_rec, provider_alias, APR_HASH_KEY_STRING, prvdraliasrec);
但是:当需要检查密码时(在 中authn_alias_check_password
,它会authcfg
再次获取,并获取提供者:
provider_alias_rec *prvdraliasrec = apr_hash_get(authcfg->alias_rec,
provider_name, APR_HASH_KEY_STRING);
它使用正确provider_name
的' myldap
',......并且总是返回null
。
这意味着prvdraliasrec->provider->check_password
永远不会被调用。
http-dev 邮件列表中的一个类似问题(2013 年 8 月 23 日“AuthnProviderAlias 在 2.4 中是否被巧妙地破坏了?”)......没有得到解答。
您将如何解决此错误?