375 lines
21 KiB
Markdown
375 lines
21 KiB
Markdown
|
|
# 安全考虑
|
|||
|
|
|
|||
|
|
<cite>
|
|||
|
|
**本文引用的文件**
|
|||
|
|
- [AuthApplication.java](file://nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java)
|
|||
|
|
- [AdminApplication.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java)
|
|||
|
|
- [SaTokenConfigure.java](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/SaTokenConfigure.java)
|
|||
|
|
- [Constant.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/constant/Constant.java)
|
|||
|
|
- [UserDTO.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/UserDTO.java)
|
|||
|
|
- [LdapUserDTO.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/LdapUserDTO.java)
|
|||
|
|
- [SRMTokenDTO.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/SRMTokenDTO.java)
|
|||
|
|
- [LdapConfig.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java)
|
|||
|
|
- [SAPConfig.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java)
|
|||
|
|
- [CorsWebFilter.java](file://nflg-wms-gateway/src/main/java/com/nflg/wms/gateway/config/CorsWebFilter.java)
|
|||
|
|
- [RedisConfig.java](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RedisConfig.java)
|
|||
|
|
- [NflgException.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/exception/NflgException.java)
|
|||
|
|
</cite>
|
|||
|
|
|
|||
|
|
## 目录
|
|||
|
|
1. [引言](#引言)
|
|||
|
|
2. [项目结构](#项目结构)
|
|||
|
|
3. [核心组件](#核心组件)
|
|||
|
|
4. [架构总览](#架构总览)
|
|||
|
|
5. [详细组件分析](#详细组件分析)
|
|||
|
|
6. [依赖分析](#依赖分析)
|
|||
|
|
7. [性能考虑](#性能考虑)
|
|||
|
|
8. [故障排查指南](#故障排查指南)
|
|||
|
|
9. [结论](#结论)
|
|||
|
|
10. [附录](#附录)
|
|||
|
|
|
|||
|
|
## 引言
|
|||
|
|
本文件面向NFLG WMS系统的安全管理员与开发人员,系统性梳理身份认证与授权、数据安全、网络安全、审计与合规、API安全防护、第三方系统集成安全以及安全运维与应急响应等关键主题。文档以仓库中实际存在的模块与配置为依据,结合可观察到的实现线索,提出可落地的安全建议与最佳实践。
|
|||
|
|
|
|||
|
|
## 项目结构
|
|||
|
|
WMS系统采用多模块分层设计,围绕“认证中心”“网关”“业务子域”“通用能力”展开。认证与授权由Sa-Token在统一SSO模式下实现;网关负责跨域与基础过滤;业务模块通过starter提供的通用能力(如Redis、Jackson)进行会话与序列化;与SAP、LDAP等外部系统通过独立配置类接入。
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
graph TB
|
|||
|
|
subgraph "认证与发现"
|
|||
|
|
AUTH["认证应用<br/>AuthApplication.java"]
|
|||
|
|
ST_SA_TOKEN["Sa-Token配置<br/>SaTokenConfigure.java"]
|
|||
|
|
end
|
|||
|
|
subgraph "网关与过滤"
|
|||
|
|
GW_CORS["CORS过滤器<br/>CorsWebFilter.java"]
|
|||
|
|
end
|
|||
|
|
subgraph "业务与通用"
|
|||
|
|
ADMIN_APP["管理端应用<br/>AdminApplication.java"]
|
|||
|
|
COMMON["通用常量与异常<br/>Constant.java / NflgException.java"]
|
|||
|
|
DTO_USERS["用户与LDAP模型<br/>UserDTO.java / LdapUserDTO.java"]
|
|||
|
|
DTO_SRM["SRM令牌模型<br/>SRMTokenDTO.java"]
|
|||
|
|
REDIS["Redis配置<br/>RedisConfig.java"]
|
|||
|
|
end
|
|||
|
|
subgraph "第三方集成"
|
|||
|
|
LDAP_CFG["LDAP配置<br/>LdapConfig.java"]
|
|||
|
|
SAP_CFG["SAP配置<br/>SAPConfig.java"]
|
|||
|
|
end
|
|||
|
|
AUTH --> ST_SA_TOKEN
|
|||
|
|
ADMIN_APP --> GW_CORS
|
|||
|
|
ADMIN_APP --> REDIS
|
|||
|
|
ADMIN_APP --> COMMON
|
|||
|
|
ADMIN_APP --> DTO_USERS
|
|||
|
|
ADMIN_APP --> LDAP_CFG
|
|||
|
|
ADMIN_APP --> SAP_CFG
|
|||
|
|
AUTH --> GW_CORS
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
图表来源
|
|||
|
|
- [AuthApplication.java:1-24](file://nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java#L1-L24)
|
|||
|
|
- [AdminApplication.java:1-27](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java#L1-L27)
|
|||
|
|
- [SaTokenConfigure.java:1-16](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/SaTokenConfigure.java#L1-L16)
|
|||
|
|
- [CorsWebFilter.java:1-33](file://nflg-wms-gateway/src/main/java/com/nflg/wms/gateway/config/CorsWebFilter.java#L1-L33)
|
|||
|
|
- [RedisConfig.java:1-50](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RedisConfig.java#L1-L50)
|
|||
|
|
- [Constant.java:1-43](file://nflg-wms-common/src/main/java/com/nflg/wms/common/constant/Constant.java#L1-L43)
|
|||
|
|
- [NflgException.java:1-18](file://nflg-wms-common/src/main/java/com/nflg/wms/common/exception/NflgException.java#L1-L18)
|
|||
|
|
- [UserDTO.java:1-90](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/UserDTO.java#L1-L90)
|
|||
|
|
- [LdapUserDTO.java:1-28](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/LdapUserDTO.java#L1-L28)
|
|||
|
|
- [SRMTokenDTO.java:1-11](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/SRMTokenDTO.java#L1-L11)
|
|||
|
|
- [LdapConfig.java:1-43](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java#L1-L43)
|
|||
|
|
- [SAPConfig.java:1-120](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java#L1-L120)
|
|||
|
|
|
|||
|
|
章节来源
|
|||
|
|
- [AuthApplication.java:1-24](file://nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java#L1-L24)
|
|||
|
|
- [AdminApplication.java:1-27](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java#L1-L27)
|
|||
|
|
- [SaTokenConfigure.java:1-16](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/SaTokenConfigure.java#L1-L16)
|
|||
|
|
- [CorsWebFilter.java:1-33](file://nflg-wms-gateway/src/main/java/com/nflg/wms/gateway/config/CorsWebFilter.java#L1-L33)
|
|||
|
|
- [RedisConfig.java:1-50](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RedisConfig.java#L1-L50)
|
|||
|
|
- [Constant.java:1-43](file://nflg-wms-common/src/main/java/com/nflg/wms/common/constant/Constant.java#L1-L43)
|
|||
|
|
- [NflgException.java:1-18](file://nflg-wms-common/src/main/java/com/nflg/wms/common/exception/NflgException.java#L1-L18)
|
|||
|
|
- [UserDTO.java:1-90](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/UserDTO.java#L1-L90)
|
|||
|
|
- [LdapUserDTO.java:1-28](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/LdapUserDTO.java#L1-L28)
|
|||
|
|
- [SRMTokenDTO.java:1-11](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/SRMTokenDTO.java#L1-L11)
|
|||
|
|
- [LdapConfig.java:1-43](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java#L1-L43)
|
|||
|
|
- [SAPConfig.java:1-120](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java#L1-L120)
|
|||
|
|
|
|||
|
|
## 核心组件
|
|||
|
|
- 统一认证中心与SSO客户端
|
|||
|
|
- 认证中心应用通过组件扫描引入认证与通用模块,并启用服务发现与SSO管理器日志输出。
|
|||
|
|
- 管理端应用同样启用服务发现与SSO客户端配置,便于前后端统一认证。
|
|||
|
|
- 基于JWT的会话与权限
|
|||
|
|
- 通过Sa-Token配置使用JWT逻辑实现,简化分布式场景下的会话状态管理。
|
|||
|
|
- 跨域与基础过滤
|
|||
|
|
- 网关层提供CORS过滤器,允许常见方法与头部,支持预检请求快速返回。
|
|||
|
|
- 会话与缓存
|
|||
|
|
- Redis配置提供对象与字符串模板,用于存储会话、令牌与临时数据。
|
|||
|
|
- 第三方系统集成
|
|||
|
|
- LDAP配置注入DN与密码,供目录服务对接。
|
|||
|
|
- SAP配置集中管理连接参数与连接池校验,避免文件IO,直接注册到JCo环境。
|
|||
|
|
|
|||
|
|
章节来源
|
|||
|
|
- [AuthApplication.java:1-24](file://nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java#L1-L24)
|
|||
|
|
- [AdminApplication.java:1-27](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java#L1-L27)
|
|||
|
|
- [SaTokenConfigure.java:1-16](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/SaTokenConfigure.java#L1-L16)
|
|||
|
|
- [CorsWebFilter.java:1-33](file://nflg-wms-gateway/src/main/java/com/nflg/wms/gateway/config/CorsWebFilter.java#L1-L33)
|
|||
|
|
- [RedisConfig.java:1-50](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RedisConfig.java#L1-L50)
|
|||
|
|
- [LdapConfig.java:1-43](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java#L1-L43)
|
|||
|
|
- [SAPConfig.java:1-120](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java#L1-L120)
|
|||
|
|
|
|||
|
|
## 架构总览
|
|||
|
|
下图展示认证、网关、业务与第三方系统之间的交互关系,以及会话与权限的关键路径。
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
sequenceDiagram
|
|||
|
|
participant Browser as "浏览器"
|
|||
|
|
participant Gateway as "网关CORS过滤器"
|
|||
|
|
participant Admin as "管理端应用"
|
|||
|
|
participant Auth as "认证中心应用"
|
|||
|
|
participant SaToken as "Sa-Token JWT"
|
|||
|
|
participant Redis as "Redis缓存"
|
|||
|
|
Browser->>Gateway : "HTTP 请求含跨域头"
|
|||
|
|
Gateway->>Gateway : "添加CORS响应头/OPTIONS预检处理"
|
|||
|
|
Gateway-->>Browser : "允许跨域响应"
|
|||
|
|
Browser->>Admin : "携带认证头访问业务接口"
|
|||
|
|
Admin->>SaToken : "解析JWT并校验"
|
|||
|
|
SaToken->>Redis : "查询会话/权限信息"
|
|||
|
|
Redis-->>SaToken : "返回会话数据"
|
|||
|
|
SaToken-->>Admin : "鉴权通过/拒绝"
|
|||
|
|
Admin-->>Browser : "业务响应"
|
|||
|
|
Note over Auth,SaToken : "认证中心负责签发与SSO管理"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
图表来源
|
|||
|
|
- [CorsWebFilter.java:1-33](file://nflg-wms-gateway/src/main/java/com/nflg/wms/gateway/config/CorsWebFilter.java#L1-L33)
|
|||
|
|
- [AdminApplication.java:1-27](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java#L1-L27)
|
|||
|
|
- [AuthApplication.java:1-24](file://nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java#L1-L24)
|
|||
|
|
- [SaTokenConfigure.java:1-16](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/SaTokenConfigure.java#L1-L16)
|
|||
|
|
- [RedisConfig.java:1-50](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RedisConfig.java#L1-L50)
|
|||
|
|
|
|||
|
|
## 详细组件分析
|
|||
|
|
|
|||
|
|
### 身份认证与授权机制
|
|||
|
|
- 基于Token的认证
|
|||
|
|
- 使用Sa-Token的JWT逻辑,简化分布式会话与SSO。
|
|||
|
|
- 管理端与认证中心均启用服务发现与SSO客户端/服务端配置,确保统一认证入口。
|
|||
|
|
- 权限控制与会话管理
|
|||
|
|
- 会话与权限数据通过Redis存储,便于横向扩展与共享。
|
|||
|
|
- 建议结合业务角色与资源授权策略,配合统一异常处理与审计日志实现细粒度权限控制。
|
|||
|
|
- 登录扩展信息
|
|||
|
|
- 常量定义了登录扩展字段键名,可用于传递用户姓名、工号、邮箱、部门、角色、类型等上下文信息。
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
classDiagram
|
|||
|
|
class SaTokenConfigure {
|
|||
|
|
+getStpLogicJwt() StpLogic
|
|||
|
|
}
|
|||
|
|
class AuthApplication {
|
|||
|
|
+main(args)
|
|||
|
|
}
|
|||
|
|
class AdminApplication {
|
|||
|
|
+main(args)
|
|||
|
|
}
|
|||
|
|
class RedisConfig {
|
|||
|
|
+redisObjectTemplate()
|
|||
|
|
+redisStringTemplate()
|
|||
|
|
}
|
|||
|
|
class Constant {
|
|||
|
|
+LOGIN_EXTRA_* 常量
|
|||
|
|
}
|
|||
|
|
AuthApplication --> SaTokenConfigure : "使用JWT逻辑"
|
|||
|
|
AdminApplication --> SaTokenConfigure : "使用JWT逻辑"
|
|||
|
|
AdminApplication --> RedisConfig : "会话/权限存储"
|
|||
|
|
SaTokenConfigure --> RedisConfig : "依赖Redis"
|
|||
|
|
Constant <.. AdminApplication : "登录扩展键名"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
图表来源
|
|||
|
|
- [SaTokenConfigure.java:1-16](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/SaTokenConfigure.java#L1-L16)
|
|||
|
|
- [AuthApplication.java:1-24](file://nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java#L1-L24)
|
|||
|
|
- [AdminApplication.java:1-27](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java#L1-L27)
|
|||
|
|
- [RedisConfig.java:1-50](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RedisConfig.java#L1-L50)
|
|||
|
|
- [Constant.java:1-43](file://nflg-wms-common/src/main/java/com/nflg/wms/common/constant/Constant.java#L1-L43)
|
|||
|
|
|
|||
|
|
章节来源
|
|||
|
|
- [SaTokenConfigure.java:1-16](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/SaTokenConfigure.java#L1-L16)
|
|||
|
|
- [AuthApplication.java:1-24](file://nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java#L1-L24)
|
|||
|
|
- [AdminApplication.java:1-27](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java#L1-L27)
|
|||
|
|
- [RedisConfig.java:1-50](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RedisConfig.java#L1-L50)
|
|||
|
|
- [Constant.java:1-43](file://nflg-wms-common/src/main/java/com/nflg/wms/common/constant/Constant.java#L1-L43)
|
|||
|
|
|
|||
|
|
### 数据安全保护
|
|||
|
|
- 传输安全
|
|||
|
|
- 建议在生产环境强制HTTPS与TLS 1.2+,并在网关层统一终止TLS,确保内部服务间通信安全。
|
|||
|
|
- 存储安全
|
|||
|
|
- Redis作为会话与缓存介质,需启用网络隔离、只监听内网、设置访问密码与最小权限ACL。
|
|||
|
|
- 对敏感字段(如用户密码、令牌)仅在必要时落盘或临时缓存,避免明文持久化。
|
|||
|
|
- 数据加密
|
|||
|
|
- 建议对静态数据(如日志中的敏感字段)进行脱敏与加密存储;对传输中的令牌与凭证使用TLS保护。
|
|||
|
|
|
|||
|
|
章节来源
|
|||
|
|
- [RedisConfig.java:1-50](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RedisConfig.java#L1-L50)
|
|||
|
|
|
|||
|
|
### 网络安全防护
|
|||
|
|
- 跨域与预检
|
|||
|
|
- CORS过滤器允许常见方法与常用头部,预检请求直接返回200,减少前端复杂度。
|
|||
|
|
- 建议在生产环境限定具体来源域名,避免通配符。
|
|||
|
|
- 防火墙与边界
|
|||
|
|
- 网关对外暴露,内部服务通过内网访问;对认证中心与数据库、SAP、LDAP等敏感后端实施最小权限网络策略。
|
|||
|
|
- DDoS与入侵检测
|
|||
|
|
- 建议在网关层部署速率限制、IP黑白名单与WAF;结合云厂商DDoS清洗与入侵检测系统(IDS)联动。
|
|||
|
|
|
|||
|
|
章节来源
|
|||
|
|
- [CorsWebFilter.java:1-33](file://nflg-wms-gateway/src/main/java/com/nflg/wms/gateway/config/CorsWebFilter.java#L1-L33)
|
|||
|
|
|
|||
|
|
### 审计日志与合规
|
|||
|
|
- 操作日志与审计追踪
|
|||
|
|
- 建议在统一异常处理与业务切面中记录关键操作(登录、权限变更、高风险操作),包含用户标识、时间戳、IP、操作内容与结果。
|
|||
|
|
- 数据隐私保护
|
|||
|
|
- 对个人数据与敏感字段进行脱敏显示与最小化采集;遵循数据生命周期管理,定期清理过期数据。
|
|||
|
|
- 合规要求
|
|||
|
|
- 建立数据分类分级与访问审批流程;保留审计日志至少满足法规要求的最短期限。
|
|||
|
|
|
|||
|
|
章节来源
|
|||
|
|
- [NflgException.java:1-18](file://nflg-wms-common/src/main/java/com/nflg/wms/common/exception/NflgException.java#L1-L18)
|
|||
|
|
|
|||
|
|
### API安全防护方案
|
|||
|
|
- 请求签名与完整性
|
|||
|
|
- 建议在网关层引入API签名(如HMAC-SHA256),结合nonce与timestamp防重放。
|
|||
|
|
- 频率限制
|
|||
|
|
- 在网关或业务层按IP/用户维度实施限流,阻断异常流量。
|
|||
|
|
- 防重放攻击
|
|||
|
|
- 引入一次性nonce与滑动窗口时间窗,服务端缓存已使用nonce并设置TTL。
|
|||
|
|
- 令牌治理
|
|||
|
|
- 缩短刷新令牌有效期、启用旋转机制;对失效令牌与异常行为触发即时撤销。
|
|||
|
|
|
|||
|
|
章节来源
|
|||
|
|
- [CorsWebFilter.java:1-33](file://nflg-wms-gateway/src/main/java/com/nflg/wms/gateway/config/CorsWebFilter.java#L1-L33)
|
|||
|
|
|
|||
|
|
### 第三方系统集成安全
|
|||
|
|
- LDAP集成
|
|||
|
|
- LDAP配置注入DN与密码,建议:
|
|||
|
|
- 使用只读账户执行查询;
|
|||
|
|
- 开启TLS连接;
|
|||
|
|
- 严格限制查询范围与属性;
|
|||
|
|
- 对用户输入进行白名单校验。
|
|||
|
|
- SAP集成
|
|||
|
|
- SAP配置集中管理连接参数与连接池校验,建议:
|
|||
|
|
- 仅在内存中注册目的地,避免文件IO泄露;
|
|||
|
|
- 校验峰值与池容量关系,防止资源耗尽;
|
|||
|
|
- 限制调用方权限与RFC调用范围;
|
|||
|
|
- 对SAP侧的错误与异常进行降级与告警。
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
flowchart TD
|
|||
|
|
Start(["初始化SAP连接"]) --> Validate["校验峰值与池容量关系"]
|
|||
|
|
Validate --> Valid{"配置有效?"}
|
|||
|
|
Valid --> |否| RaiseErr["抛出非法参数异常"]
|
|||
|
|
Valid --> |是| Register["注册目的地到JCo环境"]
|
|||
|
|
Register --> Done(["可用的JCoDestination"])
|
|||
|
|
RaiseErr --> End(["结束"])
|
|||
|
|
Done --> End
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
图表来源
|
|||
|
|
- [SAPConfig.java:1-120](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java#L1-L120)
|
|||
|
|
|
|||
|
|
章节来源
|
|||
|
|
- [LdapConfig.java:1-43](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java#L1-L43)
|
|||
|
|
- [SAPConfig.java:1-120](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java#L1-L120)
|
|||
|
|
|
|||
|
|
### 安全漏洞评估与修复流程
|
|||
|
|
- 评估
|
|||
|
|
- 定期进行依赖扫描、容器镜像扫描与源码安全扫描;对认证、授权、数据与网络层面进行渗透测试。
|
|||
|
|
- 修复
|
|||
|
|
- 建立补丁发布流程与回滚预案;对高危漏洞在72小时内发布修复版本。
|
|||
|
|
- 监控
|
|||
|
|
- 结合日志与指标建立异常告警,覆盖认证失败、权限异常、SAP/LDAP连接异常等。
|
|||
|
|
|
|||
|
|
章节来源
|
|||
|
|
- [NflgException.java:1-18](file://nflg-wms-common/src/main/java/com/nflg/wms/common/exception/NflgException.java#L1-L18)
|
|||
|
|
|
|||
|
|
### 安全监控与应急响应
|
|||
|
|
- 监控
|
|||
|
|
- 关键指标:认证失败率、会话异常增长、Redis连接数、SAP/LDAP超时与错误率。
|
|||
|
|
- 应急响应
|
|||
|
|
- 触发条件:大规模认证失败、会话风暴、第三方系统不可用、审计日志异常激增。
|
|||
|
|
- 处置步骤:隔离问题模块、降级非关键功能、回滚可疑变更、通知安全部门与合规团队。
|
|||
|
|
|
|||
|
|
章节来源
|
|||
|
|
- [RedisConfig.java:1-50](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RedisConfig.java#L1-L50)
|
|||
|
|
- [SAPConfig.java:1-120](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java#L1-L120)
|
|||
|
|
- [LdapConfig.java:1-43](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java#L1-L43)
|
|||
|
|
|
|||
|
|
## 依赖分析
|
|||
|
|
- 组件耦合
|
|||
|
|
- 管理端应用依赖Sa-Token与Redis配置;认证中心负责统一签发与SSO;网关提供跨域与基础过滤。
|
|||
|
|
- 外部依赖
|
|||
|
|
- SAP与LDAP通过独立配置类接入,降低耦合度;建议在运行时对这些连接进行健康检查与熔断。
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
graph LR
|
|||
|
|
Admin["管理端应用"] --> SaToken["Sa-Token配置"]
|
|||
|
|
Admin --> Redis["Redis配置"]
|
|||
|
|
Admin --> LDAP["LDAP配置"]
|
|||
|
|
Admin --> SAP["SAP配置"]
|
|||
|
|
Auth["认证中心应用"] --> SaToken
|
|||
|
|
Gateway["网关CORS"] --> Admin
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
图表来源
|
|||
|
|
- [AdminApplication.java:1-27](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java#L1-L27)
|
|||
|
|
- [AuthApplication.java:1-24](file://nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java#L1-L24)
|
|||
|
|
- [SaTokenConfigure.java:1-16](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/SaTokenConfigure.java#L1-L16)
|
|||
|
|
- [RedisConfig.java:1-50](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RedisConfig.java#L1-L50)
|
|||
|
|
- [LdapConfig.java:1-43](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java#L1-L43)
|
|||
|
|
- [SAPConfig.java:1-120](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java#L1-L120)
|
|||
|
|
- [CorsWebFilter.java:1-33](file://nflg-wms-gateway/src/main/java/com/nflg/wms/gateway/config/CorsWebFilter.java#L1-L33)
|
|||
|
|
|
|||
|
|
章节来源
|
|||
|
|
- [AdminApplication.java:1-27](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java#L1-L27)
|
|||
|
|
- [AuthApplication.java:1-24](file://nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java#L1-L24)
|
|||
|
|
- [SaTokenConfigure.java:1-16](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/SaTokenConfigure.java#L1-L16)
|
|||
|
|
- [RedisConfig.java:1-50](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RedisConfig.java#L1-L50)
|
|||
|
|
- [LdapConfig.java:1-43](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java#L1-L43)
|
|||
|
|
- [SAPConfig.java:1-120](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java#L1-L120)
|
|||
|
|
- [CorsWebFilter.java:1-33](file://nflg-wms-gateway/src/main/java/com/nflg/wms/gateway/config/CorsWebFilter.java#L1-L33)
|
|||
|
|
|
|||
|
|
## 性能考虑
|
|||
|
|
- 会话与缓存
|
|||
|
|
- Redis模板已配置序列化策略,建议根据热点数据调整TTL与淘汰策略,避免内存压力。
|
|||
|
|
- 认证与授权
|
|||
|
|
- JWT解码与Redis查询应尽量本地化与缓存,减少跨实例查询开销。
|
|||
|
|
- 第三方系统
|
|||
|
|
- SAP连接池参数需与业务峰值匹配,避免频繁创建销毁连接;对LDAP查询结果进行分页与索引优化。
|
|||
|
|
|
|||
|
|
章节来源
|
|||
|
|
- [RedisConfig.java:1-50](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RedisConfig.java#L1-L50)
|
|||
|
|
- [SAPConfig.java:1-120](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java#L1-L120)
|
|||
|
|
|
|||
|
|
## 故障排查指南
|
|||
|
|
- 认证失败
|
|||
|
|
- 检查JWT是否过期、Redis会话是否被清理、SSO配置是否一致。
|
|||
|
|
- 跨域问题
|
|||
|
|
- 确认CORS响应头是否正确下发,预检请求是否被提前拦截。
|
|||
|
|
- Redis异常
|
|||
|
|
- 检查连接数、内存占用与序列化异常;确认模板键值序列化策略一致。
|
|||
|
|
- SAP/LDAP连接异常
|
|||
|
|
- 校验连接参数与池容量配置,查看初始化日志与异常堆栈。
|
|||
|
|
|
|||
|
|
章节来源
|
|||
|
|
- [NflgException.java:1-18](file://nflg-wms-common/src/main/java/com/nflg/wms/common/exception/NflgException.java#L1-L18)
|
|||
|
|
- [SAPConfig.java:1-120](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java#L1-L120)
|
|||
|
|
- [LdapConfig.java:1-43](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java#L1-L43)
|
|||
|
|
- [CorsWebFilter.java:1-33](file://nflg-wms-gateway/src/main/java/com/nflg/wms/gateway/config/CorsWebFilter.java#L1-L33)
|
|||
|
|
- [RedisConfig.java:1-50](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RedisConfig.java#L1-L50)
|
|||
|
|
|
|||
|
|
## 结论
|
|||
|
|
本文件基于仓库现有实现,总结了WMS系统的认证授权、数据与网络安全、审计与合规、API防护、第三方集成与运维应急等方面的安全要点。建议在生产环境中补充TLS、限流、签名与防重放、敏感数据脱敏与加密、严格的第三方访问控制与健康检查,以形成闭环的安全体系。
|
|||
|
|
|
|||
|
|
## 附录
|
|||
|
|
- 安全最佳实践清单
|
|||
|
|
- 强制HTTPS与TLS 1.2+;启用CORS白名单;部署WAF与DDoS防护。
|
|||
|
|
- 会话令牌最小权限与短有效期;Redis启用密码与网络隔离。
|
|||
|
|
- 对SAP/LDAP使用只读账户与最小权限;连接池参数与健康检查。
|
|||
|
|
- 审计日志与数据脱敏;异常告警与应急响应流程。
|
|||
|
|
- 合规性检查清单
|
|||
|
|
- 数据分类分级与最小化采集;日志保留期限与可追溯性;第三方供应商安全评估与合同约束。
|