これは 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
しかし、それでは1 つのLDAP サーバーに対してしか認証できず、少なくとも 2 つのサーバーに対して認証する必要があります。
したがって、古い2.2 LDAP 認証モジュールの代わりに、AuthnProviderAlias
現在 (2.4)mod_authn_core
コア認証モジュールの一部である を使用します。mod_authn_alias
2.4.x のすべてのバージョン (2.4.1 から 2.4.6 まで、さらには現在のものまで) をAPR 1.4.8 と APR-util 1.5.2でデバッグ モード ( -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
2 回呼び出されています。おそらく、同じ関数内で2 回(ここで1 回、あちらserver/main.c
で 1 回)呼び出しが行われているためです。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);
BUT:パスワードをチェックする必要がある場合(で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 日「Is AuthnProviderAlias は 2.4 で微妙に壊れていますか?」 )での同様の質問は...未回答でした。
このバグをどのようにトラブルシューティングしますか?