Django开发服务器智能卡认证

时间:2011-02-19 13:28:43

标签: django authentication ssl smartcard

我想在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 个答案:

答案 0 :(得分:3)

为什么不用apache运行开发环境? django dev服务器没有什么apache不能为你做的。您实际上可以设置自动代码更改拾取,因为它非常方便用于开发目的,如果您使用wsgi,可以在此处阅读更多相关内容:http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode

答案 1 :(得分:3)

这个回答有点像马丁的回答。您可以使用Fabric http://docs.fabfile.org/0.9.4/之类的东西来自动设置开发环境apache + wsgi。

显然这有一些前期时间/成本,但完成后你就可以快速轻松地设置任意数量的环境。

您可以与观察者http://www.splitbrain.org/blog/2011-01/07-watcher_a_recursive_incron_alternative结合使用,自动触摸您的wsgi文件,并在每次进行更改时重新加载您的环境。

答案 2 :(得分:2)

开发服务器(或一般Python)的SSL功能是AFAIK相当平庸。最近有更新的Python和Django版本可能已经改变了,但我对此表示怀疑。

您实际上不需要开发服务器中的SSL身份验证功能。最简单的是模仿Apache,如果你要部署到Apache,使用自定义WSGI中间件来设置相同的变量(不依赖于mod_ssl证书解析,最简单的方法是将经过身份验证的证书导出到环境中并使用它,例如,对于进一步的OCSP或CRL检查,并使您的应用程序的行为就像您使用客户端证书进行身份验证一样。这种方法还允许运行一些棘手的测试,例如,如果用户使用模拟证书在名称中包含ÕÄÖÜŽŠ等字符,会发生什么。

答案 3 :(得分:0)

在开发环境中使用nginx + green unicorn + django运行SSL非常简单。 基本上你只需要:

  1. pip install gunicorn
  2. 代替runserver执行run_gunicorn
  3. apt-get install nginx(或port install nginx +ssl或其他任何内容,具体取决于您运行的操作系统。)
  4. 配置你的nginx。这是an example
  5. ...如果您想使用SSL客户端身份验证,请参阅我的项目,github上的django_ssl_auth