跳转至

Manager 模块 API

Manager 模块是 MyApps 平台的**管理控制台服务**(obpm-manager),负责企业域/租户、用户、角色、组织架构、企业微信/钉钉/飞书集成、企业邮箱、 license、系统配置、监控、在线用户、日志、工作日历、元数据管理等管理控制台能力。该模块默认运行在 8087 端口,context-path 占位符为 ${myapps.context-path.manager:}(部署时替换为具体上下文路径,缺省为空)。

覆盖进度:28 / 29 控制器(已覆盖 WechatAuthtimeControllerDomainAuthtimeControllerUserAuthtimeControllerCalendarAuthtimeControllerSysConfigControllerFlowInterventionControllerApplicationAuthtimeControllerDingdingAuthtimeControllerDepartmentAuthtimeControllerFeishuAuthtimeControllerSuperuserControllerFieldextendAuthtimeControllerAdminAuthtimeControllerRoleAuthtimeControllerOnlineUserControllerUploadAuthtimeControllerMetadataManageControllerLogggerAuthtimeControllerLogConsoleControllerEmailAuthtimeControllerSwaggerControllerHealthMetricsFetcherControllerBpmPlatformControllerAdminLoginControllerSystemMonitorControllerLogSseControllerLicenseAuthtimeControllerDomainUrlController,共 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,claim username 为管理员用户 id,默认有效期 2 小时,可通过 login.tokenEffectiveTime 配置)。adminToken 与 runtime 的 accessToken、designer 的 designerToken 是完全独立的三个 JWT,用户体系也是独立的 SuperUserVO(超级管理员/域管理员/系统管理员),不复用 runtime 的 WebUser。

adminToken 传递方式(据 cn.myapps.common.util.Security.getAdminIdFromToken

按以下顺序查找(Authorization: Bearer 回退,与 accessToken/designerToken 不同):

  1. query 参数 adminToken
  2. Cookie adminToken(HttpOnly,path=/
  3. 请求头 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 双路下发——既写 adminToken HttpOnly 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=500errmsg=<异常信息>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 模块控制器已全部覆盖。