ページに簡易パスワード制限をかける


パスワード制限と言うより、合い言葉に近いですか。これは仲間内だけに見せたいページなどに使うと、ちょっとしたアクセサリになります。

「サンプル」をクリックしてみて下さい。パスワードは「guest」(半角小文字)です。

サンプル


ただこれだと、JavaScript 機能をOFFにしてアクセスされてページのソースを見られると、肝心のパスワードがわかってしまいますよね。ではもう一歩進めてみましょう。
同じようなスクリプトですが、打ち込んだパスワード文字列をそのファイル名の一部とするファイルにリンクさせます。
「サンプル2」をクリックしてみて下さい。パスワードは同じく「guest」(半角小文字)です。

サンプル2



おまけ

本格的な認証をかける

これを利用するためには、ご利用サーバのディレクトリに「.htaccess」ファイルが置ける環境が必要です。したがって、どなたでもこの機能を活用するというわけにはいきませんので、あらかじめご了承下さい。

「.htaccess」ファイルとは?

その置かれているディレクトリ以下の全てのディレクトリの制御をするファイルです。特定ドメインやホストからのアクセスしかできなくしたり、逆に特定ドメインやホストからのアクセスだけを拒否したりといったことや、後述するID&パスワードによるアクセス制限などが出来ます。

認証の設定をするには?

まず、以下に例を示します。

AuthUserFile /abc/def/.sample
AuthGroupFile /dev/null
AuthName Private Corner
(注:Apacheの新バージョンではAuthNameの記述を" "で囲まないと動きません)
AuthType Basic
<limit post get>
(注:Apacheの新バージョンでは post get を大文字で書いて下さい)
require valid-user
</limit>
<Files .htaccess>
deny from all
</Files>

これが認証を行っている「.htaccess」ファイルの中身です(ディレクトリ名は全て架空のものです)。「.htaccess」ファイルは、ありようは単なるテキストファイルです。

1行目の「AuthUserFile /abc/def/.sample」で、このページへアクセスできる人たちのデータのあるファイルへのパスを書きます。ここでは「.sample」という名前のファイルになっています。 ファイル名は何でも構いませんが、通常は「.***」とするようです。
2行目の「AuthGroupFile /dev/null」・・・グループファイルは使わないのでこのようにします。
3行目の「AuthName Private Corner」で、認証ダイアログに表示されるタイトルを決めます。
4行目の「AuthType Basic」で、認証方式を設定します。通常はこのBasicを使います。
で、5〜7行目の
<limit post get>
require valid-user
</limit>
とは、認証をパスした人だけアクセスを許可するという意味です。このLimit命令を書き換えることにより、特定ドメインやホストからのみ接続を許可したり拒否したりと、いろいろな設定が出来ます。

そしてファイルの最後に
<Files .htaccess>
deny from all
</Files>
と記述して、このファイルがブラウザから見られないようにしておきます。

エディタでこの内容のテキストファイルを作り、とりあえず「htaccess.txt」として保存しておきます。

次にメンバーのID&パスワードデータを記録するファイル「.sample」を作ります。

まずtelnetでシェルにログインします。次にパスワードファイルに記録する1人目のIDが「taro」、パスワードが「abc123」だとすると、プロンプト(入力待ち)の状態で

htpasswd -c .sample taro

と入力します。すると、パスワードを聞いてきますから、

abc123

と入力します。受け付けられるともう一度確認されますから、同じことを繰り返します。すると、プロンプトに戻ります。これで成功です。

2人目のIDが「jiro」、パスワードが「def456」だとすると、プロンプト(入力待ち)の状態で

htpasswd .sample jiro

と入力します。注意すべきは、「-c」オプションは使わないということ。このオプションは、最初(ファイル作成時)に一度だけ行うものです。

あとは同じことを繰り返します。これでメンバーデータファイル「.sample」ができました。

このファイルを AuthUserFile 記述で指定した位置(できればwwwディレクトリの上位)に置いて、先に作っておいた「htaccess.txt」ファイルをFTPソフトでサーバのアクセス制限をかけたいディレクトリへ送り、リネームコマンドで「.htaccess」とファイル名を変更します。

以上で任意のディレクトリにパスワード制限をかけることが出来ます。


※これは当サイトのApacheサーバにおける設定例です。たいていのUNIXサーバはこれでいけると思いますが・・・。

BACK