django的gssapi身份验证
django-gssapi的Python项目详细描述
django的gssapi身份验证
向django应用程序提供gssapi(spnego)身份验证。
这是使用python gssapi重写django kerberos。
它只使用mit kerberos 5使用k5test包进行测试。
支持Python2和3、django>;1.8。
基本用法
将此添加到您的项目urls.py:
url('^auth/gssapi/', include('django_gssapi.urls')),
并使用默认的身份验证后端,将其添加到设置中。py文件:
AUTHENTICATION_BACKENDS = ( 'django_gssapi.backends.GSSAPIBackend', )
视图
django gssapi提供了一个基本的loginview,您可以将其子类化以获取 行为您的需要,主要扩展点是:
- challenge()返回带有质询的401响应,您应该覆盖它 要显示解释失败的模板,
- 成功(用户)它应该记录给定的用户并重定向到redirect\u field\u name,
- get_service_name()它应该通过 默认情况下,它返回none,因此gssapi将匹配任何可用的名称(例如 使用kerberos,它将匹配keytab中的任何名称,比如 @http/my.domain.com@)。
设置
要使应用程序使用gssapi作为其主要登录方法:
LOGIN_URL = 'gssapi-login'
您的应用程序需要一个gssapi机制(如kerberos)所在的环境 对kerberos来说,这意味着有一个默认的keytab来创建一个 在krb5_ktname中设置其路径,或者可以将gssapi_store与mit kerberos一起使用 5和凭证存储扩展以指示密钥选项卡:
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.gssapi backend中提供了一个虚拟后端 用户名与gssapi名称相同的up用户。你应该实现它 你的用例。
自定义身份验证后端必须具有以下签名:
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 用于查找用户并在中返回gssapi名称的身份验证后端 请求.auth。