質問

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

さて、WebDAVは http://my-server.com/webdav-url/ <上でアクセスされます/>ユーザーがログインプロンプトを取得し、そのユーザー名と同じ名前を持つ、WebDAVのルートにサブディレクトリに着陸する予定。 のLA-U:のは、Apacheは、「先読み」との前にのそのパスは、ユーザー名に依存するため、非常に重要であるマウントパスを決定する際にユーザーのサインをさせます。いくつかのリライト・ルールがなければそこにはURLもないだろう、とユーザーがログインプロンプトを取得することはありません。換言すれば、LA-Uは、ログイン処理のこのタイプのキャッチ22を回避している。

注意事項:有効にするmod_rewriteを必要とし、ユーザー名はそのままディレクトリ名として有効でなければなりません。また、ユーザーdirsには、これらのコマンドによって自動的に作成されることはありませんので、彼らの存在は他の方法で保証されている必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top