apacheベーシック認証設定方法

  • 投稿日:
  • by ライブラリ編集局

この記事ではapacheのベーシック認証方法について解説します。

OSはCentOS6.3です。

apacheのベーシック認証方法にはhttpd.confに設定する方法と.htaccessファイルを使う方法の2つの方法があります。

どちらも認証の為のユーザーとパスワードが必要なのでhtpasswdコマンドを使って先にそちらを作成します。

htpasswdコマンドの書式は

htpasswd -c ファイル名 ユーザー名

です。-cオプションは.htpasswdファイルの存在しない初回のみ指定します。

# htpasswd -c /etc/httpd/conf/.htpasswd htuser

上記の場合/etc/httpd/conf/の下に.htpasswdファイルが作成され、htuserというユーザーが作られます。上記のコマンドを入力すると、パスワードの入力を求められるので、任意のパスワードを設定してください。

このユーザーとパスワードはOSのアカウントとはまったく別のものでかまいません。

ユーザーとパスワードが作成できたら認証の設定を行いましょう。

httpd.confで設定する方法

httpd.confを開き、最終行に以下の内容を追記して下さい。

# vi /etc/httpd/conf/httpd.conf

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

この場合はDirectoryに/var/www/html/が指定されているので、/var/www/html/のページを開こうとした場合に認証が求められます。

AuthTypeは認証タイプを入力します。 今回はベーシック認証なのでBasicと入力します。

AuthNameは認証ページが開かれた時に表示されるメッセージなので任意の内容を入力して下さい。

AuthUserFileには先ほど作成した.htpasswdファイルを指定します。

Requireには許可対象のユーザーを入力します。valid-userと入力することで、.htpasswdファイルに記載されている全てのユーザーが許可対象になります。

編集後、apacheを再起動すれば対象のページにベーシック認証がかけられています。

# service httpd restart

.htaccessファイルを使ったベーシック認証方法

ベーシック認証したいディレクトリに.htaccessファイルを作成し、以下の内容を記述してください。 ここでは/var/www/html/ディレクトリのページに認証を求める設定をします。

# vi /var/www/html/.htaccess

AuthType Basic
AuthName "Please Enter ID and pass"
AuthUserFile /etc/httpd/conf/.htpasswd
require valid-user

内容はhttpd.conf内に記述したものとほぼ同じです。

また、httpd.conf内のAllowOverrideの項目をAllにして、.htaccessファイルの使用を有効にしておきましょう。

作成後、apacheを再起動すれば対象のページにベーシック認証がかけられています。

# service httpd restart

ただし、apacheでは.htaccessファイルの使用を推奨していません。

理由としては、.htaccessファイルの使用を有効にしておくと、apacheが各ディレクトリで.htaccessファイルを探す為にサーバに余計な負荷をかけてしまうというパフォーマンス上の問題と、httpd.confがルート権限保持者でなければ編集できない一方で、.htaccessファイルは一般ユーザでも設置、編集できるので.htaccessファイルによってapacheの設定を変えることが出来るようになってしまうというセキュリティ上の問題があるためです。

.htaccessファイルを使用する際にはこれらの問題を理解した上で使用してください。