跳到主要内容
版本:v3

登录与安全策略设计文档

1. 系统总体架构

1.1 系统组成

登录与安全策略系统
├── 认证服务层 (Authentication Service Layer)
│ ├── 登录策略体系 (Login Strategy System)
│ └── 安全验证体系 (Security Validation System)
├── 安全策略服务层 (Security Policy Service Layer)
├── 用户服务层 (User Service Layer)
├── 会话管理层 (Session Management Layer)
└── 网关服务层 (Gateway Service Layer)

1.2 核心设计理念

  • 策略模式 - 支持多种登录方式的灵活扩展
  • 责任链模式 - 安全策略的链式验证
  • 模板方法 - 标准化的登录流程
  • 配置驱动 - 动态可配置的安全策略

2. 数据库设计

2.1 核心数据表

sys_user (用户表)

  • 存储用户基本信息和认证凭证
  • 支持多租户隔离 (business_id)
  • 包含密码加密策略字段

sys_security_policy (安全策略表)

  • 支持6大策略类型:IP限制、设备限制、密码策略、登录限制、会话策略、时间限制
  • 策略可动态启用/禁用
  • 支持优先级配置和租户隔离

辅助数据表

  • sys_login_log - 登录审计日志
  • sys_user_device - 用户设备绑定
  • sys_password_history - 密码历史记录

3. 登录策略体系设计

3.1 登录策略 (LoginStrategy)

核心职责

  • 定义标准登录流程模板
  • 集成安全策略验证链
  • 提供通用验证工具方法
  • 统一异常处理和日志记录

模板方法流程

1. 前置参数校验 (preVerify)
2. 加载安全策略配置
3. 前置安全校验 (preValidate)
4. 查找用户信息 (findUser - 抽象方法)
5. 检查用户状态
6. 具体登录验证 (doLogin - 抽象方法)
7. 记录登录日志
8. 后置安全校验 (postValidate)
9. 构建登录结果
10. 异常处理和清理

3.2 具体登录策略实现

AccountPasswordLoginStrategy (账号密码登录)

  • 用户查找:基于账号查询用户
  • 验证逻辑:密码加密验证
  • 特殊处理:密码策略合规性检查

MobileLoginStrategy (手机号登录)

  • 用户查找:基于手机号查询用户
  • 验证逻辑:短信验证码验证
  • 特殊处理:验证码频率限制

EmailLoginStrategy (邮箱登录)

  • 用户查找:基于邮箱查询用户
  • 验证逻辑:邮箱验证码验证
  • 特殊处理:验证链接生成

SocialLoginStrategy (社交登录)

  • 用户查找:第三方用户ID映射
  • 验证逻辑:OAuth2.0认证
  • 特殊处理:自动注册流程

4. 安全策略验证系统设计

4.1 安全验证链 (SecurityValidatorChain)

验证阶段划分

前置验证阶段 (Pre-Validation)

  • IP地址限制验证
  • 时间限制策略验证
  • 验证码触发检查
  • 基础安全策略检查

后置验证阶段 (Post-Validation)

  • 设备限制验证
  • 会话策略验证
  • 登录频率限制
  • 深度安全策略检查

失败处理阶段 (Failure Handling)

  • 失败次数统计
  • 账户锁定处理
  • 安全事件上报
  • 恢复机制触发

4.2 六大安全策略模块

4.2.1 IP限制策略 (IP_RESTRICTION)

  • 功能配置:
    • enable_whitelist: 启用IP白名单
    • enable_blacklist: 启用IP黑名单
    • ip_whitelist: IP白名单列表
    • ip_blacklist: IP黑名单列表
  • 验证逻辑:
    1. 检查白名单:如果启用且IP不在白名单中 → 拒绝
    1. 检查黑名单:如果启用且IP在黑名单中 → 拒绝
    1. 记录IP访问日志

4.2.2 设备限制策略 (DEVICE_RESTRICTION)

  • 功能配置:
    • enabled: 启用设备限制
    • max_devices: 最大设备数量
  • - enable_device_binding: 启用设备绑定
  • - allowed_device_types: 允许的设备类型
  • - blocked_device_types: 阻止的设备类型
  • 验证逻辑:
    1. 设备类型检查:验证设备类型是否允许
    1. 设备数量检查:验证是否超过最大设备数
    1. 设备绑定检查:验证设备是否已绑定
    1. 新设备注册:自动绑定新设备

4.2.3 密码策略 (PASSWORD_POLICY)

密码策略功能配置表

配置项配置键名数据类型默认值配置说明
启用密码策略enabledBooleanfalse是否启用密码策略功能
密码最小长度min_lengthInteger8密码最小长度要求
密码复杂度等级complexity_levelInteger2密码复杂度等级:1-低,2-中,3-高
密码过期天数expire_daysInteger90密码过期天数,0表示永不过期
防止密码重用prevent_reuseBooleanfalse是否防止密码重复使用
密码历史记录数reuse_history_countInteger5保留的密码历史记录数量
要求特殊字符require_special_charBooleanfalse密码是否必须包含特殊字符
要求数字require_numberBooleanfalse密码是否必须包含数字
要求大写字母require_upper_caseBooleanfalse密码是否必须包含大写字母
要求小写字母require_lower_caseBooleanfalse密码是否必须包含小写字母

密码策略验证逻辑表

验证阶段验证项目验证条件失败处理优先级
密码强度验证长度检查密码长度 < min_length抛出异常:密码长度不足
复杂度检查不满足complexity_level要求抛出异常:密码复杂度不足
特殊字符检查require_special_char=true且不含特殊字符抛出异常:必须包含特殊字符
数字检查require_number=true且不含数字抛出异常:必须包含数字
大写字母检查require_upper_case=true且不含大写字母抛出异常:必须包含大写字母
小写字母检查require_lower_case=true且不含小写字母抛出异常:必须包含小写字母
密码历史检查重复性检查prevent_reuse=true且在历史记录中找到相同密码抛出异常:不能使用最近N次使用过的密码
历史记录维护密码修改时自动添加到历史记录自动执行,超过reuse_history_count时删除最旧记录
密码过期检查过期时间检查当前时间 - 密码更新时间 > expire_days强制要求修改密码
过期预警距离过期时间 < 7天提示用户密码即将过期
密码安全评分实时评分基于长度、字符类型、模式等计算安全分提供安全建议,不阻止但记录
风险评估检测常见弱密码模式记录安全事件,可配置是否阻止

复杂度等级对应规则表

复杂度等级等级名称必须包含要求最小长度示例
1低强度无特殊要求min_lengthpassword123
2中强度数字 + 字母min_length + 2Password123
3高强度数字 + 大小写字母 + 特殊字符min_length + 4P@ssw0rd!123

验证执行时机表

验证类型注册时登录时修改密码时重置密码时
密码强度验证
密码历史检查
密码过期检查
密码安全评分

异常消息映射表

验证失败类型异常代码用户提示消息日志级别
密码长度不足PASSWORD_LENGTH_INVALID密码长度不能少于指定最小长度WARN
复杂度不满足PASSWORD_COMPLEXITY_LOW密码复杂度不足,请包含所需字符类型WARN
密码重复使用PASSWORD_REUSE_DETECTED不能使用最近使用过的密码WARN
密码已过期PASSWORD_EXPIRED密码已过期,请修改密码INFO
密码即将过期PASSWORD_EXPIRE_SOON密码即将过期,建议及时修改INFO

4.2.4 登录限制策略 (LOGIN_RESTRICTION)

功能配置:

  • enabled: 启用登录限制
  • max_login_attempts: 最大登录尝试次数
  • lockout_duration: 锁定持续时间
  • enable_captcha: 启用验证码
  • captcha_threshold: 验证码触发阈值
  • enable_time_restriction: 启用时间限制
  • allowed_login_time: 允许登录时间段

验证逻辑:

  1. 失败次数统计:记录连续失败次数
  2. 账户锁定机制:达到阈值自动锁定
  3. 验证码触发:失败次数达到阈值时要求验证码
  4. 时间限制检查:限制登录时间段

4.2.5 会话策略 (SESSION_POLICY)

功能配置:

  • enabled: 启用会话策略
  • session_timeout: 会话超时时间
  • max_concurrent_sessions: 最大并发会话数
  • enable_single_login: 启用单点登录
  • enable_session_fixation: 启用会话固定防护
  • enable_session_tracking: 启用会话跟踪

验证逻辑:

  1. 会话超时管理:自动过期处理
  2. 并发会话控制:限制同时登录数量
  3. 单点登录强制:踢出前一个会话
  4. 会话安全防护:防止会话固定攻击

4.2.6 时间限制策略 (TIME_RESTRICTION)

功能配置:

  • enabled: 启用时间限制
  • allow_start_time: 允许开始时间
  • allow_end_time: 允许结束时间
  • allow_weekdays: 允许工作日登录
  • allow_weekends: 允许周末登录
  • allow_holidays: 允许节假日登录

验证逻辑:

  1. 时间段检查:验证当前时间是否在允许范围内
  2. 日期类型检查:验证工作日、周末、节假日
  3. 节假日特殊处理:支持节假日配置

5. 完整登录流程

5.1 标准登录执行流程

阶段一:请求接收与初步验证

  1. 请求参数解析
  2. 解析登录类型、凭证信息
  3. 提取客户端信息(IP、设备信息等)
  4. 基础参数校验
  5. 必填字段验证
  6. 参数格式校验
  7. 业务规则初步检查
  8. 安全策略配置加载
  9. 从数据库加载当前租户的安全策略
  10. 策略缓存和优先级排序
  11. 租户隔离策略应用

