Webページにパスワードでアクセス制限をかけたい

パスワード認証によるアクセス制限

Web サイトに掲載する情報のなかには、限られたひとたち (例えば会員、スタッフなど) だけに公開したい情報もあります。

パスワード認証によるアクセス制限を使えば、特定の ユーザ名 と パスワード を入力したいひとだけに、Web ページへのアクセスを制限することができます。

アクセス制限は、ディレクトリ単位でできます。アクセス制限されたディレクトリの中のページ (そのディレクトリの中に別のディレクトリがあれば、その中のページも) が、アクセス制限の対象となります。

* 以下の説明は、JCA-NET メインサーバ (www.jca.apc.org) の Web サイトについてのものです。
Web パブリッシング サーバの Web サイト (www1.jca.apc.org および独自ドメインの Web サイト) では、ソンニムのアクセス権を変更することで、アクセス制限ができます。

* このページの説明にでてくる「ユーザ名」と「パスワード」という言葉は、 JCA-NET ユーザ ID や JCA-NET パスワードとは、なんの関係もありません。

手順

1. アクセス制限をしたいディレクトリを決めます。なければ、つくります。
このディレクトリは、Web によるアクセスができる場所 (個人用 Web サイトであれば public_html ディレクトリの中) でなければなりません。

2. .htaccess ファイルを作成し、 アクセス制限の記述をします。
すでにアクセス制限をしたいディレクトリに .htaccess ファイルがある場合は、 そのファイルに アクセス制限の記述を書き加えます。
記述のしかたは 下記 を参照してください。

3. .htaccess ファイルを、FTP ソフトウェアなどで アップロードします。
なお、FTP でのアップロードは テキストモード (ASCII モード) で 行ってください。バイナリモードでアップロードすると、 正しく動作しません。

4. パスワード情報を書き込んだ .htpasswd ファイルを作成します。
作成のしかたは 下記 を参照してください。

.htaccess の書き方

.htaccess ファイルには、つぎのようなものを書きます。

* AuthUserFile 行
* AuthName 行
* AuthType 行
* 部

AuthUserFile 行

.htpasswd ファイルを置く場所を書きます。 フルパスで書く必要があります。

たとえば、marupeke のホームディレクトリに置く場合

AuthUserFile /home/jcagw/marupeke/.htpasswd

となります (JCA-NET では、ユーザのホームディレクトリの場所は /home/jcagw/JCA-NETユーザID と決まっています)。
AuthName 行

アクセス制限のされているディレクトリにアクセスすると、 Web ブラウザでは ユーザ名 と パスワード の入力を促します。このときに表示される説明を書きます。

たとえば、つぎのように書くと

AuthName "Private Space"

Web ブラウザでアクセスしたときに、「Private Space のユーザ名とパスワードを 入力してください。」といったメッセージが表示されます。
AuthType 行

つぎのように書きます

AuthType Basic

アクセス制限で、パスワード認証を有効にするユーザ名を書きます。

つぎのように書きます

require user guest1
require user guest2
require user guset3

上記では、guest1、guest2、guest3 の 3 人が、パスワード認証によってこのディレクトリの中のページを見ることができます (パスワードのほうは、下記の .htpasswd ファイルで設定します)。ここに書かれていないユーザ名では、アクセスはできません。

「GET」「HEAD」「POST」は大文字でなければなりません。

AuthUserFile /home/jcagw/marupeke/.htpasswd
AuthName "Private Space"
AuthType Basic

require user guest1
require user guest2
require user guest3

.htpasswd ファイルを作る

htpasswd コマンドを使って、パスワードのファイルを作ります。

1. telnet で JCA-NET にログインします。ログインの際は、JCA-NETユーザID と JCA-NETパスワード が必要です。
2. ログイン後にメニューが表示されたら、メニューを終了します。 すると、コマンドプロンプトが表示されます。
3. htpasswd コマンドを、ユーザ名 の数だけ実行し、 .htaccess ファイルをつくります。

JCA-NET:~% /usr/local/bin/htpasswd -c /home/jcagw/marupeke/.htpasswd guest1
Adding password for guest1.
New password: guest1 のパスワードを入力
Re-type new password: おなじパスワードをもう一度入力

JCA-NET:~% /usr/local/bin/htpasswd /home/jcagw/marupeke/.htpasswd guest2
Adding password for guest2.
New password: guest2 のパスワードを入力
Re-type new password: おなじパスワードをもう一度入力

JCA-NET:~% /usr/local/bin/htpasswd /home/jcagw/marupeke/.htpasswd guest3
Adding password for guest3.
New password: guest3 のパスワードを入力
Re-type new password: おなじパスワードをもう一度入力

    部分は、実際に入力する部分です。パスワードの入力内容は、画面には表示されません。

入力の各行末では、改行キーを押します。

はじめて .htpasswd ファイルをつくるときだけ、「htpasswd」の後に「-c」を付けます。今後、別のユーザ名のパスワードを追加したり、パスワードを変更したいときは、「-c」をつけません。

注意

* いったん .htpasswd ファイルをつくったあとで、htpasswd を「-c」 をつけて実行してしまうと、それまでのパスワード情報はすべて 上書きされて消えてしまうので、注意して操作してください。

* パスワード には、JCA-NET ユーザ ID のパスワードと同じものは設定しないようにしてください。

* パスワードは、.htpasswd に暗号化されて記録されます。 とはいえ、.htpasswd ファイルが Web からアクセスできる場所 (たとえば 個人 Web サイト の場合は public_html ディレクトリの中) にあるのは好ましくありません。