Apacheの基本認証でLDAPとファイル認証を併用すると一部ユーザのアクセスが遅い
tracをapacheのfcgi経由で使っています。認証は基本LDAP(ActiveDirectory)にまかせて、一部特別なユーザはファイル認証にしています。
Apacheの認証周りの設定はこんなかんじ。
AuthType Basic AuthBasicProvider ldap file AuthName "Enter your ID" AuthUserFile /usr/local/apache/conf/.htpasswd Require valid-user Order Allow,Deny Allow from All AuthLDAPBindAuthoritative on AuthLDAPBindDN administrator@example.com AuthLDAPUrl "ldap://ad.example.com:389/dc=example,dc=com,?sAMAccountName?sub?(objectClass=*)" AuthLDAPBindPassword "admin-password" Require ldap-attribute objectClass=person
ところで、一部ユーザのアクセスがとっても遅いというレポートがありました。
いろいろ調べていると、tracの管理者でファイル認証をしているユーザであることがわかりました。
原因がどこにあるか調べるため、ファイル認証を一般ユーザにしてみたり、AD認証ユーザを管理者にしてみたり、またブラウザを変えて実験したりしてみたところ、どうやらファイル認証を用いると遅いということがわかりました。
tracの設定やFCGIも疑ったのですが、まったくの静的ファイルでも同じ現象だったので完全にこれは認証周りの問題。
ということで上記の認証周りの設定をもう一度見直します。関係ありそうなのはAuthBasicProviderでしょうか。マニュアルを参照。とくになにも書いてないなぁ。
順番がよくないのかとこう変更してみました。
AuthBasicProvider file ldap
"ldap file"となっていたのを"file ldap"としてみる。推測としては、認証するときに記述されている順番で認証をトライするのではないかということ。そうするとファイル認証に書かれているユーザはldap(AD)にはないので、ADにタイムアウトを待ってからファイル認証をするはず。そりゃ時間がかかるだろう。
ファイル認証に書かれているユーザはせいぜい5人程度なので逆の順番にすれば、早くなるのでは・・・
ということでこれがビンゴでした。とっても早くなって快適。