문제

Apache를 사용하여 사용자에게 WebDAV에 액세스 할 수 있도록하고 싶지만 먼저 자동화하고 각 사용자가 특정 폴더에 액세스 할 수 있도록하고 싶습니다. 모든 인증은 Django 기반 데이터베이스에 대해 수행해야합니다. Django-Authentication을 직접 작동시킬 수 있지만 각 사용자를 인증하고 전용 WebDAV 사용자 별 영역을 제공하는 부분에 도움이 필요합니다.

힌트가 있습니까?

도움이 되었습니까?

해결책

아파치를 찾을 수 있습니다 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는 사용자 정의 인증 백엔드 (Django에 대한 기존 LDAP 구현이 있습니다)를 사용하면 LDAP를 행복하게 사용하고 Apache의 LDAP Auth/Auth 지원은 매우 강력합니다.

다른 팁

먼저, 다른 독자들에게, 나의 인증은 django에 대해 WSGI 인증 스크립트.

그런 다음 질문의 고기가 있으며, 각 Django 사용자,이 경우 다른 사용자와 분리 된 자체 Webdav Dir를 제공합니다. Apache 가상 사이트 구성에서 다음 Webdav 설정을 가정합니다 (관습 적으로 /etc/apache2/sitees-enabled/)

<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는 이러한 유형의 로그인 처리에 대한 Catch-22를 피합니다.

지침: mod_rewrite를 활성화해야하며 사용자 이름은 수정없이 DIR 이름으로 유효해야합니다. 또한 사용자 DIRS는 이러한 명령에 의해 자동으로 생성되지 않으므로 다른 방식으로 그 존재를 보장해야합니다.

나는이 질문이 오래되었다는 것을 알고 있지만 추가 된 것과 마찬가지로 ... mod_python을 사용하는 경우에도 관심이있을 수 있습니다. "Apache의 Django의 사용자 데이터베이스에 대한 인증"장고 문서의 섹션.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top