Python を使用して WebDav/Apache へのアクセスを制御する
質問
Apache を使用してユーザーに WebDav へのアクセスを許可したいのですが、最初にユーザーを認証して、各ユーザーに特定のフォルダーへのアクセスを許可したいと考えています。すべての認証は、Django ベースのデータベースに対して実行する必要があります。Django 認証を自分で機能させることはできますが、各ユーザーを認証し、専用の webdav ユーザー固有の領域をユーザーに提供する部分でサポートが必要です。
ヒントはありますか?
解決
apache が mod_authn_dbd モジュールはあなたが望むものを提供します。このモジュールを使用すると、Apache が SQL データベースの認証と認可をチェックできるようになります。このディレクティブは <Location>
, <Directory>
(など) 保護しようとしている領域:
<Directory /usr/www/myhost/private>
# other config ere
# mod_authn_dbd SQL query to authenticate a user
AuthDBDUserPWQuery \
"SELECT password FROM authn WHERE user = %s"
</Directory>
厳密に言うと、これは Django アプリ自体ではなく、Django のデータベースに対して認証していることを意味します。クエリを完全に制御できるため、認証を許可する前に、クエリをテーブル内の他のパラメータと組み合わせて、ユーザーが良好な状態にあること、特定のグループなどに所属していることを確認できることに注意してください。
使用されるハッシュ メカニズムが Apache と Django の両方で同じであることを確認するには、少しいじる必要があるかもしれません。
これが適さない場合は、認証を django データベースから、たとえば LDAP サーバーに移動することを検討してください。カスタム認証バックエンドを使用すると (django 用の既存の LDAP 実装が存在します)、django は喜んで LDAP を使用します。また、Apache での LDAP 認証/認証のサポートは非常に堅牢です。
他のヒント
まず、あなたの他の読者のために、私の認証が<のhref =「http://www.davidfischer.name/2009/10/django-authentication-and-mod_wsgi/」のrel = "nofollowをを使用してジャンゴに対して行われました「> WSGI認証スクリプトでます。
次に、質問の肉は、独自のWebDav dirは、他のユーザーから分離し、この場合には、各Djangoのユーザーを与え、があります。 Apacheの仮想サイトの設定で、次のWebDAVの設定を想定すると、
(通例のの/ etc / apache2の/ の/サイト対応の中で)<Directory /webdav/root/on/server>
DAV On
# No .htaccess allowed
AllowOverride None
Options Indexes
AuthType Basic
AuthName "Login to your webdav area"
Require valid-user
AuthBasicProvider wsgi
WSGIAuthUserScript /where/is/the/authentication-script.wsgi
</Directory>
まだ設定WebDavのためのパブリックアドレスがありません注意してください。これ、およびユーザ領域のものは、同じ設定ファイル(終了句の後にこれらを置く)で二行に固定されます:
RewriteEngine On
RewriteRule ^/webdav-url/(.*?)$ /webdav/root/on/server/%{LA-U:REMOTE_USER}/$1
のの注意事項:有効にするmod_rewriteを必要とし、ユーザー名はそのままディレクトリ名として有効でなければなりません。また、ユーザーdirsには、これらのコマンドによって自動的に作成されることはありませんので、彼らの存在は他の方法で保証されている必要があります。
私はこの質問が古いですけど、あなたはmod_pythonのを使用している場合は、単に加えて...、あなたはまた、に興味がある可能性があり、「<のhref =」http://docs.djangoproject.com/en/dev/ HOWTO / apacheの-AUTH /#のHOWTO-apacheの-AUTH "のrel = "nofollowをnoreferrer"> Apacheのの認証にDjangoのユーザデータベースを使う" Djangoのドキュメントのセクションます。