2013/03/25

Apache でベーシック認証

Apacheでベーシック認証を設定する方法です。ベーシック認証によるセキュリティには問題があります。認証情報がプレーンテキストでやりとりされるってやつですね。周知の事実ではありますがセキュアにするにはSSLと組み合わせて利用する必要がありますのでご注意下さい。

1. httpd.confの設定

httpd.confにベーシック認証を有効にするための設定を行います。
以下は、/var/www/html/secureに対するリクエストに対してベーシック認証を有効にする設定例です。

<Directory "/var/www/html/secure">
    AuthType Basic
    AuthName "Please Enter Your ID and Password."
    AuthUserFile /etc/httpd/conf/.htpasswd
    Require valid-user
</Directory>

各ディレクティブの説明です。

AuthType
認証の方法を指定します。ベーシック認証の場合は「Basic」を指定します。

AuthName
認証の際のブラウザダイアログボックスに出力されるメッセージを指定します。

AuthUserFile
パスワードファイル名を指定します。

Require
アクセスを許可するユーザを指定します。 「valid-user」の場合、パスワードファイルに含まれるすべてのユーザーを許可します。 個別に指定する場合、アクセスを許可するユーザー名やグループ名をスペースで区切って指定します。

グループによる指定

「AuthGroupFile」で指定したファイルのグループに基づいてアクセスを許可することができます。ファイルの書式は以下の通りです。

グループ名:ユーザ1 ユーザ2

2. パスワードファイルの作成

「AuthUserFile」で指定したパスワードファイルを作成します。作成にはhtpasswdコマンドを使います。

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

3. Apacheの再起動

Apacheを再起動して設定を有効にします。

# /etc/init.d/httpd restart

AllowOverrideディレクティブについて

.htaccessによって認証を有効にする場合は、DirectoryディレクティブでAllowOverrideにより認証に関する設定の上書きを許可しておく必要があります。(ドキュメントルートのDirectoryディレクティブでの指定が必要になります。)

<Directory "/var/www/html/secure">
    AllowOverride [ALL|AuthConfig]
</Directory>

0 件のコメント:

コメントを投稿