Skip to content

17 — 应用商店接入规范

面向业务系统 / 第三方应用开发方:说明怎样按门户既有规范把应用做出来,才能被管理员登记进应用商店,并被用户开通后正常打开。

权威:以当前代码与门户主数据为准(sys_systemsys_portal_appsys_sso_client、商店上架发布校验)。
商店本身没有第三方入站开放 API(无 HMAC/OAuth 的「自助上架」)。上架、权益、开通由门户管理员与已登录用户完成。
关联:用户与管理员操作见 使用手册 · 应用商店门户运营;工程说明见 doc/55-应用商店.md;SSO 见 04-SSO接入-IdP.md;权限码见 doc/43-门户应用权限码与菜单联动.md


1. 结论先说

你要交付什么门户侧怎么用
可访问的业务地址(HTTPS 推荐)登记为门户应用的电脑/手机 URL
打开方式:外链或内嵌openMode = EXTERNALIFRAME(已有站内页可用 INTERNAL
需要免登时:按门户 IdP 做授权码回调管理员登记 已有 SSO Client,应用绑定 clientId
需要按人控制可见时:约定入口权限码门户应用 permCode;商店开通时写入用户个人商店角色

不要做:为进商店单独打应用包、接微前端运行时、自助注册 SSO Client、或调用 /api/admin/portal/store/**/api/portal/store/**(后者仅门户会话用户使用)。

一期商店上架范围:

方式能否上架
外链 EXTERNAL可以
内嵌 IFRAME(页面允许被门户嵌套)可以
免登(建在外链/内嵌上,复用已开通 SSO Client)可以
站内页 INTERNAL(页面已在门户内存在)可以
纯展示 NONE(无可打开地址)不可以
独立部署编排 / 应用包 / 微前端不在一期

2. 推荐落地顺序

text
① 业务系统可独立访问
② 门户登记「业务系统」sys_system
③(可选)登记 SSO Client,完成免登联调
④ 门户登记「门户应用」sys_portal_app(地址 + openMode + permCode)
⑤ 用普通账号在办事大厅/首页点开验证
⑥ 管理员在应用商店上架、(按需)签发可装权益、发布
⑦ 用户在商店开通后,工作台按 permCode 可见并可打开

第 ⑥⑦ 步由门户运营完成;你方重点保证 ①~⑤。


3. 业务系统与门户应用

3.1 业务系统

  • 在管理端「集成对接」登记系统,拿到稳定的 system_code
  • 后续 SSO Client、门户应用都挂在该编码下,不要中途随意改码。

3.2 门户应用(商店挂接对象)

管理员在「门户应用管理」创建时,你方需提供或约定:

字段要求
portalAppCode全局唯一业务编码,建议小写+下划线,如 fin_expense
portalAppName展示名称
systemCode已登记的业务系统
openModeEXTERNAL / IFRAME /(已有)INTERNAL
pcUrl / appUrl可打开地址;NONE 不能进商店
permCode入口权限;空=全员可见(开通只记安装账,不写角色)
clientId需要免登时绑定已开通的 SSO Client
supportPc / supportMobile与真实能力一致,避免大厅出现却打不开

权限码推荐形态:portal:{应用码小写}:view,并与角色授权、菜单联动约定一致(见 doc/43)。

3.3 打开方式注意点

openMode应用侧注意
EXTERNAL新窗口打开;注意浏览器弹窗拦截;回调域名登记正确
IFRAME允许被门户域名嵌套X-Frame-Options / CSP frame-ancestors);登录态、Cookie SameSite 需可在嵌套场景工作
INTERNAL仅门户站内路由;第三方业务系统一般不用

发布到商店时,商品会抄写当时的 openMode;之后改门户应用打开方式,已发布商品在运营再次保存/发布时才会同步策略(以管理端实际操作为准)。


4. 免登(SSO)

需要「从门户点进业务不再输密码」时:

  1. 01-接入准备.md 由门户管理员创建 CONFIDENTIAL Client,绑定你的 system_code
  2. 04-SSO接入-IdP.md 实现授权码回调(OAuth2 / OIDC 等)。
  3. client_credentials 未开通,勿按机器账号取 Token 设计用户免登。
  4. 门户应用绑定该 clientId;联调在办事大厅点开验证,再进商店。

商店不会替你创建 SSO Client,也不会下发 SDK 包。


5. 与商店开通的关系(给开发的预期)

用户开通商店商品后,门户侧行为:

步骤说明
校验商品已发布下架后不能新开通
校验可装权益免费/不要求权益的商品可跳过;否则需 PLATFORM 或用户部门匹配的 ORG 权益
写开通记录仅商店账本;不是工作台白名单
授予入口权限permCode 非空时,写入该用户个人角色 STORE_U_{userId}
打开应用仍读 sys_portal_app 的地址 / openMode / SSO

因此:

  • 你方不必实现「商店开通回调」才能被打开;
  • 你方必须保证应用 URL 与免登在门户打开链路下可用;
  • 卸载只会收回商店个人角色上的那条 permCode;用户若还有业务角色持有同一权限,入口仍可见。

6. 交付给门户运营的检查清单

联调通过后,把下列信息交给管理员即可上架:

  • [ ] system_code、业务系统名称
  • [ ] portalAppCode、展示名称、图标(可选)
  • [ ] 电脑 / 手机打开地址
  • [ ] 打开方式:EXTERNALIFRAME(及是否允许嵌套)
  • [ ] 是否免登;若是,已开通的 client_id 与回调地址列表
  • [ ] 入口 permCode(或确认全员可见)
  • [ ] 商店文案:标题、简介、开发商、版本号、更新说明、截图 URL(可选)
  • [ ] 是否需要「可装权益」(按单位/部门控制谁能开通)

7. 非目标与常见误解

误解正解
商店提供开放「自助上架」API无;管理员在门户管理端操作
进商店要改造为微前端 / 打安装包一期不要
开通后工作台用安装记录过滤否;只用原来的 permCode
个人商店角色会做出向权限同步否;STORE_U_ 前缀跳过权限出向
用 OAuth Token 调 /api/portal/store/**不可;商店用户 API 走门户登录会话

8. 相关文档

文档用途
01-接入准备.mdClient、system_code、统一响应
04-SSO接入-IdP.md免登端点与流程
使用手册 · 应用商店用户怎么开通
门户运营管理员怎么上架
doc/55-应用商店.md工程与接口总览
Knife4j /doc.html运行时字段级 OpenAPI(管理/门户分组,非 open)