mod_auth テキストファイルを用いたユーザ認証 Base mod_auth.c auth_module 2.1 より前のバージョンでのみ使用可能

プレインテキストのパスワードファイルとグループファイルを検査して ユーザを探すことで、HTTP 基本認証でアクセス制限できるようにします。 似たような機能で、もっと大きなスケーラビリティを持ったものは、 mod_auth_dbm で提供されています。 また、HTTP ダイジェスト認証は mod_auth_digest で提供されています。

Require Satisfy AuthName AuthType AuthGroupFile 認証に使用するユーザグループの一覧が格納されている、 テキストファイルの名前を設定する AuthGroupFile file-path directory.htaccess AuthConfig

AuthGroupFile ディレクティブは、 認証に使用するユーザグループの一覧が格納されている、 テキストファイルの名前を設定します。 file-path はグループファイルへのパスです。 もし絶対パスでなければ、 ServerRoot からの相対パスとして扱われます。

グループファイル各行は、グループ名、コロン、そして スペース区切りでそのメンバーのユーザ名を記述します。

例: mygroup: bob joe anne

大きなファイルを探索するのは、非常に効率が悪いという点に 注意してください。そのような場合は、 AuthDBMGroupFile の方がずっと良い性能を発揮します。

セキュリティ

AuthGroupFile は、 ウェブサーバのドキュメントツリーの外側に 保管するようにしてください。 保護しようとしているディレクトリ以下には、置かないで下さい。 そうしないと AuthGroupFile は ダウンロードできてしまいます。

AuthUserFile 認証に使用するユーザとパスワードの一覧が格納されている、 テキストファイルの名前を設定する AuthUserFile file-path directory.htaccess AuthConfig

AuthUserFile ディレクティブは、 ユーザ認証のためのユーザとパスワードの一覧を格納した テキストファイルの名前を設定します。file-path はユーザファイルへのパスです。 もし絶対パスでなければ (つまり スラッシュで始まらないパスであれば) 、ServerRoot からの相対パスとして扱われます。

ユーザファイルの各行には、ユーザ名、コロン、 暗号化したパスワードを記述します。 同一ユーザ ID が複数回登録された時は、mod_auth は パスワードの検証には最初の登録を使用します。

バイナリ配布の一部としてインストールされるか、 あるいは src/support にある htpasswd ユーティリティで、このパスワードファイルをメインテナンスします。 詳細は man ページをご覧頂くとして、 簡単には:

初期 ID username で、Filename というパスワードファイルを生成します。 次のコマンドを発行するとパスワードが要求されます:

htpasswd -c Filename username

パスワードファイル Filename に、username2 を追加したり修正したりします:

htpasswd Filename username2

(訳注: 非常に多くのユーザを登録すると大きなファイルになりますが) 大きなテキストファイルを検索するのは非常に効率が悪い ということに注意してください。そのような必要のある時は、 AuthDBMUserFile を代わりに使ってください。

セキュリティ

AuthUserFile は、ウェブサーバのドキュメントツリーの外側に保管するようにしてください。 保護しようとしているディレクトリ以下には、置かないで下さい。 そうしないと AuthUserFile は ダウンロードできてしまいます。

AuthAuthoritative 認証と承認プロセスを、 より低いレベルのモジュールに移行させるかどうかを設定する AuthAuthoritative On|Off AuthAuthoritative On directory.htaccess AuthConfig

AuthAuthoritative ディレクティブで明示的に Off に設定すると、 与えられた認証ユーザ ID に対してユーザ ID がない またはルールがない場合に、 認証と承認の両方のプロセスが、 より低いレベルのモジュール (Configurationmodules.c ファイルで定義) に移行するようにできます。 ユーザ ID がある、かつまたは、ルールが指定されている場合は、 通常のパスワードとアクセスチェックが適用されて、 認証に失敗すると "Authentication Required" 応答が返されます。

ですから、二つ以上のモジュールのデータベースで同一の ユーザ ID が現われたり、 または、正しい Require ディレクティブが二つ以上のモジュールで現われたりした場合は、 一つ目のモジュールが認定を行って、AuthAuthoritative の設定に関わらず、 アクセスは移行しません。

一般的な使用法は、mod_auth_dbm, mod_auth_msql, mod_auth_anon といったデータベースモジュールの一つと組み合わせることです。 これらのモジュールは多くのユーザ資格検査を提供してくれます。 しかし、少数の (管理者関連の) アクセスは AuthUserFile で良く保護された、より低レベルに移行するようにします。

デフォルトでは、制御は移行しません。そして、未知のユーザ ID や ルールがあっても "Authentication Required" 応答が返されます。 ですから、このディレクティブ設定しないことでシステムの安全を維持できて、また、 NCSA 準拠の挙動を強制できます。

セキュリティ

ユーザが自分自身で作成した .htaccess ファイルで認証できるようにすることの影響を 考慮に入れておいてください。そして、 それが本当に希望の挙動であるかどうかを検討してください。 一般的に言って、mSQL といったデータベースのセキュリティ保護よりも、 単純に一つのファイル .htpasswd のセキュリティを保護する方が容易です。 AuthUserFileAuthGroupFile は、 ウェブサーバのドキュメントツリーの外側に保管する ようにしてください。保護しようとしているディレクトリ以下には、 置かないで下さい。そうしないと AuthUserFileAuthGroupFile はダウンロードできてしまいます。