理解帆软报表 SSO 的集成:AI 问数系统如何用 RSA 加密用户名免密登录
理解帆软报表 SSO 的集成 - AlfredZhao
AI 问数系统集成帆软报表 SSO 时,需在帆软后台启用用户名加密插件生成 RSA 公钥,对接方用该公钥加密当前登录用户名并拼接为 ssoToken 参数传入报表地址,帆软用私钥解密后校验同名用户并放行。该方案要求 AI 问数系统与帆软两侧存在同名用户,且并非开箱即用,参数名与加密方式取决于帆软实际启用的插件配置。
2026-10-12 07:02 AlfredZhao 阅读(105) 评论() 收藏 举报
笔者最近遇到一个和 AI 问数系统集成帆软报表的场景,需要跟客户讲明白集成原理,就稍微研究了下。帆软的“用户名加密单点登录(SSO)”可以抓住一个核心:用一把特殊的锁,把当前登录的用户名安全地送到帆软去。下面从两个常见疑问出发,拆解整个集成思路。
01 | 两边都要有同名用户
很多人会问:AI问数系统也需要有对应的用户吗?答案是肯定的,而且是两边都要有。
AI问数系统侧必须有登录用户。比如在 AI问数系统里用 admin 账号登录,系统先要知道当前操作的人是谁,才能把这个名字拿去加密。如果连是谁在看页面都不知道,集成无从谈起。
帆软(FineReport)侧也必须有同名用户。当 AI问数系统把加密后的密文(ssoToken)通过网址传给帆软后,帆软解密出来发现是 admin,此时帆软后台必须也存在一个叫 admin 的账号。帆软会去自己的用户库里核对,确认确有其人再放行。如果帆软里没有这个用户,就会报错拒绝登录。
flowchart LR A["AI问数系统<br/>登录用户 admin"] --> B["帆软后台<br/>同名用户 admin"] B --> C{"用户名是否一致"} C -- 一致 --> D["放行并展示报表"] C -- 不存在 --> E["报错拒绝登录"]
02 | 用户名加密的集成思路
整个集成过程,像是一场“写信、加密、开箱”的三步走。
① 准备工作:拿钥匙
帆软侧由管理员在后台开启加密插件,生成一个 RSA 公钥(Public Key),并把这个公钥交给你。AI问数系统侧则把这个公钥配在系统后台的密钥管理里。
② 用户登录:确定是谁
用户打开 AI问数系统,输入账号密码登录,例如登录用户是 admin。系统后台的程序此时拿到了这个用户名。
③ 加密与拼接 URL
当用户点击某个报表时,AI问数系统的后端代码开始工作:先用代码读取那串 RSA 公钥,把用户名 admin 加密成一长串乱码(密文);再把乱码进行 URL 编码,防止特殊符号破坏网址结构;最后把编码后的密文拼接到帆软报表地址后面,形如:
http://<帆软IP>/webroot/decision/form?viewlet=xxx.frm&ssoToken=加密后的长串乱码
sequenceDiagram participant U as 用户浏览器 participant A as AI问数系统后端 participant F as 帆软服务 U->>A: 登录并点击报表 A->>A: 用 RSA 公钥加密用户名 admin A->>A: 对密文做 URL 编码 A-->>U: 返回拼接好 ssoToken 的帆软地址 U->>F: 携带 ssoToken 请求报表 F->>F: 用私钥解密 ssoToken 还原 admin F-->>U: 校验通过,直接展示报表
④ 帆软收信并放行
浏览器跳转或在网页的 <iframe> 中加载这个网址。帆软收到请求后,用它自己藏好的私钥解密 ssoToken,还原出 admin。帆软确认用户合法,直接展现报表,全程不需要用户在帆软输入密码。
03 | 帆软的用户名加密是通用方案吗?
这套“用户名加密 + ssoToken 传参”的思路,是帆软单点登录里比较常见的一种做法,但它并不是唯一方案,也不是开箱即用的默认能力,需要满足两个前提:
- 帆软侧要启用对应的加密插件:由管理员在帆软后台开启,并生成 RSA 公钥交给对接方。没有这一步,帆软不会去解密
ssoToken。 - 对接方要按约定加密:拿到公钥后,用 RSA 对用户名加密,再按帆软约定的参数名(如
ssoToken)拼进 URL。
所以它更像是一种“约定好的通用机制”,而不是所有帆软部署都默认打开的开关。是否可用、参数名叫什么、用哪种加密方式,取决于帆软后台实际启用的插件和配置。
简单配置指引
如果你还不清楚怎么配,可以按下面几步在帆软后台确认:
- 确认插件:登录帆软决策平台,进入插件管理,确认已安装并启用用户名加密单点登录相关插件。
- 生成密钥:在插件配置里生成 RSA 公钥与私钥,私钥留在帆软侧,公钥提供给对接方。
- 配置对接方:把公钥配置到 AI问数系统的密钥管理里,用于加密用户名。
- 联调验证:用一个帆软侧已存在的同名账号发起跳转,确认能免密进入报表;若报错,优先检查两边用户名是否一致、公钥是否匹配。
具体菜单位置和参数名会随帆软版本与插件不同而变化,以你实际后台看到的配置项为准。
04 | 一句话总结
AI问数系统知道你是谁,用帆软给的公钥把名字加密,塞进网址传给帆软,帆软解密放行。
关注我,和AI一起成长~
来源:博客园 · cnblogs.com