跳转到主要内容

Django SSL客户端身份验证

项目描述

Latest Version Test/build status Code coverage

为Django提供SSL客户端证书身份验证的SSL身份验证后端和中间件

许可

MIT许可,完整文本请见LICENSE.txt。

设置

SSL

配置nginx并为您的服务器创建SSL证书,设置服务器私钥、服务器证书和用于签发客户端证书的CA证书的路径。示例配置文件在samples/nginx.conf中。

如果您使用的是OS X,建议您使用OS X KeyChain进行测试,因为它将自动使您的客户端证书在Google Chrome和Safari中可用。您可以在此找到说明,例如http://www.dummies.com/how-to/content/how-to-become-a-certificate-authority-using-lion-s.html

在其他平台上,有许多教程介绍了如何使用OpenSSL完成此操作,例如http://pages.cs.wisc.edu/~zmiller/ca-howto/

重新启动您的nginx(sudo nginx -s restart),确保绿色独角兽正在运行,并检查您的https://网址是否加载了您的应用程序,并且服务器证书有效

本模块

  1. 运行setup.py(sudo python setup.py install)或使用

    pip install django_ssl_auth

    安装最新版本

  2. 编辑您的

    settings.py

    1. "django_ssl_auth.SSLClientAuthMiddleware"

      添加到您的

      MIDDLEWARE_CLASSES

    2. "django_ssl_auth.SSLClientAuthBackend"

      添加到您的

      AUTHENTICATION_BACKENDS

配置

settings.py

中,您需要完成以下两件事

  1. 定义一个函数,该函数可以返回一个字典,其中包含您用户模型所需字段,例如

    USER_DATA_FN = 'django_ssl_auth.fineid.user_dict_from_dn

    是一个示例实现,它从芬兰政府发行的ID智能卡的DN中获取所需的字段,用于

    contrib.auth.models.User

  2. 要自动创建所有有效证书持有者的

    User

    ,请设置

    AUTOCREATE_VALID_SSL_USERS = True

    。默认情况下,自动创建的用户将被设置为不活跃,考虑使用User.is_active字段在您的LOGIN_REDIRECT_URL视图中通知用户其状态。

有关详细信息,请参阅

testapp/ssltest/settings.py

可选配置

  1. 如果您想使用标准登录URL,请设置

    SSLCLIENT_LOGIN_URL = None

    或将其保留为未定义。对于您想要为SSL认证设置单独登录URL的情况,请设置

    SSLCLIENT_LOGIN_URL = “/YOUR_URL/”

    SSLCLIENT_LOGIN_URL

    旨在用于某些用户通过常规Django登录而不使用SSLCLIENT认证,但您为使用SSLCLIENT认证的用户设置了单独登录URL的场景。

  2. 如果您想允许不安全的请求(例如,您的Django应用程序位于代理或负载均衡器后面),请设置

    SSLCLIENT_ALLOW_INSECURE_REQUEST = True

    。如果不设置,默认将要求安全连接。

智能卡支持

有关(芬兰)说明,请参阅

doc/fineid/FINEID.md

待办事项

  • 活动目录集成。

如何获取帮助

请在http://stackoverflow.com/上提出您的问题,我在那里很活跃,并且更有可能公开回答您。您还可以尝试联系TheJoey在#django@freenode

项目详情


下载文件

下载适用于您平台的应用程序。如果您不确定要选择哪个,请了解有关安装软件包的更多信息。

源分布

django-ssl-auth-2.2.0.tar.gz (6.1 kB 查看哈希值)

上传时间 源代码

由以下组织支持