|
mod_auth_msql.cファイルに含まれ、デフォルトでコンパイルされています。これはパブリックドメインmSQLデータベースftp://ftp.bond.edu.au/pub/Minerva/msql、通常のtcp/ipソケットのコミュニケーションと同じくらい内部Unixドメインプロトコルにコンタクトできる、早いが限定されたSQLエンジンを使うアクセスコントロールを許可します。これはApache 1.1とそれ以上でのみ有効です。Full description / Example / Compile time options / RevisionHistory / Person to blame / Sourcecode
-
Auth_MSQLhost < FQHN | IP Address | localhost >
localhostならば、null pointerとしてmSQLライブラリにパスされます。これは(遅い)ソケットのコミュニケーションよりもむしろ/dev/msqlを効果的に使わせます。
-
Auth_MSQLdatabase < mSQL database name >
relshow [<hostname> dbase]を使用)
-
Auth_MSQLpwd_table < mSQL table name >
Auth_MSQL_Authorative命令以下を参照してください。
-
Auth_MSQLgrp_table < mSQL table name in the above database >
-
Auth_MSQLuid_field < mSQL field name >
Auth_MSQLpwd_tableとAuth_MSQLgrp_tableのテーブルに任意にユーザー名を含む領域の名前
-
Auth_MSQLpwd_field < mSQL field name >
Auth_MSQLpwd_tableのテーブルにあるパスワード領域名
-
Auth_MSQLgrp_field < mSQL field name >
BACKWARD_VITEKオプションでコンパイルされると、uidと領域名は'user'と'password'に対してデフォルトします。しかしながら、複雑なセキュリティ問題に与えられた特定のこれらの値に対しては通常強く助長されます。
-
Auth_MSQL_nopasswd < on | off >
-
Auth_MSQL_Authoritative < on | off >
-
Auth_MSQL_EncryptedPasswords < on | off >
% msqladmin create www
% msql www
-> create table user_records (
-> User_id char(32) primary key,
-> Cpasswd char(32),
-> Xgroup char(32)
-> ) \g
query OK
-> \q
%
User_idは要求されたものと同じくらい長くなります。しかし、一般的なウェブブラウザは名前を切り捨てるか、32文字以上の入力をユーザーに止めさせます。その上、プラットフォームの'crypt'機能はさらに制限を課します。uid'sが空白によって仕切られているaccess.confファイルにあるrequire users uid [uid..]命令の使用もまた、可能な限りユーザー名でのスペースの使用を禁止します。また、以下にあるMAX_FIELD_LEN命令にも注意して下さい。
上記を使用するためには、以下の例をaccess.confファイルに挿入します。この例の下にもまた詳細な説明があります。
<directory /web/docs/private>
Auth_MSQLhost localhost
or
Auth_MSQLhost datab.machine.your.org
localhostにセットすれば、ApacheとmSQLデータベースが同じ(物理的に)マシン上で動いていて、より速い/dev/msqlコミュニケーションチャンネルが使われると仮定されます。そうでなければtcp/ipによってコンタクトするマシンです。より詳しい情報についてはmSQLのドキュメントを参照してください。
Auth_MSQLdatabase www
msql.acl (アクセスコントロールファイル)が本当にこのデータベースにアクセスして読み込むウェブサーバの実際のuidを許可していることを確認してください。 このuidのhttpd.confファイルをチェックしてください。
-
Auth_MSQLpwd_table user_records
-
Auth_MSQLuid_field User_id
Auth_MSQLpwd_field Cpasswd
user_recordテーブルの領域名を特定します。もしこのモジュールがBACKWARD_VITEK互換性スィッチでコンパイルされていれば、userとpasswordのデフォルトはそれらを特定していなければ仮定されます。現在user_id領域はプライマリキーでなければならないか、あるいはそれぞれのユーザだけがテーブルの中にonceを生じることを確実にしなければならない。もしuidが生じれば二回のアクセスはデフォルトによって拒否されます;より詳しい情報についてはONLY_ONCEコンパイラー命令を参照してください。
-
Auth_MSQLgrp_table user_records
Auth_MSQLgrp_field Xgroup
-
Auth_MSQL_nopasswd off
Auth_MSQL_Authoritative on
Auth_MSQL_EncryptedPasswords on
-
AuthName example mSQL realm
AuthType basic
<limit get post head>
order deny,allow
allow from all
require valid-user
valid-user; 上記のpwd_tableに有効なuid/passwdのペアを持っているユーザーを許可します。
require user smith jones require group has_paid<limit>
#define ONLY_ONCE 1
ONLY_ONCE命令のセットでコンパイルされると、もしuidが一度以上uid/passwdテーブルに生じればアクセスは拒否されます。もしそれをセットすることをしていないなら、ソフトウェアは返送された最初のペアを取り、それ以上のペアを無視します。これに使われるSQLステートメントは"select password form pwd_table where user='UID'"
これは予想できない結果をもたらします。パフォーマンスの理由と同じようなこの理由で、uid領域にプライマリキーを作ることを強く忠告されます。自身の責任で使ってください。:-)
#define KEEP_MSQL_CONNECTION_OPEN
msqlClose()に対してコールしません。もしエラーが生じるなら、次のhttpの要求に再度接続を開かせてください。
これはたくさんの非常に深刻な問題を持っています。
手短にいえば、自身の責任でこれを使い、よくコントロールされたモニターされた環境で使ってください。
#define BACKWARD_VITEK
#define VITEK_uid_name "user"
#define VITEK_gid_name "passwd"
khera@kciLink.com>によって改良されてきました。そして、引き続いてApacheの初期のバージョンで配布されました。ftp://ftp.kcilink.com/pub/mod_auth_msql.c*で手にいれることができます。古い'vitek'バージョンはfield/table名がコンパイルされていました。新しいバージョンv.1.11はより多くのaccess.confコンフィギュレーションのオプションを持っています。しかし、選ばれたこれらはこのモジュールの'ewse'バージョンの行にはありません。また、'vitek'モジュールはグループにコントロールを与えないか、'empty'パスワードコントロールを与えます。
このバージョン(0.9)の行にわずかに追加することは'vitek'モジュールと互換性のある遅れたものにするべきです:
Auth_MSQL_EncryptedPasswords on/off機能性についてのサポートの追加
これがトラブルを生じたら、'BACKWARD_VITEK' 定義を外してください。
#define MAX_FIELD_LEN (64)
#define MAX_QUERY_LEN (32+24+MAX_FIELD_LEN*2+3*MSQL_FIELD_NAME_LEN+1*MSQL_TABLE_NAME_LEN)
HUGE_STRING_LENGTHの使用を避けるために、上記の二つのコンパイルタイム命令が提供されています。MAX_FIELD_LENはユーザー、パスワード、グループ領域の文字の最大数を含んでいます。最大クエリー長はそれらの値が基になっています。
以下の二つのクエリーだけを行ないます:
"select PWDFIELD from PWDTABLE where USERFIELD='UID'"
"select GROUPFIELD from GROUPTABLE where USERFIELD='UID' and GROUPFIELD='GID'"
これはクエリー文字列にとって上記の制限になります。ここでは24 escapes以下だと仮定して少しescapingを無視しています。)
Auth_MSQL_nopasswd'オプションを追加
Auth_MSQLgrp_field'を使っていることを確認してください。
*hostからhostへの固定。これに関する速やかな認証はRob Stout, pallocリターンコードチェックはグループ制御の壊れたerr msgの固定し、その新しいモジュール管理ツールに表示された時に、より重要になるコマンドテーブルメッセージを変更するVivek KheraAuth_MSQL_EncryptedPasswordsのon/off機能が追加されています。上記のエラーにmsqlClose()ステートメントを追加しています。mSQL database (riscy)の常時接続をサポートしています。'と\でエスケイプします。いくつかのMAX_STRING_LENGTH要求を元に戻します。
Dirk.vanGulik@jrc.it>によってEuropean Wide Service Exchangeのために書かれています。もしなんらかのトラブル、アイスクリーム、バグがあった場合には、連絡してください。このドキュメントはNick Himba, <himba@cs.utwente.nl>の協力によるものです。
http://www.apache.orgに見られます。改良版のスナップショットは通常 http://me-www.jrc.it/~dirkx/mod_auth_msql.cにあります。綴じ込みのバグが報告されている時は常に使っているバージョンを参照して確認してください。
さらに、test/demonstration(コンパイルとインストールがされたmSQLとApacheの両方を持っていると仮定)はftp://ftp.apache.org/apache/dist/contribやhttp://me-www.jrc.it/~dirkx/apache-msql-demo.tar.gzとそのREADMEファイルに対して有効です。
The English original manual is here.