パソコン鳥のブログ

アクセスカウンタ

zoom RSS Apacheのbasic認証とdigest認証

<<   作成日時 : 2013/11/21 20:51   >>

ブログ気持玉 0 / トラックバック 4 / コメント 0

ブラウザであるページにアクセスした場合に、ユーザ名とパスワードで認証を求められるページの設定方法です。
Apacheの設定で、basic認証とdigest認証の2通りの設定方法を説明します。

なお、以下は CentOS6 での設定です。
Ubuntuでは /etc/httpd/conf/httpd.conf の代わりに /etc/apache2/sites-available/ 下のファイルにて設定して下さい。

basic認証の場合


認証用ユーザを作成します。
パスワード入力を求められるので、設定するパスワードを入力します。
なお、はじめてパスワードファイルを作成する場合は、-c オプションを指定します。2回目以降は -c 無しで実行して下さい。

htpasswd [-c] パスワードファイル ユーザ名


例えば始めてパスワードファイルを作成する場合で、ユーザ test1 を作成す場合は次のように -c 付きで実行します。

htpasswd -c /etc/httpd/.htpasswd test1


既にパスワードファイルが存在している場合は、-cは付けずに実行します。

htpasswd /etc/httpd/.htpasswd test2


認証用ユーザを作成したら、Apacheの設定を行います。

サンプルとして、認証が必要なページの URL は
http://localhost/auth-basic/
のような、auth-basic 以下とします。

ディレクトリ auth-basic を作成します。

mkdir -p /var/www/html/auth-basic


/etc/httpd/conf/httpd.conf に設定を追加します。

<Directory "/var/www/html/auth-basic">
 AuthType Basic
 AuthName レルム名
 AuthUserFile パスワードファイル
 Require valid-user または Require user ユーザ1 ユーザ2 ...
</Directory>


AuthType
Basic認証の場合は、AuthType に Basic を指定します

AuthName
レルム名を指定します。レルム名はユーザが任意に決めます。
レルム名の詳細は後ほど説明します。
また、レルム名はブラウザでのユーザ名/パスワード入力ダイアログに表示されます。
ブラウザで認証が必要なページにアクセスした時に表示されるダイアログ(下記画像)の XXXXXXX に該当する表示です。
画像


AuthUserFile
認証用ユーザの作成時に指定したパスワードファイルを記述します。

Require
valid-user を指定すると、認証ユーザはパスワードファイルに設定されている全ユーザが対象になります。
user に続けてスペース区切りでユーザを列挙すると、(パスワードファイルに設定されている中から)指定されたユーザのみ認証の対象となります。

例えば、パスワードファイルに設定されている全ユーザを認証する場合は以下のようになります。

<Directory "/var/www/html/auth-basic">
 AuthType Basic
 AuthName "Protected Area"
 AuthUserFile /etc/httpd/.htpasswd
 Require valid-user
</Directory>


ユーザ test1 , test2 のみ認証する場合は以下のようになります。

Directory "/var/www/html/auth-basic"
 AuthType Basic
 AuthName "Protected Area"
 AuthUserFile /etc/httpd/.htpasswd
 Require user test1 test2
</Directory>


最後に Apache に設定ファイルを読み込ませます。

/etc/init.d/httpd reload


これでWEBサーバ上で http://localhost/auth-basic/ にアクセスすると、次のようなダイアログが出てID/パスワードを要求されるようになります。
画像



digest認証の場合


認証用ユーザを作成します。
パスワード入力を求められるので、設定するパスワードを入力します。
なお、はじめて作成する場合は、-c オプションを指定します。2回目以降は -c 無しで実行して下さい。

htdigest [-c] パスワードファイル レルム名 ユーザ名


レルム名はユーザが任意に決めます。
レルム名の詳細は後ほど説明します。
また、レルム名は、ブラウザで認証が必要なページにアクセスした時に表示されるダイアログ(下記画像)の XXXXXXX の箇所に表示されます。
画像

なお、レルム名に空白を含む場合は、''で括って指定して下さい。

例えば始めてパスワードファイルを作成する場合で、ユーザ test1 を作成す場合は次のように -c 付きで実行します。

htdigest -c /etc/httpd/.htdigest 'Protected Area' test1


既にパスワードファイルが存在している場合は、-cは付けずに実行します。

htdigest /etc/httpd/.htdigest 'Protected Area' test2


認証用ユーザを作成したら、Apacheの設定を行います。

サンプルとして、認証が必要なページの URL は
http://localhost/auth-digest/
のような、auth-digest 以下とします。

ディレクトリ auth-digest を作成します。

mkdir -p /var/www/html/auth-digest


/etc/httpd/conf/httpd.conf に設定を追加します。

<Directory "/var/www/html/auth-digest">
 AuthType Digest
 AuthName レルム名
 AuthUserFile パスワードファイル
 Require valid-user または Require user ユーザ1 ユーザ2 ...
</Directory>


AuthType
Digest認証の場合は、AuthType に Digest を指定します

AuthName
レルム名を指定します。レルム名はパスワードファイル作成時に指定したものと同じものを指定して下さい。
レルム名の詳細は後ほど説明します。
また、レルム名はブラウザでのユーザ名/パスワード入力ダイアログに表示されます。
ブラウザで認証が必要なページにアクセスした時に表示されるダイアログ(下記画像)の XXXXXXX に該当する表示です。
画像


