Apache version 2.2.3のBasic認証でエラーが出る

apacheで

  • Basic認証のディレクティブは合っている
  • Basic認証のIDとパスワードは合っている
  • Basic認証が画面もでる

という状態なのに認証に失敗するという状況になり、悩みました。

Basic認証のディレクティブ

AuthUserFile /home/admin/.private
AuthName "ByPassword"
AuthType Basic
require hoge

error_logのメッセージ

failed, reason: require directives present and no Authoritative handler.

http://httpd.apache.org/docs/2.2/ja/mod/core.html#require
を見ながら、しばらく悩んだところ、原因はディレクティブの

require hoge

ではなく、

require user hoge

であることに気が付きました。

こうする以前は、

require valid-user

としていたので、ユーザごとに制限する場合はvalid-userのかわりに
ユーザ名を書けばよいかと安直に修正してしまったのがハマった主因でした。