跳转到主要内容

Django的Kerberos身份验证

项目描述

Django的Kerberos身份验证

为Django应用程序提供Kerberos身份验证。

支持Python 2和3,Django >1.8。

基本用法

将此添加到您的项目 urls.py

url('^accounts/kerberos/', include('django_kerberos.urls')),

并使用默认的身份验证后端,通过将其添加到您的 settings.py 文件

AUTHENTICATION_BACKENDS = (
    'django_kerberos.backends.KerberosBackend',
)

设置

KERBEROS_HOSTNAME

获取服务密钥的主机名,相应的主体将是 HTTP/{KERBEROS_HOSTNAME}@DEFAULT_REAML,默认为 None。如果为 None,则将使用请求中的主机名。

KERBEROS_BACKEND_CREATE

是否在找不到现有模型时创建用户,默认为 False

KERBEROS_BACKEND_ADMIN_REGEXP

主体必须匹配的正则表达式以获取超级用户权限,默认为 None。一个经典示例可能是 r’^.*/admin$’

KERBEROS_SERVICE_PRINCIPAL

当检查密码与KDC的密码时使用的服务主体,您不需要此主体的密钥,它只需存在于Kerberos数据库中即可,因为检查是通过尝试获取此服务的票据来完成的。默认为None。它仅用于伪密码哈希器和登录/密码身份验证后端。

KERBEROS_KEEP_PASSWORD

KerberosPasswordBackend是否在每次用户登录时将检查密码的哈希存储在用户模型中。默认为False。它允许您的网站在Kerberos失败或您需要从域中分离时提供备份身份验证。

自定义后端

可以使用自定义身份验证后端,在这种情况下,authenticate方法的签名必须是

class CustomKerberosBackend(object):
    def authenticate(self, principal=None):
        pass

示例应用程序

首先,您需要像这样将django-kerberos安装到您的环境中

python setup.py install

如果您想尝试示例应用程序,您必须将此行添加到您的 /etc/hosts 文件中,绝对在开头

127.0.0.1 test.example.com

然后您必须连接到您的Kerberos管理服务器,并添加principal HTTP/test.example.com,并将其密钥导出到keytab文件中

$ kadmin -p myuser/admin
kadmin: addprinc -randkey HTTP/test.example.com
kadmin: ktadd -k /tmp/keytab HTTP/test.example.com

最后,您可以运行示例程序

cd sample; KRB5_KTNAME=FILE:/tmp/keytab python ./manage.py runserver

现在您应该可以登录到http://test.example.com:8000/

示例项目已配置为所有以/admin结尾的principal都获得staff和超级用户标志。您可以通过编辑sample/sample/settings.py中的密钥KERBEROS_BACKEND_ADMIN_REGEXP来更改此设置。

伪哈希器

具有导入路径django_kerberos.hashers.KerberosHasher的伪哈希器提供了一种将Django用户模型与Kerberos身份关联起来的方法。

密码字段的必须内容为kerberos$

要为principal创建用户,您可以执行以下操作

User.objects.create(username=new_username, password='kerberos$' + principal)

登录/密码后端

如果您的用户没有为SPNEGO HTTP认证配置浏览器,您还可以提供经典的登录/密码表单,该表单使用Kerberos检查密码。

自动登录

提供了一个模板包含来实现自动登录。它使用AJAX调用Kerberos登录视图。登录视图中的AJAX支持使视图返回一个包含布尔值的JSON文档,指示登录是否成功。如果登录成功,则重新加载当前视图。

要使用此模板,只需将以下代码添加到您的任何模板中

{% include "django_kerberos/autologin.html" %}

成功登录后,将创建一个cookie,该cookie将防止在接下来的15分钟内自动登录,以便在立即注销后允许使用其他方法进行登录。

模板显示一个具有id“kerberos-autologin”和包含文本“自动登录…”的HTML div,这样您就可以添加CSS样式。

自动登录的JavaScript实现是一个名为“js/autlogin.html”的脚本,它可以被重复使用以实现其他协议的自动登录。它唯一的要求是有一个视图,该视图在HTTP GET请求上返回“true”,如果登录成功。该脚本提供一个javascript函数,其签名是

autologin(url, callback[. timeout])

url是登录视图的URL,callback是一个javascript函数,它将接收true或false,取决于登录是否成功,timeout是成功登录后自动登录禁用的秒数,默认为15分钟。

项目详情


下载文件

下载适合您平台文件的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

django-kerberos-1.4.4.tar.gz (14.2 kB 查看散列)

上传时间

构建分布

django_kerberos-1.4.4-py2-none-any.whl (13.1 kB 查看散列)

上传于 Python 2

由以下支持