Apache認証ディレクティブとは
- httpd.conf(または
.htaccess)で、特定ディレクトリにアクセス制限をかけるためのディレクティブ群 - BASIC認証・ダイジェスト認証の2パターンがある
ディレクティブ一覧
| ディレクティブ | 説明 |
|---|---|
| AuthType | 認証方式を指定 BASIC認証の場合は Basicダイジェスト認証の場合は Digest |
| AuthName | 認証領域名(realm)を指定 ここで指定した文字列は認証要求時にブラウザに送信され、画面に表示される |
| AuthUserFile | 作成したパスワードファイル名を指定 |
| AuthGroupFile | 作成したグループファイル名を指定 |
| Require | 認証済みユーザのうち、リソースへのアクセスを許可するユーザまたは所属グループを指定 ・ユーザの場合 Require user <ユーザ名> <ユーザ名> …・グループの場合 Require group <グループ名> <グループ名> …・認証済み全員 Require valid-user |
BASIC認証 と ダイジェスト認証 の違い
| 項目 | BASIC認証 | ダイジェスト認証 |
|---|---|---|
| AuthType | Basic | Digest |
| 担当モジュール | mod_auth_basic | mod_auth_digest |
| パスワードの送信 | Base64 エンコードのみ(暗号化ではない) | MD5 ハッシュによるチャレンジ/レスポンス |
| パスワードファイル作成 | htpasswd | htdigest |
| 安全性 | 低い(盗聴で平文同然) → HTTPS必須 | BASICより高いが現在は脆弱とされる |
ポイント:BASIC認証はパスワードを「暗号化」しているわけではなく、Base64でエンコードしているだけ。デコードすれば平文が見えるため、必ずHTTPSと併用する。
モジュールの2段構成:BASIC認証の
mod_auth_basicは認証「方式」を担う窓口で、実際に htpasswd ファイルと照合するのは認証プロバイダmod_authn_file。つまり BASIC は mod_auth_basic(方式)+ mod_authn_file(ファイル照合) の2段。一方ダイジェストのmod_auth_digestはプロバイダを内蔵し単体で完結する。
パスワードファイルの作成
BASIC認証(htpasswd)
# 新規作成(-c)。2回目以降は -c を付けない(付けるとファイルが上書きされる)
htpasswd -c /etc/httpd/conf/.htpasswd user1
# ユーザ追加・パスワード変更(-c なし)
htpasswd /etc/httpd/conf/.htpasswd user2
# ユーザ削除(-D)
htpasswd -D /etc/httpd/conf/.htpasswd user2
htpasswd の3点セット:
-c(新規作成・既存ファイルは上書きで全消し)/オプションなし(追加・パスワード変更)/-D(ユーザ削除)。
ダイジェスト認証(htdigest)
# realm(=AuthName と一致させる)を引数に取るのが特徴
htdigest -c /etc/httpd/conf/.htdigest "Restricted Area" user1
注意:
htdigestは realm名 を引数に取る。この realm はAuthNameの値と一致させる必要がある。
設定例
BASIC認証
<Directory "/var/www/html/secret">
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/httpd/conf/.htpasswd
Require valid-user
</Directory>
ダイジェスト認証
<Directory "/var/www/html/secret">
AuthType Digest
AuthName "Restricted Area"
AuthUserFile /etc/httpd/conf/.htdigest
Require valid-user
</Directory>
AuthName "Restricted Area"とhtdigest実行時の realm を一致させること。