nDiki : htpasswd

htpasswd

ApacheBasic 認証ユーザファイルを管理するツール。

新しいユーザ用のエントリを作成する

Naney から「ApacheBasic 認証パスワードファイルのエントリを作って送ってください」とお願いされた場合は、ユーザ名とパスワードを考えた上で以下のコマンドを実行してエントリを作成し、できあがったファイルを送ってください。

ユーザ YourName のエントリを含むパスワードファイル .htpasswd を生成する。

 htpasswd -mc .htpasswd YourName
 New password:
 Re-type new password:
 Adding password for user YourName

(<YourName> は作りたいユーザ名、<.htpasswd> はファイル名)

ユーザ名は 255バイトまでで、':' を含んではいけません。

1999年12月17日 (金)

PostgreSQL を使いはじめる

新しくつくりはじめている Web ベースのアプリケーションで Apache でユーザ認証が必要になった。 htpasswd で作ったものでももちろんできる。 が、今回はユーザごとの情報も管理したい。 そうすると htpasswd の形式だと、ユーザ情報と2重管理になるので面倒である。

幸い Apache は各種 DB を認証に使うことができる。 そこで今回は、他の情報も格納するしメジャーどころで PostgreSQL を使うことにした。 Perl でも扱えるし。

で例によって Debian のパッケージインストール。 postgresql 5.5.3-3 をいれる。

がインストールの途中で /etc/localtime がないといっておこられる。 他の Debian Box をのぞいてみると /usr/share/zoneinfo/Japan にシンボリックリンクがはってある。 私のところで存在しないのは問題ないのだろうか? まぁよくわからないが、同じようにシンボリックリンクをはっておく。

これでインストールが通った。

デフォルトの言語は Unicode、日時のフォーマットは ISO を選択しておく。

[ 12月17日全て ]

1999年12月18日 (土)

Apache での PostgreSQL を使った認証

先日インストールした PostgreSQLApache認証に使ってみる。

まずは PostgreSQL の設定。 自分自身を登録。

 $su -
 #su postgres
 $createuser 自分のアカウント

次に Apache の動作アカウントである www-data を登録したい。 が、ハイフンのあるユーザ名はうまく動かないので (createuser は成功する)、www-data と同じユーザIDで wwwdata を用意しておく。 /etc/passwd と /etc/shadow に www-data と同じ ID で www-data より先に wwwdata アカウントを追加。

そして postgres ユーザで createuser。

 $createuser wwwdata

次にデータベースの作成。 自分自身のアカウントで以下を行う。

 $createdb wwwdb
 $psql wwwdb -c 'create table passwd ( UserID text, Passwd text );'
 $psql wwwdb -c 'grant all on passwd to 自分;'
 $psql wwwdb -c 'grant all on passwd to wwwdata;'
 $psql wwwdb -c 'insert into passwd values ( '自分', '暗号化パスワード' );'

暗号パスワードはとりあえず htpasswd でつくったものを指定。

次に postmaster が TCP/IP を許すようにする。 Debian では /etc/postgresql/postmaster.init で PGALLOWTCPIP=yes を指定。 書き換えたら /etc/init.d/postgresql restart する。

Apache の方は、/etc/apache/httpd.conf の LoadModule pgsql_auth_module /usr/lib/apache/1.3/mod_auth_pgsql.so を有効にして再起動しておく。

そしてここでは認証の設定を .htaccess によって行ってみる。

 Auth_PGhost      127.0.0.1
 Auth_PGport      5432
 Auth_PGdatabase  wwwdb
 Auth_PGpwd_table passwd
 Auth_PGuid_field userid
 Auth_PGpwd_field passwd
 AuthName         "WWW Authentication"
 AuthType         Basic
 require valid-user

と書く。 これで Apache認証できた。 めでたし、めでたし。

[ 12月18日全て ]

2006年3月2日 (木)

FreeBSDApache::Htpasswd

WiKicker認証ドライバの1つとして、まずは Apachehtpasswd パスワードファイル(AuthUserFile ディレクティブ用パスワードファイル)形式のものを作成することにする。 これなら htpasswd で作成することができるので、最悪最初の段階では WiKicker に登録・削除機能を入れないで済む。

Perl からこのパスワードファイルを扱うモジュールとしては Apache::Htpasswd や、Authen::Htpasswd がある。 CPAN にある CGI-Application-Plugin-Authentication は前者を、Catalyst-Plugin-Authentication-Store-Htpasswd では後者を使用している。

機能的にはほぼ同じか。 Authen::Htpasswd の方がユーザ名に対応するオブジェクトを取得するメソッドがあり便利といえば便利だが、まあなくても困らないだろう。

ということで今回は、依存モジュールの少ない Apache::Htpasswd を選択した。 Perl 5.005_03 にはない warnings プラグマが使われているが、Htpasswd.pm の

 use warnings;

1行を削除すれば問題無し。

FreeBSD 4.4-RELEASE #3 + Perl 5.005_03 + Apache-Htpasswd 1.7 だと、crypt 関連のテストケースが失敗する(not ok 17)のがちょっと気になるところ。 MD5 ベースのパスワードの読み書きは問題ないので、この環境ではこちらを使うことにしよう。

[ 3月2日全て ]

About

Process Time: 0.058188s / load averages: 0.76, 0.73, 0.80