使用多因素认证保护您的Wagtail站点。支持TOTP和WebAuthn/Passkeys。
项目描述
Wagtail MFA
Wagtail MFA是Wagtail的多因素认证软件包。它为您的Wagtail管理界面增加了额外的安全层。
在内部,Wagtail MFA使用django-otp和django-otp-webauthn来提供Passkey登录功能。此软件包所做的一切就是提供特定于Wagtail的UI,让用户管理他们的MFA设置,并有一个MFA验证页面。
[!重要]
该软件包处于alpha阶段,尚未功能完整。尚未进行全面测试和文档编制。如果您有兴趣使用此软件包,请为该仓库加星以表示您的兴趣。最终,我打算
屏幕截图
保存Passkey的Safari自动填充提示 | 指纹登录 | 已注册的Passkey |
---|---|---|
|
|
|
功能
支持的认证方法
- Passkey(支持无密码登录)
即将推出
- 基于时间的单次密码(TOTP)
- 恢复码
支持的浏览器
Passkey是一种相对较新的技术,并非所有浏览器都能可靠地支持它们。以下浏览器已过测试,并且已知与Passkey兼容
- macOS 14上的Chrome 125
- macOS 14上的Firefox 126(存在已知问题,见已知限制)
- macOS 14上的Safari 17
[^1]:存在无密码登录的已知问题,更多信息请见已知限制。
要求
- Python >= 3.9
- Django >= 4.2
- Wagtail >= 5.2
安装
使用pip安装软件包
pip install wagtail-mfa
将所有必需的应用程序添加到您的INSTALLED_APPS
# settings.py
INSTALLED_APPS = [
...
# Wagtail MFA must appear before wagtail because it overrides the default Wagtail login template
"wagtail_mfa",
...
# django-otp and django-otp-webauthn are required
"django_otp",
"django_otp_webauthn",
...
]
为了使Passkey正常工作,您需要设置一些额外的django_otp_webauthn
设置。
将以下代码片段修改并添加到您的settings.py
# settings.py
OTP_WEBAUTHN_RP_ID = "your-domain.com"
OTP_WEBAUTHN_RP_NAME = WAGTAIL_SITE_NAME
OTP_WEBAUTHN_ALLOWED_ORIGINS = ["https://your-domain.com", "https://subdomain.your-domain.com"]
配置
OTP_WEBAUTHN_RP_ID
示例:your-domain.com
此设置是您网站的默认域名。Passkey与此域名绑定。它不能是像your-app.compute.amazonaws.com
或your-app.herokuapp.com
这样的“公共后缀”域名。它必须是您拥有的域名。浏览器将拒绝为公共后缀域名创建Passkey。有关公共后缀域名的完整列表,请参阅publicsuffix.org。
OTP_WEBAUTHN_RP_NAME
示例:My Cool Wagtail Site
某些浏览器在注册Passkey时将显示此名称。这可以是您网站或公司的名称。
OTP_WEBAUTHN_ALLOWED_ORIGINS
示例:["https://your-domain.com", "https://subdomain.your-domain.com"]
此设置类似于Django的CSRF_TRUSTED_ORIGINS
设置,并用于验证Passkey注册/认证请求。它必须是OTP_WEBAUTHN_RP_ID
的https://
(子)域名。不要包含尾随斜杠。
已知问题
- Firefox上的问题。当使用Firefox在Android设备上注册和存储Passkey时,Passkey将无法用于无密码登录。这是因为Firefox不会创建
可发现凭证
。这似乎是Firefox的限制。这个问题在macOS 14上的Firefox 126上观察到。 - 多站点支持有限。 WebAuthn目前不支持在不同域名之间使用Passkey。如果您为
your-site.com
创建了Passkey,则无法在another-site.com
上进行认证。但是,支持子域名如subdomain.your-site.com
。
开发
有关如何开发和向该项目贡献的信息,请参阅DEVELOPMENT.md。
许可协议
该项目采用BSD 3-Clause许可证。有关详细信息,请参阅LICENSE文件。
wagtail_mfa-0.1.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4a8c6c9356c30902cc9e09258a322d1e22ed3cf446fbbe1f3d732861a1c83b25 |
|
MD5 | e4d022253ca4fb46b6d584a4ac87b0be |
|
BLAKE2b-256 | 1512349ac46fbcd5cf8b58dbde5eb6d4d914e998bba87276f042f9cd3c942ced |
wagtail_mfa-0.1.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f2fc74701d2d6fc191c19cbb54218aaa40e3a2dfd25fd670950c787d82999857 |
|
MD5 | c7b26134a0144c7c4c8541283842a037 |
|
BLAKE2b-256 | a7cfee70583fb8706ed4f7bf426598ee4ded6f6c8037c0f524cad2d170cd88e1 |