Apache によって提供される特定のディレクトリへのアクセスを制限したいと考えています。クライアントにユーザー名とパスワードを入力させ、その後、Apache が、ユーザーが入力したユーザー名とパスワードを取得し、認証を行うために作成した Python スクリプトに引数として渡すようにしたいと考えています。次に、そのスクリプトの出力に基づいて、Apache がアクセスを許可または拒否するようにしたいと考えています。これは可能ですか?
答え1
私が知っている唯一の方法は、mod_auth_external
またはmod_python
。前者はカスタム認証システムを実装することができ、後者はApacheに組み込みのPythonインタープリタを提供し、これを使用してカスタム認証スクリプトを作成するどちらも標準モジュールではなく、非常に人気のあるモジュールでもありません。
しかし...
最も簡単な方法は、認証システムで Apache が使用するパスワード リストを更新することです。Apache には、.htpasswd ファイルまたは .htdigest ファイルからユーザーを追加/更新/削除するために必要なすべてのツールが付属しています (htpasswd
またはhtdigest
コマンドを任意のユーザー管理システムにフックするのは簡単なはずです)。
またはmod_auth
、次のモジュールを介してデータベースから (Apache のデフォルトの認証システム) を読み取ることができます。
mod_auth_dbm
- 標準モジュールを使用すると、プレリレーショナルデータベースの dbm ファミリーmod_auth_mysql
- MySQLデータベースを使用できるようにするサードパーティモジュール- PostgreSQLやその他のSQLデータベースを使用することもできます。
mod_dbd
そしてmod_authn_dbd
。
私個人としては、この方法を採用します。これは、ユーザー パスワード ハッシュ (パスワード自体を保存していないことを願います) を別のテキスト ファイルに複製するよりもエレガントであり、新しい認証システムを作成することは車輪の再発明のように思われるからです。
答え2
.htaccess を使用して、特定のディレクトリへのアクセスを制限できます。
http://www.elated.com/articles/password-protecting-your-pages-with-htaccess/
.htaccessファイルから参照するhtpasswdファイルを作成する必要があります。
http://www.htaccesstools.com/htpasswd-generator/
Python: htpasswd ファイルを処理できるライブラリがあるようです:
http://pacopablo.com/wiki/pacopablo/blog/htpasswd-with-python
Python と htpasswd の詳細:
python.org/passlib/lib/passlib.apache.html を参照してください。
私は Python に詳しくないので、完全な解決策を提示することはできません。しかし、Python に詳しい人なら、少しグーグルで検索すれば、おそらくそれほど複雑ではなく、可能だと思います。