开发指南Bundle 开发平台应用开发
安全与故障排查
保护 Bundle 平台应用 token,并按授权链路定位入口、回跳和权限问题。
安全要求
- 使用 PKCE
S256,每次授权生成新的 verifier 和 state。 redirectUri必须与登记的应用入口同源。- 不在 URL、日志、错误上报、埋点或截图中记录 token。
- token 按
workspaceId + runtimeAppId + installId隔离,并检查过期时间。 - 页面存在 XSS 风险时,浏览器存储中的 token 同样会泄漏;必须执行内容安全策略和依赖安全检查。
- 应用停用、卸载、权限变化或用户退出时,清理本地会话。
- 后端服务只信任平台网关注入并验证过的上下文,不信任前端自行传入的
userId或workspaceId。
授权页提示缺少参数
检查参数是否写在 Hash Router 路由后:
正确:/manager/#/platform-app-authorize?installId=...
错误:/manager/?installId=...#/platform-app-authorizeredirectUri 不合法
检查协议、域名和端口是否与平台应用入口同源。外部应用必须使用绝对的 http(s) 地址,不能用协议相对地址。
缺少 PKCE verifier
通常是授权前没有保存 verifier、回跳进入了不同浏览器会话,或者应用刷新逻辑提前清理了 sessionStorage。重新开始授权并保证同一浏览器会话完成回跳。
state 校验失败
停止兑换 token。检查是否同时发起了多个授权请求、多个安装共用了同一个 storage key,或者回跳参数被路由层覆盖。
token 兑换失败
依次确认:
code尚未使用且没有过期。installId与发起授权时一致。codeVerifier与原始 challenge 匹配。- 请求体字段使用
code和codeVerifier。
接口返回无权限
不要立即重新登录。先区分:
- token 无效或过期:重新授权。
- 模块方法未声明:发布包含正确最小权限的平台应用新版本。
- 工作区未安装依赖能力:修复安装或接口绑定。
- 用户没有目标业务权限:由业务权限管理员处理。
- 后端服务异常:查看目标服务日志和追踪信息。
排障时保留 installId、runtimeAppId、平台应用版本号、模块 service、方法名和平台
返回的公开错误信息;不要保存完整 token。