BASIC 認証を使用したユーザ認証の導入 [mod_auth_basic]

管理用のページや会員限定のコンテンツなどでユーザ認証を使用したアクセス制限を行いたい場合があります。
ここでは、Apache に BASIC 認証を使用し、パスワードファイルによるユーザ認証を導入する手順を説明します。

ユーザの登録・削除

ここでは htpasswd コマンドを使用してパスワードファイルへユーザの登録・削除を行う手順を説明します。

パスワードファイルが存在しない場合

ユーザ認証を行うユーザを登録します。
※パスワードファイルの名前は任意に決められます。ここでは習慣的に使用されている .htpasswd という名前で作成しています。
※パスワードファイルがまだ存在しない場合は htpasswd コマンドで -c オプションを指定してパスワードファイルを作成する必要があります。
※パスワードファイルが存在する場合に -c オプションを指定すると既存の内容が失われてしまうので注意が必要です。

# htpasswd -c /etc/httpd/conf/.htpasswd ユーザー名
New password:
Re-type new password:
Adding password for user ユーザー名

パスワードファイルが存在する場合

ユーザ認証を行うユーザを登録します。
※既存ユーザを指定すると既存ユーザのパスワードを変更できます。

# htpasswd /etc/httpd/conf/.htpasswd ユーザー名
New password:
Re-type new password:
Adding password for user ユーザー名

設定

1. Apache 設定ファイルを編集します。

# vi /etc/httpd/conf/httpd.conf
#
# This is the main Apache server configuration file.  It contains the
# configuration directives that give the server its instructions.
# See  for detailed information.
# In particular, see
# 
# for a discussion of each configuration directive.
#

(中略)

#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
BASIC 認証のサポートを有効にします。
LoadModule auth_basic_module modules/mod_auth_basic.so
パスワードファイルのサポートを有効にします。
LoadModule authn_file_module modules/mod_authn_file.so
認証モジュールが見つからない場合に拒否するようにします。(必須ではありませんが有効にすることを推奨します)
LoadModule authn_default_module modules/mod_authn_default.so
ユーザー承認のサポートを有効にします。
LoadModule authz_user_module modules/mod_authz_user.so
承認モジュールが見つからない場合に拒否するようにします。(必須ではありませんが有効にすることを推奨します)
LoadModule authz_default_module modules/mod_authz_default.so

(中略)

ここでは例として /var/www/html/member に BASIC 認証を設定します。
<Directory "/var/www/html/member">

    BASIC 認証を使用することを指定します
    AuthType Basic
    Web ブラウザの認証ダイアログで表示される文字列を指定します(全角文字は化けます)
    AuthName "Member Area"
    パスワードファイルを指定します
    AuthUserFile "/etc/httpd/conf/.htpasswd"

    承認可能なユーザを指定します
    登録されているユーザであれば誰でもアクセス可能とさせる場合
    Require valid-user
    特定のユーザのみアクセス可能とさせる場合
    Require user ユーザー名

    LAN 環境からは認証なしでアクセス可能とする場合は Order や Allow とともに "Satisfy any" を指定します。
    Order allow,deny
    Allow from 192.168.11.0/24
    Satisfy any

(中略)

</Directory>

(以下略)

3. Apache の設定変更に間違いがないか検証します。

# apachectl configtest
Syntax OK

4. Apache を再起動します。

# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

Google