跳转到主要内容

Django的GSSAPI身份验证

项目描述

Django的GSSAPI身份验证

为Django应用程序提供GSSAPI(SPNEGO)身份验证。

这是使用python-gssapi重写的django-kerberos。

它仅与使用k5test包的MIT Kerberos 5进行了测试。

支持Python 2和3,Django >1.8。

基本用法

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

url('^auth/gssapi/', include('django_gssapi.urls')),

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

AUTHENTICATION_BACKENDS = (
    'django_gssapi.backends.GSSAPIBackend',
)

视图

django-gssapi提供了一个基类LoginView,您可以通过继承它来获得所需的行为,主要扩展点是

  • challenge() 返回包含挑战的401响应,您应该覆盖它以显示一个解释失败的模板,

  • success(user) 应该记录给定的用户并将重定向到REDIRECT_FIELD_NAME,

  • get_service_name() 它应该返回一个gssapi.Name作为您的服务,默认情况下它返回None,因此GSSAPI将匹配任何可用的名称(例如,对于Kerberos,它将匹配keytab中的任何名称,例如@HTTP/my.domain.com@)。

设置

要使您的应用程序使用GSSAPI作为其主要登录方法

LOGIN_URL = 'gssapi-login'

您的应用程序需要一个GSSAPI机制(如Kerberos)可以工作的环境,对于Kerberos,这意味着有一个默认的keytab或创建一个并将其路径设置在KRB5_KTNAME中,或者您可以使用MIT Kerberos 5的GSSAPI_STORE和凭证存储扩展来指示一个keytab

GSSAPI_STORE = {'keytab': 'FILE:/var/lib/mykeytab'}

您还可以使用以下内容强制为您的服务设置GSSAPI名称

import gssapi

GSSAPI_NAME = gssapi.Name('HTTP/my.service.com', gssapi.MechType.hostbased_service)

GSSAPI身份验证后端

django_gssapi.backends.GSSAPIBackend中提供了一个虚拟后端,它查找与GSSAPI名称相同的用户。您应该根据您的用例实现它。

自定义身份验证后端必须具有以下签名

class CustomGSSAPIBackend(object):
    def authenticate(self, request, gssapi_name):
        pass

参数 gssapi_name 是一个 gssapi.Name 对象,它可以被转换为字符串以获取原始名称。

Kerberos用户名/密码后端

如果您的用户没有将浏览器配置为SPNEGO HTTP身份验证,您还可以提供一个经典的登录/密码表单,该表单使用Kerberos验证密码。为此,请使用 django_gssapi.backends.KerberosPasswordBackend,用户名用作原始主体名称。

django-rest-framework身份验证后端

要使用GSSAPI验证用户,可以使用 django_gssapi.drf.GSSAPIAuthentication,它使用配置的GSSAPI身份验证后端查找用户,并在 request.auth 中返回GSSAPI名称。

项目详情


下载文件

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

源分发

django-gssapi-1.0.tar.gz (11.4 kB 查看散列)

上传时间

构建分发

django_gssapi-1.0-py2.py3-none-any.whl (9.2 kB 查看散列)

上传时间 Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面