アキラのITメモ:Basic認証とPerlによるhtpasswdの作り方
Basic認証とPerlによるhtpasswdの作り方
いつもどうやって書くんだっけと調べているので、Basic認証による認証方法を簡単にメモ書きとして残しておくことにします。Basic認証とは、所望のディレクトリにアクセス制限をかけるためのものです。よく、小さなウインドウが出てきてユーザ名とパスワードを求められ、間違えると「401 Authorization Required」と出るのがそれです。
以下に示すのは一番簡単な設定方法です。設定によってはグループあるいはユーザごとに認証できる範囲を変えるなどの制御も可能ですが、僕が一番良く使うのは以下の簡単な例です。今のところ。やり方は、まず、.htaccessという名前のファイルに以下の内容を書きます。2行目が認証用のウインドウに表示される文字列で、3行目がパスワードファイルのある場所です。2行目は自由な文章に、3行目は自分の環境に合わせて書き換えてください。
AuthType Basic AuthName "enter username and password" AuthUserFile /home/akira/misc/.htpasswd AuthGroupFile /dev/null Require valid-user
あとは、上記で指定したパスワードファイル(この例では/home/akira/misc/.htpasswd)を用意すればOKです。例えば、パスワードファイルの内容は以下のような内容にします(この例ではユーザ名test、パスワードtestというアカウントになります。)
test:XS9pGUXVZ7ciw
上記パスワードファイルを作るにはhtpasswdというコマンドを使うのですが、コマンドを使わなくてもパスワードファイルを生成してくれるサイトがあると思うので、パスワードファイルを作りたい方は探してみてください。なお、パスワードファイルはPerlのcript関数を使っても簡単に作成できます。futomi's CGI CafeでCGIによる作成例が記述されていますので、パスワードファイルを生成するCGIに改変して紹介しておきます。
#!/usr/local/bin/perl
use CGI;
$| = 1;
$query = new CGI;
$user = $query->param('USER');
$pass = $query->param('PASS');
$encpass = &encrypt_passwd($pass);
print "Content-type: text/html\n\n$user:$pass\n";
exit;
sub encrypt_passwd {
my($pass)=@_;
my(@salt_set)=('a'..'z','A'..'Z','0'..'9','.','/');
srand;
my($seed1) = int(rand(64));
my($seed2) = int(rand(64));
my($salt) = $salt_set[$seed1] . $salt_set[$seed2];
return crypt($pass,$salt);
}
上記をhtaccess.cgi等の名前で保存し、以下のようなHTMLファイルから呼び出せば、htpasswdを生成できるでしょう。
<html> <head><title>htpasswd generation form</title></head> <body> <form method="post" action="htaccess.cgi"> <p> User:<input name="USER" size="10" /> Pass:<input name="PASS" size="10" /> <input type="submit" value="送信" /> </p> </form> </body> </html>
Trackback URL: http://akira-site.net/cgi-bin/mt/mt-tb.cgi/417
コメント
コメントを投稿
カテゴリ「Perl」内の記事
サイト内検索
カテゴリ
- Linux
- Linux Tips [14]
- Linux ソフトウェア [3]
- Web技術
- (X)HTML/CSS [4]
- JavaScript [1]
- MovableType [7]
- その他 [3]
- 各種API [3]
- 各種ツール [4]
- Windows
- Win Tips [3]
- Win ソフトウェア [6]
- コネタ [7]
- プログラミング
- 機器 [4]