(2004/10/07)今回はちょっとネットワークとは直接関係のない話です。関係がないわけでもなく、また、個人的にとても重要なことなので、ここに掲載いたしました。●mod_auth_pgsql「mod_auth_pgsql」をみなさんご存知でしょうか。apacheのbasic認証をhtpasswdで作成したファイルではなく、PostgresのDBの情報を元に行うというものです。認証IDが多い場合や、DBに入っている情報を元に認証の条件をより複雑なものにしたい場合などに重宝します。便利なのですが、サーバがapache2になった場合に苦労する点があります。今回はその点について解説します。「apache2を使っている」人で「Postgres」のDBを入れていて、認証に「mod_auth_pgsqlを利用」していてさらに「困っている」人限定ページです。実はその使い方によって、さらに少数の人間に絞り込まれるのですが、ここまで来るとこのページが有効である人の数は壊滅状態に近いです。どのぐらい壊滅的かについても一緒に解説していきましょう。今回覚えていただきたいことは次の2点です。「Auth_PG_gid_field」が「Auth_PG_grp_group_field」に変更されたグループテーブルの方の個別認証IDは「Auth_PG_grp_user_field」で指定する順番に一つずつ見ていきましょう。●「Auth_PG_gid_field」が「Auth_PG_grp_group_field」に変更されたapacheのmod_auth_pgsqlでグループ認証を行っていた方ならご存知かと思いますが、「Auth_PG_gid_field」というdirectiveがあります。ところがapache2のモジュールではこれが「Auth_PG_grp_group_field」という名前に変更になっています。http://www.giuseppetanzilli.it/mod_auth_pgsql2/上記が公式のページらしいのですが、「Directives」には「Auth_PG_grp_group_field」がありません(ように思います:2004年10月7日現在)。「Auth_PG_gid_field」が掲載されています。変更になったことがわかるのか。このページの下の方で更新履歴(「Changelog」)があります。Auth_PG_grp_group_field」ありました。いうわけで、apacheからapache2へ移行して、mod_auth_pgsqlのグループ認証で困っていた人、これで解決です。日本ではほとんど使われていないのでしょうか。●グループテーブルの方の個別認証IDは「Auth_PG_grp_user_field」で指定する個別認証IDという呼称が正しいのかどうかわかりませんが、「Auth_PG_uid_field」で指定したフィールドのことです。apacheのmod_auth_pgsqlではグループテーブルの方の個別認証IDは「Auth_PG_uid_field」で指定したフィールドと同じ名称ということになっていました。name」というようなエラーが出て、認証されません。グループテーブルと認証テーブルとがうまく連携していないようです。そこで次のdirectiveが登場します。「Auth_PG_grp_user_field」ここにグループテーブルの方の個別認証IDを指定すると、グループテーブルと認証テーブルが同期を取るようになるようです。前述の公式ページですが、「Directives」には「Auth_PG_grp_user_field」がありません(ように思います:2004年10月7日現在)。追加されたことがわかるのか。このページの下の方で更新履歴(「Changelog」)があります。Auth_PG_grp_user_field」ありました。これについてはどう使うのかの説明すらありません。いうわけで、apacheからapache2へ移行して、mod_auth_pgsqlのグループ認証でさらに困っていた人、これで解決です。・「Auth_PG_grp_user_field」をgoogleで検索(日本語のみ:2004年10月7日現在)→ヒットしません。・「Auth_PG_grp_user_field」をgoogleで検索(世界全体:2004年10月7日現在)→14件中似たページを除いて8件。世界でもほとんど使われていないのでしょうか。●サンプル最後に「httpd.conf」への記述サンプルを掲載しておきます。sec1--------------------------------こんな感じで設定したらどうでしょうか。「Auth_PG_encrypted」はパスワードの保存状況次第で変えてください。情報処理技術者(テクニカルエンジニア:ネットワーク)を取得。