LoginSignup
6
7

More than 3 years have passed since last update.

.htaccessでBASIC認証

Last updated at Posted at 2018-11-11

.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

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7