Web 开发

django-admin实现2FA双因子认证的方法

2020-05-22  本文已影响0人  焰火青春

目的:增加 Admin 的安全

1、安装:

pip install django_otp
pip install qrcode

2、配置 settings

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app.apps.AppConfig',

    # 新增
    'django_otp',
    'django_otp.plugins.otp_totp',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',

    # 新增
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django_otp.middleware.OTPMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

3、配置 urls.py

from django.contrib import admin
from django.urls import path

# 新增
from django_otp.admin import OTPAdminSite

admin.site.__class__ = OTPAdminSite

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

4、迁移生成数据表:

python manage.py makemigrations
python manage.py migrate
python manage.py migrate otp_totp

5、创建超级用户:

python manage.py createsuperuser

运行项目,访问 admin 平台,发现除了用户名和密码之外还多了一个 Token 验证。

注释上面有关 django-otp 的所有配置,重新访问 admin 平台,进入之后选择 TOTP device,新增用户,点击 User 旁边的 搜索框,选择上面注册的 admin 用户,然后保存。

回到用户列表,发现多个了一个 qrcode 字段,点击就能显示出二维码,收集下载 app FreeOTP,登陆 admin 平台时,用 app 扫描二维码,生成口令然后登陆。

注意:记得取消上面有个 django-otp 的注释!

其他方式增加 Admin 安全

1、修改 admin 的访问 URL,使用比较难猜测的地址

urlpatterns += i18n_patterns(
    url(r’^super-secret/’, admin.site.urls, name=’admin’),
)

2、配置 nginx 来限制访问 ip

location /admin/ {    # 允许192.168.10.100访问此路由
    allow 192.168.10.100;    # 禁止所有其他IP访问
    deny all;
    ...其他常规配置项}

参考文章

上一篇下一篇

猜你喜欢

热点阅读