# mod_auth モジュール

このモジュールはテキストファイルを使ってユーザの認証を行なう機能を 提供します。

ステータス: Base
ソースファイル: mod_auth.c
モジュール識別子: auth_module

## 概要

このモジュールはユーザをプレーンテキストのパスワードとグループ ファイルで調べることにより、HTTP 基本認証でアクセスを制限することを 可能にします。同様の機能でスケーラビリティのあるものは mod_auth_dbm と mod_auth_db により提供されます。 HTTP ダイジェスト認証は mod_auth_digest により提供されています。

これらの認証に基づいたセキュリティの機構はせいぜいウェブサーバの セキュリティと同程度の強度であることに注意してください。 一般に、オペレーティングシステムのセキュリティシステムほどは 強くありません。

## ディレクティブ

- AuthGroupFile
- AuthUserFile
- AuthAuthoritative

参照: require, satisfy, mod_auth require キーワード。

## `mod_auth` Require キーワード

`mod_auth` モジュールは Require ディレクティブに対する 以下のキーワードをサポートします:

`user username [...]`
  与えられたユーザ名とパスワードは AuthUserFile データベースに存在する 必要があり、さらにユーザ名が Require ディレクティブにリスト されている必要があります。
`group groupname [...]`
  与えられたユーザ名とパスワードは AuthUserFile データベースに存在する 必要があり、さらにユーザ名が AuthGroupFile データベースにある 指定されたグループのメンバである必要があります。
`valid-user`
  与えられたユーザ名とパスワードが AuthUserFile データベースに存在する 必要があります。そのファイルにある有効なユーザ名はアクセスが許可 されます。
`file-owner`
  [Apache 1.3.20 から] 与えられたユーザ名とパスワードは AuthUserFile データベースに存在する 必要があり、さらにユーザ名がリクエストされたファイルの システムの所有者の名前と一致する必要があります。つまり、 オペレーティングシステムがリクエストされたファイルが `jones` である、と言った場合は、Web を通して アクセスするユーザ名も `jones` である必要である、 ということです。
`file-group`
  [Apache 1.3.20 から] 与えられたユーザ名とパスワードは AuthUserFile データベースに存在する 必要があり、ファイルを所有するグループ名が AuthGroupFile データベースに ある必要があり、ユーザ名がそのグループのメンバである必要があります。 例えば、オペレーティングシステムがリクエストされたファイルが グループ `accounts` により所有されていると言った 場合、グループ `accounts` が AuthGroupFile データベースに 属している必要があり、リクエストに使用されたユーザ名も そのグループのメンバである必要があります。

## AuthGroupFile ディレクティブ

構文: AuthGroupFile filename
コンテキスト: ディレクトリ、.htaccess
上書き: AuthConfig
ステータス: Base
モジュール: mod_auth

AuthGroupFile ディレクティブはユーザ認証のための ユーザグループのリストが書かれたテキストファイルの名前を設定します。 Filename はグループファイルのパスです。絶対パスでないときは (すなわち、スラッシュで始まらないときは)、ServerRoot からの相対パスとして扱われます。

グループファイルのそれぞれの行は、グループ名、コロン、空白で 区切られたグループに属するユーザ名、からなります。例:

> `mygroup: bob joe anne`

大きなテキストファイルを探すのは非常に効率が悪いということに 注意してください。そのような場合は、代わりに AuthDBMGroupFile を 使ってください。

セキュリティ: AuthGroupFile は必ずウェブサーバのドキュメントツリーの外に 保管してください。それが保護しているディレクトリには置かないで ください。そうでないと、クライアントが AuthGroupFile をダウンロード できてしまいます。

AuthName, AuthType, AuthUserFile も参照してください。

## AuthUserFile ディレクティブ

構文: AuthUserFile file-path
コンテキスト: ディレクトリ、.htaccess
上書き: AuthConfig
ステータス: Base
モジュール: mod_auth

AuthUserFile ディレクティブはユーザ認証のためのユーザとパスワードの リストが書かれたテキストファイルを名前を設定します。File-path は ユーザファイルへのパスです。絶対パスでないときは (すなわち、 スラッシュで始まらないときは)、ServerRoot からの相対パスとして扱われます。

ユーザファイルのそれぞれの行は、ユーザ名、コロン、`crypt()` により暗号化された パスワード、からなります。同じユーザが複数回現れたときの動作は 不定です。

バイナリ配布の一部としてインストールされているか、`src/support` にある htpasswd ユーティリティは、 このパスワードファイルを維持するために使用されます。詳細は `man` ページを参照してください。手短かに説明すると

> `htpasswd -c Filename username`
> は 'username' を初期 ID としてパスワードファイル 'Filename' を 作成します。これはパスワードの入力を促します。 `htpasswd Filename username2`
> はパスワードファイル 'Filename' に 'username' を 追加するか、既にある 'username' を修正します。

大きなテキストファイルを探すのは非常に効率が悪いということに 注意してください。そのような場合は、代わりに AuthDBMUserFile を 使ってください。

セキュリティ: AuthUserFile は必ずウェブサーバのドキュメントツリーの外に 保管してください。それが保護している ディレクトリには置かないでください。 そうでないと、クライアントが AuthUserFile をダウンロードできてしまいます。

AuthName, AuthType, AuthGroupFile も参照してください。

## AuthAuthoritative ディレクティブ

構文: AuthAuthoritative on|off
デフォルト: `AuthAuthoritative on`
コンテキスト: ディレクトリ、.htaccess
上書き: AuthConfig
ステータス: Base
モジュール: mod_auth

AuthAuthoritative ディレクティブを明示的に 'off' に 設定すると、userID に合う userID が無い ときと、 それに合うルールが無いときに、認証と権限の付与の両方を (`設定` や `modules.c` で定義されている 方法で) 下位のモジュールに渡すことを可能にします。 userID かルールが指定されているときには、通常と同じパスワードと アクセスのチェックが行なわれ、成功しなかった場合は Authorization Required 応答が返されます。

ですから、userID が複数のモジュールのデータベースに現れたり、 正しい `Require` ディレクティブが複数のモジュールに適用されたり するときは、最初のモジュールが資格を調査します。AuthAuthoritative の 設定に関わらず、アクセスの調査は別のモジュールには渡されません。

このディレクティブの普通の利用方法は、`mod_auth_db.c`, `mod_auth_dbm.c`, `mod_auth_msql.c`, `mod_auth_anon.c` のようなデータベースモジュールと一緒に使うものです。 これらのモジュールは大部分のユーザの資格調査を行なう機能を提供します。 しかし、小数の (管理者関連の) アクセスは良く保護されている AuthUserFile に渡されます。

デフォルト: デフォルトでは制御は渡されません。 知らない userID やルールの結果は Authorization Require 応答になります。 ですから、このディレクティブを設定しないとシステムを安全に保つことができ、 NCSA と同じ動作をするようにできます。

セキュリティ:
  AuthUserFile は必ずウェブサーバのドキュメントツリーの外に保管してください。 それが保護している ディレクトリには置かないでください。 そうでないと、クライアントが AuthUserFile をダウンロードできてしまいます。
  また、空のユーザ名や、空のパスワードが許可されることに注意してください (Apache 1.3.20 から)。 AuthUserFile にコロン (':') のみの行があれば、 認証時にユーザ名とパスワードが両方共省略されたときに '`Require valid-user`' はアクセスを許可します。

AuthName, AuthType, AuthGroupFile も参照してください。