跳转到主要内容

使用主密码登录任何用户。将主密码支持添加到您的自定义身份验证后端。

项目描述

Build Status Coverage Status Version

概述

此应用程序提供了一种混合类,可以将后备主密码身份验证添加到现有的后端,并提供一个带有主密码身份验证的Django的ModelBackend子类。

这可能会很危险,通常不建议在生产环境中使用,但在开发和测试环境中非常有用。

在紧急情况下,也可以临时使用(使用强密码)来处理生产环境中的最终用户问题,而无需重置他们的密码。

安装

使用pip安装

$ pip install django-master-password

更新AUTHENTICATION_BACKEND设置

AUTHENTICATION_BACKEND += ('master_password.auth.ModelBackend', )

如果您想使用可选的make_password管理命令,也需要更新INSTALLED_APPS设置

INSTALLED_APPS += ('master_password', )

使用方法

MasterPasswordMixin.authenticate()方法将首先尝试使用其超类进行身份验证,然后回退到主密码身份验证。

默认实现将针对MASTER_PASSWORDS设置进行身份验证,该设置应为一个字典,其键为明文或散列密码,值为回调函数(或None)。

回调函数必须以用户对象作为唯一参数,并且如果用户可以使用该密码进行身份验证,则应返回True

例如,您可能有一个不能用于员工或超级用户账户的主密码,另一个可以用于任何账户

MASTER_PASSWORDS = {
    'user123': lambda u: not u.is_staff and not u.is_superuser,
    'superuser123': None,
}

明文主密码的使用仅作为开发中的便利。当DEBUG=False时,您必须使用至少包含50个字符、1个数字、1个大写字母、1个小写字母和1个非字母数字字符的强散列密码

MASTER_PASSWORDS = {
    'pbkdf2_sha256$'
    '20000$'
    'kGdCcfmJtsUY$'
    'euTmHbJ9sdHirlsM2MvUjHQPDJ6CZdu02gYrxY3aAbI=': None,
}

这是一种防止在生产环境和预发布环境中意外启用不安全主密码的安全措施。

您可以使用Python生成哈希密码

>>> from django.contrib.auth.models import make_password
>>> print make_password('password123')
pbkdf2_sha256$20000$kGdCcfmJtsUY$euTmHbJ9sdHirlsM2MvUjHQPDJ6CZdu02gYrxY3aAbI=

或者使用 make_password 管理命令

(venv)$ ./manage.py make_password
Password:
Hashed password: pbkdf2_sha256$20000$kGdCcfmJtsUY$euTmHbJ9sdHirlsM2MvUjHQPDJ6CZdu02gYrxY3aAbI=

自定义

如果您已经在使用自定义认证后端,请使用混合类向其中添加主密码认证。您需要定义一个 get_user_object(**kwargs) 方法,该方法应与超类上的 authenticate() 方法相同,但不进行任何密码验证。

如果您想从除了 MASTER_PASSWORDS 设置之外的其他来源获取主密码,也可以覆盖 get_master_passwords() 方法。

项目详情


下载文件

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

源代码分发

此版本没有可用的源代码分发文件。请参阅 生成分发存档 的教程。

构建分发

django_master_password-1.1.1-py2.py3-none-any.whl (10.9 kB 查看散列)

上传时间 Python 2 Python 3

支持者