AuthUserFile
認証用ユーザの作成時に指定したパスワードファイルを記述します。

Require
valid-user を指定すると、認証ユーザはパスワードファイルに設定されている全ユーザが対象になります。
user に続けてスペース区切りでユーザを列挙すると、(パスワードファイルに設定されている中から)指定されたユーザのみ認証の対象となります。

例えば、パスワードファイルに設定されている全ユーザを認証する場合は以下のようになります。

<Directory "/var/www/html/auth-digest">
 AuthType Digest
 AuthName "Protected Area"
 AuthUserFile /etc/httpd/.htdigest
 Require valid-user
</Directory>


ユーザ test1 , test2 のみ認証する場合は以下のようになります。

Directory "/var/www/html/auth-digest"
 AuthType Digest
 AuthName "Protected Area"
 AuthUserFile /etc/httpd/.htdigest
 Require user test1 test2
</Directory>


最後に Apache に設定ファイルを読み込ませます。

/etc/init.d/httpd reload


これでWEBサーバ上で http://localhost/auth-basic/ にアクセスすると、次のようなダイアログが出てID/パスワードを要求されるようになります。
画像




レルム名について


レルム名は認証領域を示す名前です。
あるレルム名が設定された認証領域で一旦ユーザ名/パスワードで認証された後は、同じレルム名の認証領域へのアクセスでは、再度ユーザ名/パスワードは聞かれなくなります。

例えば /etc/httpd/conf/httpd.conf で次のように設定したとします。


<Directory "/var/www/html/auth-digest1">
 AuthType Digest
 AuthName "APPLE"
 AuthUserFile /etc/httpd/.htdigest
 Require valid-user
</Directory>

<Directory "/var/www/html/auth-digest2">
 AuthType Digest
 AuthName "APPLE"
 AuthUserFile /etc/httpd/.htdigest
 Require valid-user
</Directory>

<Directory "/var/www/html/auth-digest3">
 AuthType Digest
 AuthName "ORANGE"
 AuthUserFile /etc/httpd/.htdigest
 Require valid-user
</Directory>


auth-digest1 と auth-digest2 はレルム名(AuthNameで指定)が "APPLE" で同じです。
従って、auth-digest1 で一度ユーザ名/パスワードで認証されると、auth-digest2 へのアクセスでは、再度ユーザ名/パスワードを聞かれること無くアクセス出来ます。

一方、auth-digest1 と auth-digest3 では、レルム名(AuthNameで指定)が "APPLE" と "ORANGE" で異なります。
この場合は、auth-digest1 で一度ユーザ名/パスワードで認証しても、auth-digest3 へのアクセスで再度ユーザ名/パスワードが聞かれます。

このように、認証領域は Directoryディレクティブで指定するディレクトリ単位では無く、レルム単位となります。

レルム名は、ブラウザで認証が必要なページにアクセスした時に表示されるダイアログ(下記画像)の XXXXXXX に表示されますが、単なる表示内容ではないことに注意して下さい。

画像



参考


Apache/ベーシック認証の設定 - ウェブ関連技術調査
ベーシック認証を設定する(AuthType) - アクセス制限 - Apache入門
@IT:Apacheでユーザー認証を行うには(Basic認証編)
@IT:Apacheでユーザー認証を行うには(Digest認証編)
PasswordBasicAuth - Httpd Wiki
htdigest - manage user files for digest authentication - Apache HTTP Server
mod_auth_digest - Apache HTTP Server
認証、承認、アクセス制御 - Apache HTTP サーバ




テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(4件)

タイトル (本文) ブログ名/日時
apacheユーザ認証(HTTP認証)への総当たり攻撃(辞書攻撃/ブルートフォースアタック)への対処
IDやパスワードを変えて何度も接続を試みる総当たり攻撃(辞書攻撃/ブルートフォースアタック)への対処として、これまで下記を紹介しました。 ...続きを見る
パソコン鳥のブログ
2013/11/26 22:23
apacheでBasic認証をLixnuxアカウントでおこなう
Apache が動作している Linux のユーザアカウントで Basic認証する方法です。 なお、Digest認証には対応していません。 CentOS6/7,Ubuntu14.04の場合です。 ...続きを見る
パソコン鳥のブログ
2017/03/07 22:54
Apache2で接続元IPかユーザ認証いずれかをパスすればアクセスOKにする
Apache2のアクセス制限で、接続元IPかユーザ認証いずれかをパスすればOKにする方法です。 指定の接続元IPだったらアクセスOK、指定外のIPアドレスの場合はユーザ認証が通ればOK、という制限ができます。 ...続きを見る
パソコン鳥のブログ
2017/07/11 19:22
Basic/Digest認証したユーザ名を取得する
Apache で Basic/Digest認証したユーザ名を取得する方法です。 設定方法は次の記事を参照してください。 ...続きを見る
パソコン鳥のブログ
2017/08/01 19:45

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
Apacheのbasic認証とdigest認証 パソコン鳥のブログ/BIGLOBEウェブリブログ
文字サイズ:       閉じる