Personal tools
You are here: Home サーバ設定 apache .htaccessでパスワード認証
Document Actions

.htaccessでパスワード認証

by tamohiko last modified 2008-02-25 00:16

.htaccessファイルを使ってのパスワード認証を行う設定方法です。

検証環境
CentOS 5
# apachectl -v
Server version: Apache/2.2.6 (Unix)
Server built: Sep 18 2007 11:28:25

パスワードでWebページのアクセス制限

webサイトを作成していると、「ある特定の人だけにだけ閲覧を許可したい」という状況が出てくることがあります。
そういった場合にすぐに考え付く方法の一つが、「ユーザ名」と「パスワード」でアクセス制限を行う方法だと思います。

今回はその機能を.htaccessファイルを使用して実装します。
実際の手順としては、次のようになります。

  1. .htaccessファイル使用の許可
  2. .htaccessファイル作成
  3. .htpasswdファイルの作成

.htaccess使用の許可

.htaccessファイルを使用する場合、apacheで.htaccessファイルを使用できるように設定する必要があります。

今回は、アクセス解析ソフトwebalizerで作成したページのディレクトリに パスワード認証(ベーシック認証)を設定していく過程を例に解説していきます。

今回の環境では、webalizerが作成するhtmlファイルは/var/www/html/webalizer にデータが保存されています。
まず、このディレクトリ上で.htaccessファイルを使用できるようにapacheの設定変更を行います。

「/var/www/html/webalizer」の部分はご自分の環境ごと実際に.htaccessを使用したいディレクトリに読み替えてください。

# cp -p /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf_yyyymmdd
# vi /etc/httpd/conf/httpd.conf
追加内容

Options 項目などは適宜設定してください。

<Directory "/var/www/html/webalizer">
AllowOverride All
</Directory>

※下記の例はサイト全体で.htaccessファイルを使えるようにする設定です。
<Directory />項目に「AllowOverride All」を設定してください。

<Directory />
Options None
AllowOverride All Order deny,allow Deny from all </Directory>
設定反映

apacheに設定を反映させます。

# /etc/init.d/httpd reload

これで/var/www/html/webalizerのディレクトリで「.htaccess」を使用できるようになります。

.htaccessの作成

apacheの設定変更が完了したら、次に「.htaccess」ファイルを/var/www/html/webalizerディレクトリに作成します。

# vi /var/www/html/webalizer/.htaccess
設定内容
AuthType Basic
AuthUserFile /var/www/html/webalizer/.htpasswd
AuthName "Input user and password"
AuthGroupFile /dev/null
Require valid-user
<Files ~ "^.(htpasswd|htaccess)$">
deny from all
</Files>
.htaccessの解説
    • AuthType  認証タイプを設定します。「Basic」と「Digest」があります。「Digest」を選択するとセキュリティはあがるのですが、 対応していないブラウザがあるので注意が必要です。
      AuthUserFile ユーザとパスワードが記述された.htpasswdファイルの場所を設定します。
      AuthName 認証ウィンドウに表示される文章を設定します。
      AuthGroupFile group認証を行うと二には、groupファイルを設定します。 /dev/nullだとグループ認証を行いません。
      Require どのユーザがWebページにアクセス出来るのかを設定します。
    Require 設定値
    設定値 説明
    user ユーザ名1 ユーザ名2 指定されたユーザ(userid)のみがアクセスが出来ます。
    group グループ名1 グループ名2 指定されたグループ(group-name)に属するユーザのみがアクセスが出来ます。
    valid-user .htpasswdファイルで認証された、全てのユーザがアクセスが出来ます。
      <Files ~ "^.(htpasswd|htaccess)$">
      deny from all
      </Files> .htpasswdと.htaccessファイルを表示しないように設定しています。
  • .htpasswd(認証ファイル)作成

    # htpasswd -c /var/www/html/webalizer/.htpasswd tamohiko
    New password:
    Re-type new password:
    Adding password for user tamohiko
    # chmod 644 .htpasswd

    ※.htpasswdファイルを新規作成の場合のみ -c オプションがいります。

    認証用のユーザとパスワードが作成されていること確認してみます。

    # cat  /var/www/html/webalizer/.htpasswd
    tamohiko:if7FSdfg3KlpE
    認証ユーザの追加
    # htpasswd /var/www/html/webalizer/.htpasswd tamo
    New password:
    Re-type new password:
    Adding password for user tamo

    こんな感じでユーザが追加されます。

    # cat .htpasswd
    tamohiko:if7FS8dO3KlpE
    tamo:ZtWoMWBseY7yU
    ユーザ情報の削除

    .htpasswdファイルからユーザを消したい場合は、.htpasswdから削除したいユーザの行を消しちゃうだけです。

    動作確認

    実際にwebブラウザでアクセスすると、ユーザ認証画面が表示されます。
    .htpasswdに設定したユーザ名とパスワードを入力して、認証が通ればwebページが表示されます。
    間違った情報を入力すると、ページは表示されないはずです。

    以上で.htaccessを使用したパスワード認証の設定は完了となります。

     

    Powered by Plone CMS, the Open Source Content Management System

    This site conforms to the following standards: