跳转到主要内容

使用WebAuthn进行无密码认证。

项目描述

WebAuthin'

警告:这个库仍是一个alpha版本,尽管它应该大部分可以工作。

关于

WebAuthin'是一个用于安全无密码登录的Django库,使用WebAuthn/FIDO2。

它允许用户将安全密钥(如Yubikeys、Titan密钥等USB密钥到平台验证器,如OS X的TouchID)与您的网站相关联,只需插入密钥即可登录。这意味着他们不需要记住用户名/密码,没有可窃取的凭据,也不需要第二个因素。

WebAuthin'需要用户验证,这意味着用户需要在本地上输入PIN码、指纹或某种其他验证方法,以防止物理密钥被盗导致登录。

WebAuthn目前仅在少数浏览器上受支持(桌面上的Chrome,Android上的Firefox,iOS上的可能Safari)。

PyPI version

安装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 (12.5 kB 查看哈希值

上传时间

构建分布

django_webauthin-0.0.6-py2.py3-none-any.whl (18.2 kB 查看哈希值

上传时间 Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页