かべちゃんのウェブサイト
モジュール
ユーザ認証

ユーザ認証モジュール

ユーザ認証機能を提供します。 現在、モジュールは mod_auth.so と mod_auth_db.so と mod_auth_dbm.so および mod_auth_sqlite.so と mod_auth_pgsql.so の5種類存在します。 これらの違いは、パスワードデータの管理方法だけです。 mod_auth.so は XML形式のテキストファイルで記述し、 mod_auth_db.so は Berkeley-DB を利用し、mod_auth_dbm.so は伝統的な Unix-NDBM を利用します。mod_auth_sqlite.so は、 SQLiteデータベースを利用します。 mod_auth_pgsql.so は、 PostgreSQLデータベースを利用します。

いずれのモジュールも Basic/Digest認証に対応していますが、 パスワードデータはすべて平文(非暗号化)で保存されます。 これは、Basic/Digest認証ともに共通のデータベースで管理する仕様が原因です。 Wyvern-2.1 までは、パスワードは MD5 で符号化され保存されていました。 なお、認証モジュールを利用する場合は、 libauth.so を同時に読み込む必要があります。

サーバホスト側のユーザ認証

サーバホスト側のユーザ認証は、設定ファイル(wyvern.conf)中の <server-root> で指定したディレクトリの下の conf ディレクトリに wauth.conf ファイルを作成することで可能です。 パスワードファイルは、 wpasswd コマンドを利用して作成します。

パス例:
/usr/local/wyvern/conf/wauth.conf
/usr/local/wyvern/etc/wpasswd.db

ユーザ側のユーザ認証

ユーザ側のユーザ認証は、設定ファイル(wyvern.conf)中の <user-dir> で指定したディレクトリの下の .wyvern ディレクトリに wauth.conf と パスワードファイルを置くことによってユーザ認証が可能となります。

パス例:
/home/kouichi/public_html/.wyvern/wauth.conf
/home/kouichi/public_html/.wyvern/wpasswd.db

ユーザ認証用ファイルの作成方法

wauth.conf ファイルは、XML形式の次の構造をとります。


  <wyvern-authentication>
    <limit directory="/link">
      <auth type="Basic">
        <user>kouichi</user>
        <user>guest</user>
      </auth>
    </limit>
    <limit directory="/FreeBSD">
      <auth type="Digest">
        <user>kouichi</user>
      </auth>
    </limit>
  </wyvern-authentication>

上記の例では、/link 以下にアクセスできるのは kouichiguestであり、 /FreeBSD 以下にアクセスできるのは kouichi だけとなります。 また、/link 以下へのアクセスでは Basic認証を、 /FreeBSD 以下へのアクセスでは Digest認証が行われます。

パスワードファイルの作成

認証用パスワードファイルは、 wpasswd コマンドを用いて作成します。 簡単導入で Wyvern をインストールした場合は、 /usr/local/wyvern/bin/wpasswd にインストールされます。

wpasswd コマンドの書式は次のとおりです。

wpasswd [ db | dbm | sqlite ] passwordfile username

passwordfile は作成するパスワードファイル名を、 username はユーザ名を指定します。 また、認証モジュールとして mod_auth_db.so を利用する場合は "db" オプションを、mod_auth_dbm.so を利用する場合は "dbm" オプションを指定します。"sqlite" 引数は、mod_auth_sqlite.so を利用する場合に指定します。なお、SQLite3 を利用する場合は、 引数は "sqlite3" となります。

たとえば、mod_auth_db.so を利用して、 ユーザ「kouichi」をパスワードファイル「wpasswd.db」で管理する場合は、 次のように入力します。 コマンド入力後、パスワードと確認用のパスワードの入力があります。

入力例:

  user% /usr/local/wyvern/bin/wpasswd db wpasswd.db kouichi

同様に、mod_auth_sqlite.so を利用する場合は、 はじめにデータベースのテーブル作成をする必要があります。 これは、次のようにして簡単に作成できます。

入力例:

  user% sqlite ~/.wyvern/wpasswd.sqlite < /usr/local/wyvern/examples/sqlite_auth.sql

データベースへの登録は、次のように入力します。 コマンド入力後、パスワードと確認用のパスワードの入力があります。

入力例:

  user% /usr/local/wyvern/bin/wpasswd sqlite ~/.wyvern/wpasswd.sqlite kouichi

設定ファイルへの記述例:

  <wyvern>
    ...
    <module>
      ...
      <path>/usr/local/wyvern/modules/libauth.so</path>
      <path>/usr/local/wyvern/modules/mod_auth.so</path>
      <path>/usr/local/wyvern/modules/mod_auth_db.so</path>
      <path>/usr/local/wyvern/modules/mod_auth_dbm.so</path>
      <path>/usr/local/wyvern/modules/mod_auth_sqlite.so</path>
      ...
    </module>
    ...
  </wyvern>