سؤال

كنت تريد أن تعطي للمستخدمين الوصول إلى WebDav باستخدام أباتشي ، ولكن أريد أن autenticate لهم أولا وإعطاء كل مستخدم الوصول إلى مجلد معين.كل المصادقة يجب القيام به ضد جانغو-بناء قاعدة البيانات الخاصة بنا.يمكنني الحصول على Django-مصادقة العامل نفسي ولكن أنا بحاجة إلى مساعدة مع علي مصادقة كل مستخدم وتوفر لهم مخصص webdav المستخدم-منطقة محددة.

أي تلميحات ؟

هل كانت مفيدة؟

المحلول

وقد تجد أن اباتشي mod_authn_dbd حدة يمنحك ما انت تريد. هذه الوحدة تسمح اباتشي تحقق قاعدة بيانات 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>

وبالمعنى الدقيق للكلمة، وهذا يعني أنك مصادقة ضد قاعدة بيانات جانغو، وليس ضد التطبيق جانغو نفسها. لاحظ أن لديك السيطرة الكاملة على الاستعلام، حتى تتمكن من دمجها مع غيرها من المعالم في أي جداول للتأكد من أن المستخدم هو في وضع جيد، أو في فئات معينة، أو أيا كان، قبل السماح للمصادقة.

وقد تحتاج إلى ضجة حول قليلا للتأكد من آليات التجزئة المستخدمة هي نفسها في كل اباتشي وجانغو.

إذا لم يعجب، فكر في نقل المصادقة الخاصة بك من قاعدة البيانات جانغو في، ويقول، خادم LDAP. مع الخلفية المصادقة المخصصة (هناك تطبيقات LDAP لجانغو هناك الحالية)، جانغو سوف تستخدم بسعادة LDAP ... والمصادقة LDAP / دعم المصادقة في Apache قوي للغاية.

نصائح أخرى

أولا لك القراء الآخرين ، المصادقة تم القيام به ضد جانغو باستخدام WSGI المصادقة النصي.

ثم هناك اللحوم من السؤال ، وإعطاء كل جانغو المستخدم في هذه الحالة الخاصة بهم WebDav dir فصل من المستخدمين الآخرين.على افتراض التالية 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: يجعل أباتشي "نتطلع إلى الأمام" والسماح للمستخدم تسجيل الدخول قبل تحديد تركيب المسار الذي أمر بالغ الأهمية نظرا لأن مسار يعتمد على اسم المستخدم.بدون كتابة-المادة لن يكون هناك أي رابط المستخدم لن تحصل على موجه تسجيل الدخول.وبعبارة أخرى, LA-U يتجنب catch-22 لهذا النوع من الدخول التعامل.

الاحتياطات:يتطلب mod_rewrite إلى تمكين و أسماء المستخدمين يجب أن تكون صالحة كما dir الأسماء دون أي تعديل.أيضا يمكن للمستخدم تطبيق الاستعراض المفصل لن يكون تلقائيا إنشاء هذه الأوامر حتى وجودها يجب أن تكون مضمونة في بعض طريقة أخرى.

أعرف أن هذا السؤال هو قديم ولكن فقط كإضافة...إذا كنت تستخدم mod_python, كنت قد تكون مهتمة أيضا في "مصادقة ضد جانغو قاعدة بيانات المستخدم من أباتشي"قسم من جانغو الوثائق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top