.htaccess の記述
.htaccessに設定を書いてBASIC認証を有効にする場合、以下のように記述する。
.htaccess があるディレクトリだけでなく、サブディレクトリにも適用される。
AuthUserFile /etc/apache2/.htpasswd
AuthGroupFile /dev/null
AuthName "Basic Auth"
AuthType Basic
Require valid-user
1行目の AuthUserFile は認証で使うユーザ名とパスワードを記述したファイル(パスワードファイル)を指定する。このファイルの作り方は後述。
2行目の AuthGroupFile は認証で使うグループを記述したファイルを指定する。使わない場合は /dev/null とすればよい。/dev/null 以外が指定されているのを見たことがない。解説サイトとかでも大体 /dev/null でいいと書いてある。
3行目の AuthName は認証領域(authentication realm)を表す。ID・パスワード入力のダイアログに表示されるが、単なる表示用テキストではない。
4行目の AuthType は認証の方式を指定する。BASIC認証の場合は "BASIC"。
5行目の require この制限でアクセスを許可するユーザやグループを指定する。"valid-user" は認証されたすべてのユーザ、つまりAuthUserFileで指定されたファイルに記述されたすべてのユーザにアクセスを許可する。
htpasswdコマンド
BASIC認証で使うパスワードファイルは htpasswd コマンドを使用する。
最初にファイルを作成するときは -c オプションを付けて実行する。
htpasswd -c <パスワードファイル名> <ユーザ名>
ユーザを追加する場合はオプションなしで実行する。
htpasswd <パスワードファイル名> <ユーザ名>
ユーザを削除する場合は -D オプションを付けて実行する。
htpasswd -D <パスワードファイル名> <ユーザ名>
IPアドレスによるアクセス制限との組み合わせ
BASIC認証とIPアドレスによるアクセス制限を組み合わせには、.htaccess に以下のように記述する。
AuthUserFile /etc/apache2/.htpasswd
AuthGroupFile /dev/null
AuthName "Basic Auth"
AuthType Basic
Require valid-user
Satisfy Any
Order Allow,Deny
Allow from 192.168.36.0/24
7行目の Satisfy のパラメータは Any または All である。
- Satisfy Any:IPアドレス制限とBASIC認証のどちらか一方を満たせばアクセスが許可される。
- Satisfy All:IPアドレス制限とBASIC認証の両方を満たす場合にアクセスが許可される。
参考
ApacheによるWebサーバ構築(10):ユーザー認証によるアクセス制限(ベーシック認証編) (2/2) - @IT
mod_auth - Apache HTTP サーバ
Apache チュートリアル: .htaccess ファイル - Apache HTTP サーバ バージョン 2.2
htpasswd コマンドの使い方 - KUNITAKE's Wiki
ApacheでのBasic認証とIPアドレスによるアクセス制限 - 積み重ねた日々
htaccessの上位ディレクトリでallowをしているとベーシック認証が効かない。|パソコンいろいろ
ミケネコの htaccess リファレンス
Basic認証を使用したサイトの構築(CentOS+Apache) - ぬけラボ
アクセス制限の記述(Order, Allow, Deny) - アクセス制限 - Apache入門
.htaccess概論|.htaccess|Web制作 W3G