Apache HTTP サーバ バージョン 2.0

Apache > HTTP サーバ > ドキュメンテーション > バージョン 2.0 > モジュール

# Apache モジュール mod_auth

説明: | テキストファイルを用いたユーザ認証
ステータス: | Base
モジュール識別子: | auth_module
ソースファイル: | mod_auth.c

### 概要

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

### ディレクティブ

### 参照

- `Require`
- `Satisfy`
- `AuthName`
- `AuthType`

## AuthAuthoritative ディレクティブ

説明: | 認証と承認プロセスを、 より低いレベルのモジュールに移行させるかどうかを設定する
構文: | AuthAuthoritative on|off
デフォルト: | `AuthAuthoritative on`
コンテキスト: | ディレクトリ, .htaccess
上書き: | AuthConfig
ステータス: | Base
モジュール: | mod_auth

記載されている情報は、未だ Apache 2.0 向けにアップデートされていません。 Apache 2.0 では、モジュールの順序づけに異なる仕組みを使っています。

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

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

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

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

### セキュリティ

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

## AuthGroupFile ディレクティブ

説明: | 認証に使用するユーザグループの一覧が格納されている、 テキストファイルの名前を設定する
構文: | AuthGroupFile file-path
コンテキスト: | ディレクトリ, .htaccess
上書き: | AuthConfig
ステータス: | Base
モジュール: | mod_auth

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

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

`mygroup: bob joe anne`

大きなファイルを探索するのは、非常に効率が悪いという点に 注意してください。そのような場合は、 `AuthDBMGroupFile` を代わりに使うべきでしょう。

### セキュリティ

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

## AuthUserFile ディレクティブ

説明: | 認証に使用するユーザとパスワードの一覧が格納されている、 テキストファイルの名前を設定する
構文: | AuthUserFile file-path
コンテキスト: | ディレクトリ, .htaccess
上書き: | AuthConfig
ステータス: | Base
モジュール: | mod_auth

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

ユーザファイルの各行には、ユーザ名、コロン、 `crypt()` で暗号化したパスワードを記述します。 同一ユーザが複数回登録された時の挙動は定義されていません。

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

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

`htpasswd -c Filename username`

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

`htpasswd Filename username2`

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

### セキュリティ

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