使用主密码登录任何用户。将主密码支持添加到您的自定义身份验证后端。
项目描述
概述
此应用程序提供了一种混合类,可以将后备主密码身份验证添加到现有的后端,并提供一个带有主密码身份验证的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() 方法。
项目详情
散列 for django_master_password-1.1.1-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2447cdddfa0ccbd63cbc5b52ec153e90d90cbf37d66e921114a22ef5281c44ec |
|
MD5 | 526c05b0956d5346ae120ad51d8829e2 |
|
BLAKE2b-256 | a45f3b27cfe00f0b49f2baac9d3ad95fb06327f1ca55fdf435b3e674b55c3230 |