一个可插入的框架,用于通过一次性密码(OTP)将双因素认证添加到Django。
项目描述
此项目使将一次性密码(OTP)支持添加到Django变得容易。它可以集成在不同的级别,具体取决于所需的定制程度。它与django.contrib.auth集成,尽管它不是一个Django认证后端。主要目标是希望将OTP集成到其Django项目中作为双因素认证(2FA)形式的开发者。
包含几个简单的OTP插件,并且还有更多可以单独获得。此包还包括OATH HOTP 和 TOTP 的实现,以便方便使用,因为这些是多个插件使用的标准OTP算法。
如果您正在寻找更高级或更有观点的解决方案,您可能会对django-two-factor-auth感兴趣。
状态
此项目是稳定并得到维护的,但作者不再积极使用,且没有看到很多持续的投资。
欢迎良好的问题和拉取请求,但请首先查看CONTRIBUTING.rst。一般问题和想法应指向讨论部分;问题应保留用于已确认的bug。
开发
本项目使用 hatch 构建和管理。如果您没有hatch,建议使用 pipx 安装: pipx install hatch。
pyproject.toml 定义了多个用于开发和测试的有用脚本。默认环境包括所有开发和测试依赖项,以便快速运行测试。test 环境定义了运行完整验证套件的测试矩阵。所有操作都是在 test/test_project 中的 Django 项目的上下文中执行的。
作为一个快速入门,可以使用 hatch run [<env>:]<script> 运行 hatch 脚本。要在默认环境中运行检查器和测试,只需运行 hatch run check。这将使用您的默认 Python 版本和最新的 Django 运行测试。其他脚本包括
manage:通过测试项目运行管理命令。这可以用来生成迁移。
lint:运行所有检查器。
fix:运行所有修复器以解决检查问题。这可能不会修复检查器报告的所有问题。
test:运行所有测试。
check:运行检查器和测试。
warn:启用所有警告并运行测试。这对于查看 Django 新版本中的弃用警告特别有用。
cov:运行测试并打印代码覆盖率报告。
要运行完整的测试矩阵,请运行 hatch run test:run。您需要安装多个特定的 Python 版本才能做到这一点。
您可以使用 hatch env prune 清理 hatch 环境,例如强制依赖项更新。
在 test 下的项目可以作为简单的交互式测试环境运行。运行 hatch run manage runserver 并在浏览器中打开它。它包含登录表单和具有不同装饰器组合的视图实现,您可以对其进行实验或用于测试更改。
配置
默认情况下,测试项目使用 SQLite。由于 SQLite 不支持行锁定,某些并发测试将被跳过。要针对 PostgreSQL 进行测试,您可以添加指向您的数据库的本地配置文件。
配置是从存储在 test/config 下的 TOML 文件中获取的。当在匹配的 hatch 环境中运行时,将自动应用名为 env-<env-name>.toml 的配置文件。例如,env-default.toml 适用于默认开发环境,而 env-test.toml 适用于测试矩阵环境。
对于广泛的 PostgreSQL 安装,env-test.toml 可能看起来像这样
[database]
ENGINE = "django.db.backends.postgresql"
NAME = "django-otp"
USER = "postgres"
对于开发,配置文件也可以用来注入 Django 应用和中间件,或覆盖任意 Django 设置。有关完整说明,请参阅 test/config/sample.toml。
您还可以通过将环境变量 DJANGO_OTP_CONFIG 设置为路径来强制使用特定的配置文件。
未来
曾经,一切只是用户名和密码。或者,在其他认证机制的情况下,用户要么被认证,要么没有(在 Django 术语中为匿名)。然后是双因素认证,它可以是二进制认证状态中的实现细节,也可以意味着认证的级别或程度。
如今,越来越多的网站具有更细微的认证状态。一个网站可能会永远记住你是谁——所以你不是匿名的——但如果你试图做任何私密的事情,你必须重新认证。您可能可以从您配置的所有认证机制中选择,或者仅从其中一些中选择。某些机制可能需要特定的操作,例如使用您的 U2F 设备访问您的 U2F 设置。
简而言之,世界似乎正在超越最初为Django核心身份验证设计提供依据的假设。如果我现在还在一般性地投资于Django,我可能会开始一个新的多因素身份验证项目,以反映这些变化。它将包含这样的想法:用户可能在任何时间通过各种机制组合进行身份验证,并且可能需要不同的组合来满足网站上的多样化授权需求。它很可能会尝试至少在某种程度上将身份验证持久性从会话中分离出来。许多网站可能不需要所有这些灵活性,但通过在任何时候不要求用户提供比所需更多的信息,它将打开更好的体验的可能性。
如果有任何人有意愿承担这样的项目,我会很乐意提供我能提供的任何建议或经验教训。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定该选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
django_otp-1.5.4.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 0d9497ea4fb13fc04d50b49aa53dd1c740fe4bc5dde0ca27fb394f84e5da7bac |
|
MD5 | f13736382a1dc1adb9d2abfc25dd3598 |
|
BLAKE2b-256 | fb721fa100beb512165c0dfbb52ab007e11b56f471647441e86da0bfd706e3b7 |