阶段二:前置安全验证

  1. IP限制验证
  2. 白名单/黑名单检查
  3. 地理位置风险评估
  4. 时间限制验证
  5. 登录时间段检查
  6. 日期类型验证
  7. 验证码触发检查
  8. 基于失败次数的验证码要求
  9. 验证码生成和验证

阶段三:用户身份验证

  1. 用户信息查找
  2. 根据登录类型查询用户
  3. 用户状态初步判断
  4. 用户状态深度检查
  5. 账户启用状态验证
  6. 账户锁定状态检查
  7. 密码过期状态判断
  8. 具体认证逻辑执行
  9. 密码验证/验证码验证/第三方认证
  10. 认证凭证的安全性检查

阶段四:后置安全验证

  1. 设备限制验证
  2. 设备类型合规性检查
  3. 设备数量限制验证
  4. 新设备自动绑定
  5. 会话策略验证
  6. 并发会话数量检查
  7. 单点登录冲突处理
  8. 会话安全性验证
  9. 登录频率限制
  10. 单位时间内登录次数限制
  11. 异常登录行为检测

阶段五:登录完成处理

  1. 会话创建
  2. 访问令牌生成
  3. 刷新令牌创建
  4. 会话信息存储
  5. 审计日志记录
  6. 成功登录记录
  7. 安全事件记录
  8. 用户行为跟踪
  9. 结果返回
  10. 标准化响应格式
  11. 令牌信息返回
  12. 用户基本信息

5.2 异常处理流程

异常分类体系

  • 参数异常 (ParameterException)
  • 安全策略异常 (SecurityPolicyException)
  • 用户状态异常 (UserStatusException)
  • 认证失败异常 (AuthenticationException)
  • 系统异常 (SystemException)

异常处理策略

  • 分级错误信息:用户友好提示 vs 详细错误信息
  • 安全事件记录:所有异常都记录安全日志
  • 失败统计:用于登录限制策略
  • 恢复机制:提供明确的恢复指引

6. 安全策略管理

6.1 策略配置管理

动态配置特性

  • 实时生效:策略修改无需重启服务
  • 优先级管理:策略执行顺序控制
  • 条件触发:基于上下文的策略触发
  • 租户隔离:多租户策略完全隔离

配置验证机制

  • 语法验证:配置格式正确性
  • 逻辑验证:策略逻辑合理性
  • 冲突检测:策略间冲突识别
  • 性能影响:策略执行性能评估

6.2 策略执行引擎

执行优化策略

  • 懒加载:策略按需加载
  • 缓存机制:频繁使用的策略缓存
  • 并行执行:无依赖关系的策略并行执行
  • 短路优化:关键失败快速返回

7. 监控与审计

7.1 系统监控指标

性能监控

  • 登录请求响应时间
  • 策略执行时间统计
  • 系统资源使用情况
  • 数据库查询性能

业务监控

  • 登录成功率/失败率
  • 各登录策略使用分布
  • 安全策略触发频率
  • 用户活跃度统计

7.2 安全审计

审计日志类型

  • 登录审计:所有登录尝试记录
  • 安全事件:安全策略触发记录
  • 用户行为:关键用户操作记录
  • 系统事件:系统级安全事件

审计分析

  • 异常登录行为检测
  • 安全威胁模式识别
  • 用户行为分析
  • 合规性报告生成

8. 部署与运维

8.1 系统配置

应用配置

<YAML>security:  policy:    cache-duration: 300s    enable-audit-log: true    max-login-attempts: 5    session-timeout: 1800

数据库配置

  • 连接池优化配置
  • 读写分离支持
  • 分库分表策略

8.2 高可用设计

服务冗余

  • 多实例部署
  • 负载均衡配置
  • 故障自动转移

数据备份

  • 实时数据同步
  • 定期备份策略
  • 灾难恢复方案

9. 安全考虑

9.1 数据安全

  • 密码安全:强加密算法,盐值加密
  • 传输安全:HTTPS加密传输
  • 存储安全:敏感数据加密存储
  • 会话安全:JWT签名验证,防篡改

9.2 防护机制

  • 防暴力破解:登录失败次数限制
  • 防重放攻击:时间戳和随机数验证
  • 防CSRF攻击:Token验证机制
  • 防注入攻击:参数预处理和验证

10. 扩展性设计

10.1 横向扩展

  • 支持新的登录方式快速接入
  • 新的安全策略模块化添加
  • 多认证源支持
  • 国际化扩展支持

10.2 性能扩展

  • 缓存策略优化
  • 数据库查询优化
  • 异步处理机制
  • 水平扩展支持