1. 概述
1.1 版本
| 报表服务器版本 | 后台单点登录插件 | 功能变动 |
|---|---|---|
| 11.0 | V1.0.0 | - |
| 11.0 | V1.1.0 |
|
| 11.0.4 | V1.1.1 |
|
| 11.0.16 | V1.2.2 |
|
1.2 功能简介
当企业已有 OA 系统、统一门户或其他内部平台,希望用户在这些系统中点击链接即可直接进入 FineReport 报表,无需再次登录。
后台单点登录(SSO,Single Sign-On)的核心思路是:由第三方系统(如 OA、门户等)构造一个携带身份信息的特殊 URL,用户点击后直接访问 FineReport,FineReport 从 URL 参数中提取并验证身份信息,验证通过后自动完成登录,无需用户手动输入账号密码。
安装「后台单点登录插件」后,即可实现后台单点登录,无需编写复杂代码,操作简单。插件提供以下两种后台单点登录方案:
| 方案一:用户名不加密 | 方案二:用户名加密(推荐) | |
|---|---|---|
| 说明 | 直接将用户名拼接至 URL 参数中 | 对用户名进行 RSA 加密后拼接至 URL 参数中,安全性更高; 支持 ssoToken 超时设置,开启后,sso Token 将在达到「系统管理>登录>登录超时时间」后过期 |
| 访问示例 | http://ip:端口号/工程名/decision?fine_username=用户名 | http://ip:port/工程名/decision?ssoToken=xxx(对用户名加密并转码后得到的结果) |
| 特点 | 简单易用,但用户名明文暴露在 URL 中,安全性较低,适合内网或安全要求不高的场景 | 用户名经过 RSA 加密,URL 中不暴露明文,安全性高,推荐在生产环境使用 |
| 登录流程 | ![]() | ![]() |
2. 插件介绍
2.1 插件下载
点击下载插件:后台单点登录插件
2.2 配置页面
插件安装成功后,超级管理员登录平台,依次点击「管理系统 > 系统管理」,即可进入「集成后台单点登录」配置页面。
注:配置页面仅超级管理员可见,普通用户无权访问。

3. 方案一:用户名不加密
3.1 配置步骤
1)超级管理员登录平台,点击「管理系统 > 系统管理」,进入「集成后台单点登录」配置页面。
2)选择「示例接口」,点击「保存」。
注:插件 V1.0.0 版本无需执行此步骤,可直接跳至效果预览。

3.2 效果预览
在浏览器中访问以下链接,即可实现单点登录:http://ip:端口号/工程名/decision?fine_username=用户名
其中,「用户名」需替换为 FineReport 平台中已存在且可用的用户名。

4. 方案二:用户名加密
注:启用方案二后,将不再支持通过 fine_username 参数的方式实现后台单点登录。支持的访问路径请参见本文 4.5 节。
本方案使用 RSA 非对称加密对用户名进行加密,有效提升单点登录的安全性。
4.1 生成 RSA Key
V1.1.0 及以上版本:插件安装后,Public Key 自动生成,无需手动操作。
V1.0.0 版本:需手动点击「生成 RSA Key」按钮进行生成。
注意事项:
仅支持生成默认 Key,不支持自定义 Key。
点击「生成 RSA Key」可重新生成,新 Key 将覆盖原有 Key,请谨慎操作。
生成的 Key 仅支持 AES 传输加密,安装 Base64 插件无效,不支持国密算法。

4.2 对用户名进行加密
将生成的 RSA Key 和待登录的用户名,放入用户自备的加密代码中,对用户名进行 RSA 加密。
注:下图使用加密网站进行加密(不提供示例网站,可自行百度)。实际生产环境中,请使用自有加密代码进行加密,避免依赖第三方网站,以保障密钥安全。

4.3 用户名解密测试(验证加密是否正确)
将加密后的用户名输入「解密测试」框中,若能成功解密还原出原始用户名,则说明加解密流程正确,可继续后续步骤。

4.4 对加密结果进行 URL 转码
加密后的用户名必须进行 URL 转码后才能正确嵌入访问链接中。用户可使用 encodeURIComponent 函数对加密结果进行转码。
本文示例使用转码网站进行转码(不提供示例网站,可自行百度)。

4.5 效果查看
在浏览器中访问以下链接,即可实现用户名加密的后台单点登录:http://ip:port/工程名/decision?ssoToken=xxx(转码后的用户名)
其中,xxx 为加密并转码后的用户名字符串。

4.6 ssoToken 超时设置
版本要求:V1.1.0 及以上版本支持,默认不开启。功能说明:
开启后,ssoToken 需要在生成时传入时间戳和用户名,详情请参见:后台单点登录RSA示例代码
ssoToken 的有效期与「系统管理 > 登录 > 登录超时时间」保持一致,超时后自动过期。
超时后的表现:
使用已过期的 ssoToken 访问帆软系统时,将报错:登录超时,请重新登录。

5. 注意事项
5.1 生产环境建议:通过代码自动生成 ssoToken
第 4 节中演示的 ssoToken 生成方式为手动操作,仅用于功能验证。
在实际生产环境中,建议通过后端代码自动生成 ssoToken,以实现自动化的单点登录流程。详情请参见:后台单点登录RSA示例代码
5.2 常见问题:Decryption error(解密失败)
问题描述:
在新计算引擎情况下拼接 ssoToken ,通过访问链接http://ip:port/工程名/decision/view/report?viewlet=WorkBook.cptx&ssoToken=xxx在单点登录后跳转至 cptx 模板,解密失败,出现报错:ERROR [standard] Decrypt failed:Decryption error
原因分析:
FineReport 11.0.4 以及后台单点登录插件 V1.1.1 之前版本的新计算引擎请求无法适配 ssoToken 。
解决方案 1:将 cptx 格式的模板嵌入到 frm 格式的决策报表中,后台单点登录时对 frm 模板进行校验登录。
解决方案 2:开启 cptx 格式模板的模板认证,通过 cpt 格式模板的加载结束事件跳转至 cptx 模板,后台单点登录时对 cpt 模板进行校验登录
