Django 开发服务器智能卡认证

8
我希望在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中具备此功能的测试和开发目的相当令人恼怒。有没有任何想法如何设置它?

编辑:谢谢Marting的回答,但是它并没有真正帮助我到达我的目标。无论如何,现在我已经开启了悬赏,以便有人提供一个小的示例代码或更多关于该问题的解释或从哪里开始阅读。

4个回答

4

3

据我所知,开发服务器(或Python总体)的SSL功能相当一般。也许随着新版本的Python和Django的推出,这种情况已经改变了,但我还是有所怀疑。

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


3
为什么不使用Apache来运行你的开发环境呢?没有什么Apache做不到而Django开发服务器可以。你可以设置自动代码更改捡起,这对开发很方便,如果你使用WSGI,可以在这里了解更多信息:http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode

这是一个简单但不错的解决方案。也许我要求过多,但在每个开发应用程序的人的机器上设置Apache虚拟主机+mod_wsgi比仅运行manage.py runserver要花费更多的精力。当然,目前只有我在开发这个应用程序,所以这不是什么大问题。 - Uku Loskit
你可以正确地设置Apache,然后使用你的Bash历史记录为其他“未来”的团队成员创建脚本... - RyanBrady

0
在您的开发环境中使用nginx+green unicorn+django运行SSL非常容易。 基本上,您只需要:
  1. pip install gunicorn
  2. 使用run_gunicorn代替runserver
  3. apt-get install nginx(或者port install nginx +ssl或其他,具体取决于您所运行的操作系统。)
  4. 配置您的nginx。这里是一个示例

...如果您想使用SSL客户端身份验证,请参见我的项目{{link2:django_ssl_auth}}在github上。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接