【问题标题】:How to appropriately outline the path for django-duo-auth?如何适当地勾勒出 django-duo-auth 的路径?
【发布时间】:2021-05-16 16:24:56
【问题描述】:

我目前正致力于在我的 django 项目中实施 Duo 双重身份验证。目前看起来 django-duo-auth 是最好的包。我安装了该软件包并阅读了他们自述文件中的基本说明:

https://github.com/Elemnir/django-duo-auth/blob/master/README.rst

但是,这导致我的项目不断重定向到“duo”的一个不存在的子目录,这就是我命名的路径。例如,我的应用程序在 XX.XX.XX.XX:YYYY 中加载,转到该 url 会自动将页面重定向到: http://XX.XX.XX.XX:YYYY/duo/login/?next=/

或者,XX.XX.XX.XX:YYYY/admin 自动重定向到: http://XX.XX.XX.XX:YYYY/duo/login/?next=/admin

这只会导致 duo_auth_form.html 扩展的 django 通用 base.html

这里是一些相关代码的 sn-ps,尽管它与包的 README 建议没有太大区别

/urls.py

urlpatterns = [
...
    path('admin/', admin.site.urls),
    path('duo/',  include('duo_auth.urls')),
]

/settings.py

INSTALLED_APPS = [
    ...
    'duo_auth',
]

MIDDLEWARE = [
    ...
    'duo_auth.middleware.DuoAuthMiddleware',
]


DUO_CONFIG = {
    'DEFAULT': {
        'HOST': '<api-host-url>',
        'IKEY': '<integration_key>',
        'AKEY': '<app_secret_key>',
        'SKEY': '<secret_key>',
        'FIRST_STAGE_BACKENDS': [
            'django.contrib.auth.backends.ModelBackend',
        ]
    }
}

与自述文件的唯一区别是示例中的轻微重定向do_auth_form.html 我扩展到我的模板的子目录,即文件顶部的{% extends "dir\base.html" %}

看起来这个包是相当新的,并且没有很多论坛可以解决问题,所以我认为最好在这里提问。任何帮助将不胜感激!

【问题讨论】:

    标签: python django two-factor-authentication django-two-factor-auth


    【解决方案1】:

    我相信这实际上是 django-duo-auth 包按预期工作。中间件的工作方式是,在将其添加到您的项目后,将检查使用 FIRST_STAGE_BACKENDS 之一进行身份验证的任何经过身份验证的用户,以查看他们是否也已通过 Duo 进行身份验证,如果没有,他们将是重定向到duo/login/ 的 Duo 登录页面并提示完成 Duo 身份验证,类似于 Django 内置的 @login_required 装饰器将匿名用户重定向到 accounts/login/ 进行登录。

    如果您有不想强制使用第二个因素的用户,我建议您创建一个 ModelBackend 的子类,它只对这些用户进行身份验证。与本期描述的方法类似,但逻辑颠倒:

    https://github.com/Elemnir/django-duo-auth/issues/1

    【讨论】:

      猜你喜欢
      • 2010-12-08
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 2020-09-10
      • 1970-01-01
      • 2013-09-01
      相关资源
      最近更新 更多