前置准备:先明确当前双因素认证的约束条件
操作前先确认两个核心前提,避免违反档案安全合规要求:
- 根据《档案数字化规范 第9部分:数据安全》要求,所有系统登录操作必须留痕,不得直接取消双因素认证,所有优化方案必须保留完整认证日志
- 先备份当前认证日志:B/S架构档案系统默认日志路径为
/opt/tomcat/webapps/[系统名]/logs/auth.log,C/S架构为安装目录下/log/auth_record文件夹,备份后再进行后续操作
方案一:软件内置规则优化(零代码,10分钟落地)
适用场景
个人用户操作嫌麻烦、或管理员可对特定内网IP/岗位设置权限,无需修改系统代码。
实操步骤
- 1. 登录系统管理员账号,进入系统设置-安全设置-双因素认证规则页面
- 2. 新增白名单规则:选择「内网IP段白名单」,输入办公区固定IP段(例:
192.168.1.0/24),勾选该网段下登录跳过手动二次认证,保存后重启系统服务即可生效
- 3. 无管理员权限的个人用户,进入个人中心-认证方式设置,将默认的「短信验证码/动态码」改为「硬件UKey自动认证」/「系统托盘常驻认证插件」,设置后只要UKey插在设备上、或认证插件保持后台运行,登录时系统会自动完成校验,无需手动输入验证码
- 4. 生效校验:退出账号重新登录,确认无二次认证弹窗,同时查看备份的auth.log日志,确认有对应白名单/自动认证的操作记录,保证合规可追溯
方案二:轻量二次开发适配(有开发权限,30分钟落地)
适用场景
系统无内置白名单功能,需要对接企业现有统一身份认证体系(钉钉、企业微信、OA认证)。
实操步骤
- 1. 从系统安装包
/doc/api目录获取双因素认证回调接口,默认地址格式为POST /api/auth/secondVerify
- 2. 部署中间转发脚本,以下为Python版本可直接复制使用:
```python
import requests
from flask import Flask, request
app = Flask(__name__)
替换为对应参数
WECOM_AUTH_URL = "https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo"
ARCHIVE_SYS_URL = "http://你的档案系统地址/api/auth/secondVerify"
CORPID = "你的企业corpid"
SECRET = "你的认证应用secret"
@app.route("/auth/forward", methods=["POST"])
def auth_forward():
code = request.json.get("code")
调用企业统一认证接口校验用户登录状态
res = requests.get(WECOM_AUTH_URL, params={"corpid": CORPID, "corpsecret": SECRET, "code": code})
if res.json().get("errcode") == 0:
校验通过自动调用档案系统二次认证接口
return requests.post(ARCHIVE_SYS_URL, json={"userid": res.json()["userid"], "verify_result": "pass"}).json()
return {"status": "fail", "msg": "认证失败"}
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8090)
```
- 3. 进入档案系统后台,将二次认证跳转地址修改为中间脚本地址
http://你的服务器IP:8090/auth/forward,重启档案系统服务
- 4. 生效校验:用户只要已登录企业微信/钉钉,打开档案系统会自动完成二次认证,无需手动操作,认证记录会同步到档案系统日志和企业统一身份认证日志,符合合规要求

注意:脚本需部署在与档案系统同网段的服务器上,开放8090端口即可,无需修改档案系统原有代码,不会影响原有功能。
方案三:合规旁路认证方案(系统老旧无接口,1小时落地)
适用场景
老版本档案系统无开放接口、无法联系厂商定制开发,需在不修改原有系统的前提下优化认证流程。
实操步骤
- 1. 准备一台与档案系统同网段的服务器,安装Nginx:
CentOS系统执行命令:
yum install nginx -y
Ubuntu系统执行命令:apt install nginx -y
- 2. 编辑Nginx配置文件
/etc/nginx/nginx.conf,在http块中加入以下配置,可直接复制替换参数:
```
server {
listen 80;
server_name 你的档案系统访问域名;
转发所有请求到原档案系统
location / {
proxy_pass http://原档案系统IP地址;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
拦截双因素认证请求
location = /auth/second_check {
校验用户设备是否已完成认证
if ($cookie_auth_pass = "1") {
已认证设备直接返回通过响应
return 200 '{"status":"success","msg":"verify pass"}';
}
未认证设备跳转到原认证页面
proxy_pass http://原档案系统IP地址/auth/second_check;
}
}
```
- 3. 给需要优化认证的用户浏览器安装Cookie Editor插件,官方下载地址:
https://chrome.google.com/webstore/detail/cookie-editor/hlkenndednhfkekhgcdicdfddnkalmdm,安装后新增cookie:name填auth_pass,value填1,域名填档案系统域名,有效期设置为30天
- 4. 将档案系统的域名解析到Nginx服务器IP,重启Nginx服务:
systemctl restart nginx
- 5. 生效校验:用户第一次登录需完成一次双因素认证,之后30天内登录无需手动验证,所有认证日志仍保存在原档案系统中,不影响合规审计
合规校验必做步骤
所有方案落地后必须完成以下校验,避免违反档案安全管理规定:
- 1. 导出修改后1小时内的认证日志,确认所有登录操作都有完整的用户ID、IP、时间、认证方式记录,无缺失
- 2. 用非白名单、未安装插件的外网设备访问系统,确认仍会触发双因素认证,无安全漏洞
- 3. 将修改的规则、配置文件备份到档案系统安全审计目录,方便后续审计查阅