认证安全清单
文档编号: SYS-SEC-AUTH-001
版本: 1.0
创建日期: 2026-03-08
作者: 安全架构师
状态: ✅ 已完成
1. 概述
1.1 目的
本文档定义System平台的认证安全要求,确保用户身份验证过程的安全性,防止未授权访问。
1.2 适用范围
- 用户登录认证
- 管理员登录认证
- API接口认证
- 第三方系统集成认证
1.3 参考标准
- GB/T 22239-2019 信息安全技术 网络安全等级保护基本要求
- OWASP Authentication Cheat Sheet
- NIST SP 800-63B 数字身份指南
2. 密码策略
2.1 密码复杂度要求
| 检查项 | 要求 | 实现方式 | 优先级 |
|---|---|---|---|
| 最小长度 | 8位 | 前端+后端校验 | 必须 |
| 最大长度 | 20位 | 前端+后端校验 | 必须 |
| 大写字母 | 至少1个 | 正则表达式校验 | 必须 |
| 小写字母 | 至少1个 | 正则表达式校验 | 必须 |
| 数字 | 至少1个 | 正则表达式校验 | 必须 |
| 特殊字符 | 至少1个 | 正则表达式校验 | 建议 |
| 密码历史 | 不能与最近5次密码相同 | 数据库记录 | 建议 |
正则表达式: ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,20}$
2.2 密码有效期策略
| 检查项 | 要求 | 实现方式 | 优先级 |
|---|---|---|---|
| 密码有效期 | 90天 | 定时任务检查 | 建议 |
| 到期提醒 | 提前7天提醒 | 登录时检查 | 建议 |
| 强制修改 | 到期后强制修改 | 登录拦截 | 建议 |
2.3 密码存储安全
| 检查项 | 要求 | 实现方式 | 优先级 |
|---|---|---|---|
| 加密算法 | bcrypt | Spring Security | 必须 |
| 工作因子 | 10-12 | 配置参数 | 必须 |
| 盐值 | 随机生成 | bcrypt内置 | 必须 |
| 明文存储 | 禁止 | 代码审查 | 必须 |
3. 登录安全
3.1 登录失败锁定
| 检查项 | 要求 | 实现方式 | 优先级 |
|---|---|---|---|
| 失败次数阈值 | 5次 | Redis计数 | 必须 |
| 锁定时间 | 30分钟 | Redis过期时间 | 必须 |
| 计数器重置 | 登录成功后重置 | 登录成功事件 | 必须 |
| 锁定通知 | 邮件/短信通知用户 | 消息服务 | 建议 |
实现逻辑:
java
// 登录失败处理
if (loginFailCount >= 5) {
lockAccount(username, 30, TimeUnit.MINUTES);
sendLockNotification(username);
}3.2 会话管理
| 检查项 | 要求 | 实现方式 | 优先级 |
|---|---|---|---|
| 会话超时 | 30分钟无操作 | 过滤器检查 | 必须 |
| 最大并发会话 | 1个(可选配置) | Session管理 | 建议 |
| 会话固定保护 | 登录后重新生成Session | Spring Security | 必须 |
| 安全退出 | 清除Session和Token | 退出接口 | 必须 |
3.3 登录日志
| 检查项 | 要求 | 实现方式 | 优先级 |
|---|---|---|---|
| 登录时间 | 记录精确到秒 | 数据库记录 | 必须 |
| IP地址 | 记录客户端IP | 请求头获取 | 必须 |
| 登录结果 | 成功/失败 | 数据库记录 | 必须 |
| 失败原因 | 密码错误/账号锁定等 | 异常类型 | 建议 |
| 设备信息 | 浏览器/操作系统 | User-Agent解析 | 建议 |
4. 多因素认证(MFA)
4.1 MFA支持
| 检查项 | 要求 | 实现方式 | 优先级 |
|---|---|---|---|
| MFA开关 | 可配置开启/关闭 | 系统配置 | 建议 |
| 短信验证码 | 6位数字,5分钟有效 | SMS服务 | 建议 |
| 邮箱验证码 | 6位数字,10分钟有效 | 邮件服务 | 建议 |
| TOTP | 基于时间的一次性密码 | Google Authenticator | 可选 |
| 备用码 | 10个一次性备用码 | 生成并加密存储 | 可选 |
4.2 MFA触发场景
| 场景 | 是否启用MFA | 说明 |
|---|---|---|
| 管理员登录 | 强制启用 | 高权限账号 |
| 普通用户登录 | 可选启用 | 用户自行开启 |
| 敏感操作 | 强制启用 | 修改密码、修改手机号等 |
| 新设备登录 | 强制启用 | 首次在新设备登录 |
| 异地登录 | 强制启用 | IP地址变化较大 |
5. 令牌安全
5.1 JWT令牌
| 检查项 | 要求 | 实现方式 | 优先级 |
|---|---|---|---|
| 签名算法 | HS256或RS256 | JWT配置 | 必须 |
| 密钥管理 | 定期轮换,安全存储 | 密钥管理服务 | 必须 |
| 访问令牌有效期 | 2小时 | JWT exp声明 | 必须 |
| 刷新令牌有效期 | 7天 | JWT exp声明 | 必须 |
| 令牌撤销 | 支持黑名单机制 | Redis存储 | 建议 |
5.2 令牌传输
| 检查项 | 要求 | 实现方式 | 优先级 |
|---|---|---|---|
| 传输方式 | HTTP Only Cookie 或 Authorization Header | 前端实现 | 必须 |
| HTTPS | 强制使用 | Web服务器配置 | 必须 |
| 敏感信息 | 禁止在Payload中存储 | 代码审查 | 必须 |
6. 验证码安全
6.1 图形验证码
| 检查项 | 要求 | 实现方式 | 优先级 |
|---|---|---|---|
| 验证码长度 | 4-6位 | 配置参数 | 必须 |
| 字符类型 | 字母+数字 | 验证码生成器 | 必须 |
| 干扰线/点 | 添加干扰元素 | 图形库 | 建议 |
| 有效期 | 5分钟 | Redis过期时间 | 必须 |
| 使用次数 | 一次性使用 | 验证后立即删除 | 必须 |
| 失败重试 | 3次失败后刷新 | 计数器 | 建议 |
6.2 验证码场景
| 场景 | 验证码类型 | 说明 |
|---|---|---|
| 登录 | 图形验证码 | 防止暴力破解 |
| 注册 | 图形验证码 + 短信验证码 | 防止恶意注册 |
| 找回密码 | 短信/邮箱验证码 | 身份验证 |
| 修改手机号 | 短信验证码 | 身份验证 |
| 批量操作 | 图形验证码 | 防止自动化攻击 |
7. 第三方认证
7.1 OAuth2.0集成
| 检查项 | 要求 | 实现方式 | 优先级 |
|---|---|---|---|
| 授权码模式 | 使用Authorization Code模式 | Spring Security OAuth2 | 建议 |
| PKCE | 支持PKCE扩展 | OAuth2配置 | 建议 |
| State参数 | 必须携带并验证 | 随机字符串 | 必须 |
| 回调地址 | 严格校验 | 白名单配置 | 必须 |
| 令牌存储 | 不存储第三方令牌 | 仅使用用户信息 | 必须 |
7.2 支持的第三方平台
| 平台 | 优先级 | 说明 |
|---|---|---|
| 微信 | 建议 | 国内主流 |
| 钉钉 | 建议 | 企业场景 |
| 企业微信 | 可选 | 企业场景 |
| GitHub | 可选 | 开发者场景 |
8. 安全检查清单
8.1 开发阶段检查
- [ ] 密码复杂度校验实现
- [ ] bcrypt加密集成
- [ ] 登录失败锁定实现
- [ ] 会话超时处理
- [ ] JWT令牌生成与验证
- [ ] 验证码生成与验证
- [ ] 登录日志记录
8.2 测试阶段检查
- [ ] 弱密码拒绝测试
- [ ] 登录暴力破解测试
- [ ] 会话劫持测试
- [ ] 令牌篡改测试
- [ ] 验证码绕过测试
- [ ] 并发登录测试
8.3 部署阶段检查
- [ ] HTTPS强制启用
- [ ] JWT密钥安全配置
- [ ] Session安全配置
- [ ] Cookie安全属性(HttpOnly, Secure, SameSite)
- [ ] 登录日志审计
9. 合规要求
9.1 等保三级要求
| 控制点 | 要求 | 实现 |
|---|---|---|
| S3A1-身份鉴别 | 用户身份唯一标识和鉴别 | 用户名+密码+MFA |
| S3A1-口令复杂度 | 强制口令复杂度策略 | 密码策略实现 |
| S3A1-登录失败处理 | 失败锁定和连接超时 | 登录锁定+会话超时 |
10. 评审记录
10.1 评审意见
| 序号 | 评审项 | 评审意见 | 评审结果 |
|---|---|---|---|
| 1 | 密码策略完整性 | 覆盖复杂度、有效期、历史 | ✓ 通过 |
| 2 | 登录安全机制 | 失败锁定、会话管理完善 | ✓ 通过 |
| 3 | MFA支持 | 支持多种MFA方式 | ✓ 通过 |
| 4 | 令牌安全 | JWT配置合理 | ✓ 通过 |
| 5 | 等保合规 | 满足等保三级要求 | ✓ 通过 |
10.2 评审结论
评审结果: ✅ 通过
评审日期: 2026-03-08
评审人员:
- 安全专家: _________________ (签字) 2026-03-08
- 技术负责人: _________________ (签字) 2026-03-08
- 产品经理: _________________ (签字) 2026-03-08
11. 修订记录
| 版本 | 日期 | 作者 | 变更内容 |
|---|---|---|---|
| 1.0 | 2026-03-08 | 安全架构师 | 初始版本,定义认证安全清单 |
