Apacheで認証有りのページを作成する(digest認証)




バージョン 2.2.3

Web サイトでページを閲覧できるユーザを限定したい場合、認証をかけることができる。
Apache で digest 認証有りのページを作成する方法は次の通り。

digest 認証は basic 認証に比べ、
パスワードが暗号化されてやり取りされるため、
セキュリティが高い。

ただし、古いブラウザが対応できないため導入には注意が必要。

まず、Web 認証用のユーザを作成する。

# htdigest -c [任意のファイル名] [レルム] [任意のユーザ名]
New password:
Re-type new password:

例)
# htdigest -c /etc/httpd/.htdigest 'secret page' test
Adding password for test in realm secret page.
New password: [任意のパスワード]
Re-type new password:[上で入力したパスワード]

「-c」オプションは、パスワードファイルを作成する際に使用する。
1回目のユーザ作成時のみ「-c」を使用。
2回目以降不要。

認証をかけたいディレクトリを作成する。

# mkdir /var/www/html/secret

次に、httpd.conf を以下のように編集する。

<Directory [認証をかけたいディレクトリ]>
    AuthType Digest
    AuthName [ユーザ作成時に指定したレルム]
    AuthDigestFile [ユーザ作成時に指定したパスワードファイル]
    Require user [許可したいユーザ1] [許可したいユーザ2] [許可したいユーザ3]
</Directory>

例)
<Directory "/var/www/html/secret">
    AuthType Digest
    AuthName "secret page"
    AuthDigestFile /etc/httpd/.htdigest
    Require user test 
</Directory>

httpd を再起動する。

これで、secret ディレクトリにアクセスすると認証が聞かれるようになる。

ちなみに、認証はサブディレクトリにも適用される。

/etc/httpd/conf/httpd.confの認証をかけたいディレクトリの
ディレクティブの書き方は、basic認証の方で紹介する方法でも同じ意味。

Apache で認証有りのページを作成する(basic 認証)

.htaccessファイルを使用する方法は
httpd.confを編集できないユーザに対してユーザ認証に関して設定できるようにすることが可能。