Проверка подлинности смарт-карты сервера разработки Django - PullRequest
5 голосов
/ 19 февраля 2011

Я хотел бы использовать аутентификацию на основе смарт-карт на сервере разработки Django, так как это общепринятый способ аутентификации, где я живу.

С помощью Apache я могу включить его, создав файл .htaccess в каталоге, требующем аутентификации:

SSLVerifyClient require
SSLVerifyDepth 2

А в виртуальном хосте:

    <Directory /var/www/www/secure>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride AuthConfig Options
            Order allow,deny
            allow from all
    </Directory>

И, ссылаясь на сертификаты и списки отзыва, вот так:

SSLCACertificateFile  /etc/apache2/certificate.crt
SSLCARevocationPath /etc/apache2/crl

Довольно раздражает отсутствие этой функциональности для тестирования и разработки в Django. Есть идеи как его настроить?

Редактировать: спасибо за ваш ответ, Мартин, но это не очень помогло получить меня, где я хочу, пока. В любом случае, теперь я открыл щедрость для того, чтобы кто-то ответил на вопрос, предоставив небольшой пример кода / или дополнительные пояснения о том, что читать и с чего начать.

Ответы [ 4 ]

3 голосов
/ 25 февраля 2011

Почему бы вам не запустить свою среду разработки с Apache? Нет ничего, что apache не может сделать для вас, что может сделать django dev server. На самом деле вы можете настроить автоматический захват изменений кода, так как это очень удобно для целей разработки, вы можете узнать больше об этом здесь, если вы используете wsgi: http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode

3 голосов
/ 26 февраля 2011

Этот ответ отчасти напоминает ответ Мартина. Вы можете использовать что-то вроде Fabric http://docs.fabfile.org/0.9.4/, чтобы автоматизировать настройку среды разработки apache + wsgi.

Очевидно, что это требует некоторого предварительного времени / затрат, но после того, как это будет сделано, вы сможете быстро и легко настроить столько сред, сколько пожелаете.

Вы можете связать это с watcher http://www.splitbrain.org/blog/2011-01/07-watcher_a_recursive_incron_alternative, чтобы автоматически касаться файла wsgi и перезагружать вашу среду каждый раз, когда вы вносите изменения.

2 голосов
/ 19 февраля 2011

Возможности SSL сервера разработки (или Python в целом) являются AFAIK довольно посредственными. Может быть, это недавно изменилось с более новыми версиями Python и Django, но я сомневаюсь в этом.

На самом деле вам не нужны возможности аутентификации SSL на сервере разработки. Самым простым было бы имитировать Apache, если вы будете развертывать на Apache, с пользовательским промежуточным программным обеспечением WSGI, которое будет устанавливать те же переменные (не полагайтесь на синтаксический анализ сертификата mod_ssl, самый простой - экспортировать аутентифицированный сертификат в среду и использовать его). (для дальнейших проверок OCSP или CRL, например) и заставит ваше приложение вести себя так же, как если бы вы проходили аутентификацию с помощью сертификата клиента. Этот подход также позволяет запускать некоторые сложные тесты, например, что происходит, если в имени пользователя есть такие символы, как ÕÄÖÜŽŠ и т. Д., С использованием фиктивных сертификатов.

0 голосов
/ 06 июня 2013

Запуск SSL с nginx + зеленым единорогом + django в вашей среде разработки очень прост. В основном вам просто нужно:

  1. pip install gunicorn
  2. вместо runserver до run_gunicorn
  3. apt-get install nginx (или port install nginx +ssl или что-то еще, в зависимости от операционной системы, в которой вы работаете.)
  4. настройте свой nginx. Вот пример

... и если вы хотите использовать аутентификацию клиента SSL, см. Мой проект, django_ssl_auth на github.

...