Manager 模块 API¶
Manager 模块是 MyApps 平台的**管理控制台服务**(obpm-manager),负责企业域/租户、用户、角色、组织架构、企业微信/钉钉/飞书集成、企业邮箱、 license、系统配置、监控、在线用户、日志、工作日历、元数据管理等管理控制台能力。该模块默认运行在 8087 端口,context-path 占位符为 ${myapps.context-path.manager:}(部署时替换为具体上下文路径,缺省为空)。
覆盖进度:28 / 29 控制器(已覆盖
WechatAuthtimeController、DomainAuthtimeController、UserAuthtimeController、CalendarAuthtimeController、SysConfigController、FlowInterventionController、ApplicationAuthtimeController、DingdingAuthtimeController、DepartmentAuthtimeController、FeishuAuthtimeController、SuperuserController、FieldextendAuthtimeController、AdminAuthtimeController、RoleAuthtimeController、OnlineUserController、UploadAuthtimeController、MetadataManageController、LogggerAuthtimeController、LogConsoleController、EmailAuthtimeController、SwaggerController、HealthMetricsFetcherController、BpmPlatformController、AdminLoginController、SystemMonitorController、LogSseController、LicenseAuthtimeController、DomainUrlController,共 177 个端点)
Manager 模块共有约 29 个控制器(域/租户、管理员登录、用户、角色、组织、企业微信/钉钉/飞书集成、邮件、license、系统配置、监控、在线用户、日志、工作日历、元数据管理、BPM 平台、流程干预、字段扩展、上传、Swagger 等)。本阶段已文档化 28 个控制器(共 177 个端点),仅余抽象基类 BaseAuthTimeController(不单独成文)未覆盖。
注:Manager 模块的 REST 基址并非统一的
/api/rest,而是按控制器分布(如/api/authtime/...)。详见各控制器文档。
已文档化控制器¶
| 文件 | 中文名 | 基址 | 端点数 |
|---|---|---|---|
wechat-authtime.md |
WechatAuthtimeController(企业微信集成管理) | ${myapps.context-path.manager:}/api/authtime |
26 |
domain-authtime.md |
DomainAuthtimeController(企业域管理) | ${myapps.context-path.manager:}/api/authtime |
18 |
user-authtime.md |
UserAuthtimeController(用户管理) | ${myapps.context-path.manager:}/api/authtime |
16 |
calendar-authtime.md |
CalendarAuthtimeController(工作日历管理) | ${myapps.context-path.manager:}/api/authtime |
13 |
sys-config.md |
SysConfigController(系统配置管理) | ${myapps.context-path.manager:}/api/authtime |
12 |
flow-intervention.md |
FlowInterventionController(流程干预/流程监控) | ${myapps.context-path.manager:}/api/authtime |
12 |
application-authtime.md |
ApplicationAuthtimeController(软件/应用管理) | ${myapps.context-path.manager:}/api/authtime |
10 |
dingding-authtime.md |
DingdingAuthtimeController(钉钉集成管理) | ${myapps.context-path.manager:}/api/authtime |
9 |
department-authtime.md |
DepartmentAuthtimeController(部门管理) | ${myapps.context-path.manager:}/api/authtime |
9 |
feishu-authtime.md |
FeishuAuthtimeController(飞书集成管理) | ${myapps.context-path.manager:}/api/authtime |
8 |
superuser.md |
SuperuserController(特权用户管理) | ${myapps.context-path.manager:}/api/authtime |
5 |
fieldextend-authtime.md |
FieldextendAuthtimeController(字段扩展管理) | ${myapps.context-path.manager:}/api/authtime |
5 |
admin-authtime.md |
AdminAuthtimeController(企业管理员管理) | ${myapps.context-path.manager:}/api/authtime |
4 |
role-authtime.md |
RoleAuthtimeController(角色管理) | ${myapps.context-path.manager:}/api/authtime |
2 |
online-user.md |
OnlineUserController(在线用户) | ${myapps.context-path.manager:}/api/authtime |
2 |
upload-authtime.md |
UploadAuthtimeController(文件上传下载) | ${myapps.context-path.manager:}/api/authtime |
2 |
metadata-manage.md |
MetadataManageController(元数据管理) | ${myapps.context-path.manager:}/api/authtime |
2 |
loggger-authtime.md |
LogggerAuthtimeController(操作日志开关) | ${myapps.context-path.manager:}/api/authtime |
2 |
log-console.md |
LogConsoleController(日志控制台) | ${myapps.context-path.manager:}/console |
2 |
email-authtime.md |
EmailAuthtimeController(企业域邮件配置) | ${myapps.context-path.manager:}/api/authtime |
2 |
swagger.md |
SwaggerController(Swagger 演示登录辅助) | ${myapps.context-path.manager:}/api/authtime |
3 |
health-metrics.md |
HealthMetricsFetcherController(健康指标抓取) | ${myapps.context-path.manager:}/api/monitor |
3 |
bpm-platform.md |
BpmPlatformController(平台模式流程测试) | ${myapps.context-path.manager:}/api/authtime |
3 |
admin-login.md |
AdminLoginController(管理员登录与注销) | ${myapps.context-path.manager:} |
3 |
system-monitor.md |
SystemMonitorController(系统监控代理转发) | ${myapps.context-path.manager:} |
1 |
log-sse.md |
LogSseController(日志 SSE 推送) | ${myapps.context-path.manager:}/console |
1 |
license-authtime.md |
LicenseAuthtimeController(License 信息) | ${myapps.context-path.manager:}/api/authtime |
1 |
domain-url.md |
DomainUrlController(域管理入口跳转) | ${myapps.context-path.manager:} |
1 |
待补控制器¶
Manager 模块控制器**已全部覆盖**(除抽象基类 BaseAuthTimeController,其能力已被各 *AuthtimeController 子类继承使用,不单独成文)。
鉴权说明¶
(据源码)Manager 模块**不使用 Spring Security**,也**不使用 HandlerInterceptor**。访问控制完全由两个 Servlet Filter 协同完成,URL 模式与 context-path 相关——独立部署(context-path 非 /)下为 /*,lite 统一部署(context-path 为 /)下为 /manager/*:
CommonSecurityFilter(obpm-common,CommWebMvcConfig注册,order=-1):仅允许GET/POST/HEAD/OPTIONS方法(其他方法返回405);携带合法systemToken请求头(系统间 Feign 调用,JWT 内username固定为systemToken)的请求被标记pass=true跳过后续鉴权;/v3/api-docs、/swagger-ui、/druid需管理员登录;/actuator/*仅/actuator/health放开。ManagerSecurityFilter(obpm-manager,ManagerMvcConfig注册):核心鉴权。未被前置过滤器标记pass的请求须持有有效的adminToken(JWT,HMAC256,issuer=auth0,claimusername为管理员用户 id,默认有效期 2 小时,可通过login.tokenEffectiveTime配置)。adminToken与 runtime 的accessToken、designer 的designerToken是完全独立的三个 JWT,用户体系也是独立的SuperUserVO(超级管理员/域管理员/系统管理员),不复用 runtime 的 WebUser。
adminToken 传递方式(据 cn.myapps.common.util.Security.getAdminIdFromToken)¶
按以下顺序查找(无 Authorization: Bearer 回退,与 accessToken/designerToken 不同):
- query 参数
adminToken - Cookie
adminToken(HttpOnly,path=/) - 请求头
adminToken
缺失或解析失败时由 ManagerSecurityFilter.doFilter 直接设置 HTTP 401(无响应体)。Token 距过期不足 1 小时(Security.REFRESH_TIME)时由过滤器自动续签并通过 Set-Cookie 下发。
登录与令牌签发¶
- 登录端点:
POST {manager-context}/api/authtime/login,请求体{"username","password","checkcode"}(密码前端做"末两位挪到前面再 BASE64 解码"的轻量混淆,非真加密)。成功后Security.generateToken(userId)签发 JWT,Cookie 与 JSON 双路下发——既写adminTokenHttpOnly Cookie,又在响应 JSON 中返回字段adminToken(响应形如{"code":"0","msg":"登录成功","adminToken":"<jwt>"})。 - 注销端点:
POST {manager-context}/api/authtime/logout,将 token 加入黑名单缓存(AuthTimeServiceManager.setBlackList),并清空 Cookie。
鉴权豁免(白名单)¶
由 CommWebMvcConfig.filterRegistrationBeanPassFilter1(order=HIGHEST_PRECEDENCE)显式列举的 URL 命中即标记 pass=true,跳过 ManagerSecurityFilter,主要包括:
- 模块首页:
/、/manager、/manager/、/signon、/signon/*、/designer、/designer/ - 登录/注销:
/api/authtime/login/*、/manager/api/authtime/login/*、/api/authtime/logout、/manager/api/authtime/logout - 调试/移动端登录:
/api/debuglogin/*、/api/login/*、/runtime/app/security/* - 健康检查:
/health、/actuator/health、/kms/health、/ai/health - 静态资源后缀:
.jpg .js .css .ico .png .gif .html .json .map .woff2 .woff .ttf .eot .svg .mpg .mp4 .mp3 .wav .avi .flv .m3u8 .m3u .ts - magic-api:
/magic-api/*、/obpm/magic-api/* - runtime 取 token:
/api/rest/accessToken、/rest/accessToken、/api/runtime/secrets/*
白名单是**硬编码**在 Java 中的 URL pattern 列表,无 yml/properties 可配置入口。
执行用户¶
控制器内 getUser()(继承自 BaseAuthTimeController)调用 AuthTimeServiceManager.getAdminUser(request):先用 Security.getAdminIdFromToken(request) 解出用户 id,再经 SuperUserDesignTimeService.doView(userId) 装载 SuperUserVO,并写入 host 共享缓存;若 token 在黑名单中则返回 null。
完整鉴权机制与错误码说明见:顶层 index.md。
错误码补充¶
Manager 模块未引入模块专属业务错误码。控制器方法多在 try/catch 内捕获 Exception 后返回 errcode=500、errmsg=<异常信息>、data=null(HTTP 状态码仍为 200);个别业务校验返回 errcode=1。鉴权层引入以下与统一 Resource 不同的纯 HTTP 状态码:
| errcode | HTTP | 含义 |
|---|---|---|
| 401 | 401 | adminToken 缺失或失效(由 ManagerSecurityFilter 直接设置状态码,无响应体) |
| 405 | 405 | HTTP 方法不被允许(由 CommonSecurityFilter 拦截,仅允许 GET/POST/HEAD/OPTIONS,返回 HTML 错误页) |
| 1 | 200 | 业务校验失败(如外网验证失败、未找到对应软件,包在统一 Resource 中) |
| 500 | 200 | 业务异常(控制器内 try/catch 捕获后返回,包在统一 Resource 中) |
注:少数控制器端点(如
WechatAuthtimeController.synchFromWechat/synch2Wechat)未捕获异常,抛出时由 Spring 默认异常处理(HTTP 500,无统一Resource体)。
覆盖说明¶
本阶段覆盖 obpm-manager 工作树下的 WechatAuthtimeController(企业微信集成管理,26 个端点)、DomainAuthtimeController(企业域管理,18 个端点)、UserAuthtimeController(用户管理,16 个端点)、CalendarAuthtimeController(工作日历管理,13 个端点)、SysConfigController(系统配置管理,12 个端点)、FlowInterventionController(流程干预/流程监控,12 个端点)、ApplicationAuthtimeController(软件/应用管理,10 个端点)、DingdingAuthtimeController(钉钉集成管理,9 个端点)、DepartmentAuthtimeController(部门管理,9 个端点)、FeishuAuthtimeController(飞书集成管理,8 个端点)、SuperuserController(特权用户管理,5 个端点)、FieldextendAuthtimeController(字段扩展管理,5 个端点)、AdminAuthtimeController(企业管理员管理,4 个端点)、RoleAuthtimeController(角色管理,2 个端点)、OnlineUserController(在线用户,2 个端点)、UploadAuthtimeController(文件上传下载,2 个端点)、MetadataManageController(元数据管理,2 个端点)、LogggerAuthtimeController(操作日志开关,2 个端点)、LogConsoleController(日志控制台,2 个端点)、EmailAuthtimeController(企业域邮件配置,2 个端点)、SwaggerController(Swagger 演示登录辅助,3 个端点)、HealthMetricsFetcherController(健康指标抓取,3 个端点)、BpmPlatformController(平台模式流程测试,3 个端点)、AdminLoginController(管理员登录与注销,3 个端点)、SystemMonitorController(系统监控代理转发,1 个端点)、LogSseController(日志 SSE 推送,1 个端点)、LicenseAuthtimeController(License 信息,1 个端点)与 DomainUrlController(域管理入口跳转,1 个端点)。除抽象基类 BaseAuthTimeController(不单独成文)外,Manager 模块控制器已全部覆盖。