ユーザ認証ページを作るには?その2

「アクセス制限・1」で解説している「応用設定2」のやり方で、パスワードファイルを変更するだけでアクセス制限が掛けられるようになった。ただし、このパスワードファイルを変更するにはtelnetなどでサーバに接続し、htpasswdコマンドを使って操作しなければならない。
そこで、htpasswdコマンドではなく、CGIプログラムでWeb上からパスワードファイルを編集する方法を紹介したい。

1.CGIプログラムの設定

ネットサーフレスキュー[Web裏技]というサイトにパスワードアクセス制限管理システム(HTPWD)というプログラムが紹介されている。Windowsクライアントでここからhtpwd15.lzhをダウンロードする。

解凍すると、次のようにファイルが展開される。

[htpwd15]
  + .htaccess
  + .nsconfig
  + admin.cgi
  + change.cgi
  + index.html
  + master.cgi
  + readme.txt
  + regist.cgi
  + remove.cgi
  + remove.cgi2
  + user.cgi
  + [entry]
      + .htaccess
      + .nsconfig

これらのファイルをホームページに組み込み、任意のディレクトリにパスワード制限を掛ける。
例えばmembers2というディレクトリにパスワード制限を掛けたい場合は次のように設定する。

(1)設定ファイルの配置

members2ディレクトリを作成し、.htaccessファイルと.nsconfigファイルをmembers2ディレクトリにコピーする。

(2)プログラム・パスワードファイルの配置

プログラムはCGIなので、CGIが動く任意の場所へ配置する。今までやってきた設定ではcgi-binディレクトリ以外ではCGIが動かないようになっているので、そこへコピーする。プログラムファイルは「change.cgi」「index.html」「master.cgi」「regist.cgi」「remove.cgi」「remove2.cgi」で、パスワードファイルは「admin.cgi」「user.cgi」。

コピー後、プログラムファイルのパーミッションを755に、パスワードファイルのパーミッションを666に設定する。
なお、index.htmlのファイル名を別の何か(htpwd.htmlなど)に変更する。このファイルは何処にあってもいいが、プログラムファイルとは別のディレクトリに配置した場合は、ソースを修正しなければならない。

(3)設定ファイルの編集

.htaccessファイル、.nsconfigファイルをそれぞれviで開き、日本語になっているところをそれぞれ修正する。

2.動作確認

上記の設定により、members2ディレクトリ内のページをWebで参照しようとすると、ユーザ認証画面が現れる。ただし、>パスワードはcgi-binディレクトリ内のuser.cgiファイルで管理される
パスワードファイルを編集するには、サーバ上からhtpasswd user.cgi ユーザ名としてもいいが、Web上からhtpwd.htmlを開くことにより、CGIで一括管理できる。

実際に運用する場合は、管理者しか入れないページを作成し、そこにhtpwd.htmlを配置するのがいいだろう。


[ TOP ]