使用WebAuthn进行无密码认证。
项目描述
WebAuthin'
警告:这个库仍是一个alpha版本,尽管它应该大部分可以工作。
关于
WebAuthin'是一个用于安全无密码登录的Django库,使用WebAuthn/FIDO2。
它允许用户将安全密钥(如Yubikeys、Titan密钥等USB密钥到平台验证器,如OS X的TouchID)与您的网站相关联,只需插入密钥即可登录。这意味着他们不需要记住用户名/密码,没有可窃取的凭据,也不需要第二个因素。
WebAuthin'需要用户验证,这意味着用户需要在本地上输入PIN码、指纹或某种其他验证方法,以防止物理密钥被盗导致登录。
WebAuthn目前仅在少数浏览器上受支持(桌面上的Chrome,Android上的Firefox,iOS上的可能Safari)。
安装django-webauthin
-
首先,请确保您的网站正确使用了
Sites
框架,因为WebAuthin'目前正是使用它来获取您的网站名称和域名。将来,将添加设置,这样您就不必这样做。 -
使用pip安装django-webauthin:
pip install django-webauthin
-
将
webauthin
添加到您的INSTALLED_APPS
# settings.py
INSTALLED_APPS = [... "webauthin", ...]
- 将webauthin添加到您的身份验证后端
AUTHENTICATION_BACKENDS = (
"webauthin.auth_backends.WebAuthinBackend",
"django.contrib.auth.backends.ModelBackend",
)
- 将webauthin URL添加到您的
urls.py
# urls.py
urlpatterns += path("auth/", include("webauthin.urls", namespace="webauthin"))
- 现在您需要两个按钮,一个用于注册,一个用于登录。注册按钮应具有ID
webauthin-register
。您还需要包含一个模板,它将在某处插入JS代码
{% include "webauthin_register.html" %}
<button id="webauthin-register">Register new key</button>
点击此按钮将触发密钥注册流程。
- 将登录按钮添加到登录表单中,如上所述,这次具有ID
webauthin-login
{% include "webauthin_login.html" %}
<button id="webauthin-login">Log in using hardware key</button>
- 您还可以添加一个表格,使用户可以看到并删除其已注册的密钥,尽管这个过程目前较为手动
{% for key in request.user.authdata_set.all %}
<p>
{{ key.name }}: Created on {{ key.created_on }} and last used on
{{ key.last_used_on }}.
<form
method="POST"
action="{% url "webauthin:delete-key" %}"
onsubmit="return confirm('Are you sure you want to delete this key?');"
>{% csrf_token %}
<input type="hidden" name="key_id" value="{{ key.id }}" />
<button type="submit">Delete</button>
</form>
</p>
{% endfor %}
您可以通过向 webauthin:rename-key
发送 POST 请求并传递一个名为 name
的参数来更改密钥名称。
请注意,您需要安装 Django 消息框架,以便库可以显示用户错误/成功消息。
设置
以下是在您的 settings.py
中可以更改的设置
WEBAUTHIN_LOGIN_REDIRECT_URL
(默认:LOGIN_REDIRECT_URL):成功登录后重定向的位置。WEBAUTHIN_LOGIN_ERROR_URL
(默认:LOGIN_URL):登录错误后重定向的位置。WEBAUTHIN_REGISTRATION_REDIRECT_URL
(默认:LOGIN_REDIRECT_URL):成功注册密钥后重定向的位置。WEBAUTHIN_REGISTRATION_ERROR_URL
(默认:LOGIN_REDIRECT_URL):密钥注册错误后重定向的位置。
演示
您可以通过访问 Pastery 来查看流程的演示。通过电子邮件地址登录创建账户,转到您的账户注册密钥,然后注销并使用密钥重新登录。
项目详情
下载文件
下载适用于您平台的应用程序。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
django-webauthin-0.0.6.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e3b28cd4f63d0cc39420a5c1495683f0aec5f3e2a1f24b891b692bff785fdfcc |
|
MD5 | a35e1c22b89498445c00af56256b994f |
|
BLAKE2b-256 | 326900933be58df9f2fec5ccaa21c3208d068217077042f82016f260c1dafab0 |
django_webauthin-0.0.6-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8d4f19c4e0b1a92b1ea3c4f416d40ea92f553532a5d65158d513e1f441f2c78e |
|
MD5 | 1eba852830ec47a01a09b24f35f8b3f5 |
|
BLAKE2b-256 | e8f57f1d5d1c391c6395a9b64ca43bca5a198172ce75b84372de0b6fc5cf09e5 |