无密码认证:通过点击收到的电子邮件中的魔法链接进行登录。
项目描述
Django Magicauth
Django Magicauth将为您的项目带来无密码认证。
工作原理
- 用户输入他们的电子邮件地址(可选的OTP)。
- 向用户发送一封包含一次性令牌的链接的电子邮件。
- 他们点击此链接后,即可登录到服务。
有关默认模板的详细步骤和截图,请参阅图片中的步骤。
工作原理(法文)
使用 Django Magicauth 无密码验证您的用户。
工作原理
- 用户填写他们的电子邮件地址(以及可选的一次性密码 OTP)。
- 随后,他们将收到一封包含连接链接的电子邮件。
- 点击链接后,他们将被验证并重定向到服务。
要查看详细的图像说明,请参阅 图像流程。
安装和测试说明
快速入门
- 安装 Magicauth
pip install git+https://github.com/betagouv/django-magicauth.git
- 将 "magicauth" 添加到您的
settings.py
中的INSTALLED_APPS
。
INSTALLED_APPS = [
# all your apps
"magicauth",
]
- 在您的应用的
url.py
中包含 magicauth URLconf。
# After your previous imports
from magicauth import views as magicauth_views
from magicauth.urls import urlpatterns as magicauth_urls
urlpatterns = [
# here are your URL patterns
]
urlpatterns.extend(magicauth_urls)
- 在您的项目的
settings.py
中添加以下项:
MAGICAUTH_FROM_EMAIL = 'contact@mysite.com'
MAGICAUTH_LOGGED_IN_REDIRECT_URL_NAME = 'home'
MIDDLEWARE = [
# [...] other middleware you may have
"django.contrib.sessions.middleware.SessionMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.sites.middleware.CurrentSiteMiddleware",
]
使用一次性密码 (OTP) 的双因素认证 (2FA)
双因素认证意味着您会从用户那里请求两个不同的密码:他们的正常密码和一个 OTP。(见 https://en.wikipedia.org/wiki/Multi-factor_authentication)只有当两个都是有效的时,他们才能获得魔法链接,否则他们将收到错误信息,链接不会发送。
什么是 OTP?它是一个短代码(6 到 8 位数字),通常由用户设备上的专用应用程序(智能手机、硬件)生成。见 https://en.wikipedia.org/wiki/Time-based_One-time_Password_algorithm
如何启用 OTP
我们使用 django-otp 包。您必须在项目中安装并配置它。
- 安装 django_otp:
pip install django_otp
(或您使用的任何包管理器) - 在
INSTALLED_APPS
中添加所需的应用:'django_otp'
,'django_otp.plugins.otp_totp'
- 在您的项目中运行迁移:
python manage.py migrate
- 在您的
settings.py
中设置MAGICAUTH_ENABLE_2FA = True
如果您使用默认的登录模板,OTP 输入框将显示在电子邮件下方(在登录页面中)。(要检查安装是否成功,您可以恢复到默认模板并查看字段是否出现:删除您的 MAGICAUTH_LOGIN_VIEW_TEMPLATE 变量。)
如果您有自定义登录模板,您必须在 OTP_form
中添加输入 OTP 的字段。请参阅默认登录模板的示例:templates/magicauth/login.html
出于测试目的,您可以从命令行为特定用户生成 OTP
- 将 'django_otp.plugins.otp_static' 添加到
INSTALLED_APPS
。 - 然后您可以使用 addstatictoken 从命令行使用。例如:
python manage.py addstatictoken -t 123456 "thierry@coucou.fr"
为 Magicauth 做贡献
要为 Magicauth 做贡献,您可以在 "editable" 模式下安装包
pip uninstall django-magicauth # just in case...
pip install -e git+https://github.com/betagouv/django-magicauth.git#egg=django-magicauth
您还可以安装特定的分支,例如用于测试一个 PR。要安装 my-branch
分支
pip install -e git+https://github.com/betagouv/django-magicauth.git@my-branch#egg=django-magicauth
Django-magicauth 现在是您项目的依赖项,您可以在此处编辑代码
cd src/django-magicauth
运行测试
为项目创建一个虚拟环境或重用现有环境并使用它。
安装依赖项并运行 tox
cd src/django-magicauth
pip install -r requirements.txt
tox
发布流程
以下依赖项需要安装:pip setuptools wheel twine
python -m pip install --upgrade pip setuptools wheel twine
- 在
docs/releases
下创建一个名为新版本的 MD 文件并填写更改 - 在
setup.py
中更改版本 - 创建一个名为 发布版本 的提交
- 打开并合并该发布版本的 PR
- 在 https://github.com/betagouv/django-magicauth/releases/new 创建新版本
- 在新 PyPI 上发布新版本
python setup.py sdist bdist_wheel twine upload dist/*
使用 Magicauth 的项目
https://github.com/betagouv/e-controle/ https://github.com/betagouv/Aidants_Connect https://github.com/betagouv/peps https://github.com/betagouv/urbanvitaliz-django
加入我们!
图文步骤
注意:以下截图使用默认模板,外观不太美观。建议您替换为更美观的模板。
步骤 1:用户访问登录页面。(见 LoginView
在 magicauth/views.py
)
步骤 2:用户在登录页面输入他们的电子邮件地址。
步骤 3:用户看到确认页面(EmailSentView
),说明已发送电子邮件。
向用户发送一封包含一次性令牌的链接的电子邮件。
链接看起来像这样
步骤 4:一旦点击按钮并跟随链接,用户将被引导到等待页面(这是可选的)(WaitView
)
步骤 5:用户登录到服务(ValidateTokenView
)并被重定向到登录页面。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
django-magicauth-1.0.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7c3b19bebe46d170842864b70c1605bb1e4da352aa293e5ad14d701cd935c893 |
|
MD5 | 31e056cea7c57562710a898107e4b780 |
|
BLAKE2b-256 | dcf1a2a89ba5fa536bf93b30017e36be32d642124e946ae6310da4ad89388852 |
django_magicauth-1.0.2-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3c05a7fa11864b4e15a4c567f799a09e210b1e5bf9e0fbb11106c7d44c1397b0 |
|
MD5 | c6231f2f05aaf26d04b5b3554ca58b16 |
|
BLAKE2b-256 | a37d3d1ba6fa7bc917bf6a549c48a1b12ca3867188fd5a47a58c924309d0204d |