1. 概述
1.1 版本
| 报表服务器版本 | JAR 包 | 后台单点登录插件 | 功能变动 |
|---|---|---|---|
| 10.0 | 2020-04-26 | V1.0.0 | - |
| V1.1.0 |
|
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)插件安装成功后,选择「示例接口>保存」。如下图所示:
注:插件 V1.0.0 版本,忽略该步骤。

3.2 效果查看
2)访问http://ip:端口号/工程名/decision?fine_username=用户名,「用户名」为任意平台已存在且可用的用户名。如下图所示:

4. 方案二:用户名加密
注:该方案不再支持访问http://ip:端口号/工程名/decision?fine_username=用户名实现后台单点登录,支持的访问路径请参见本文 4.5 节。
「后台单点登录插件」支持使用 RSA Key 对用户名加密来提高安全性。
4.1 生成 RSA Key
插件 V1.1.0 版本安装后,Public Key 自动生成。如下图所示:
注:插件 V1.0.0 版本,需要点击「生成RSA Key」按钮。

需注意以下几点:
只支持生成默认的 key ,不支持自定义。
生成 Public Key 后,点击「生成 RSA Key」,可重新生成且覆盖之前的 Key 。
生成的 key 只支持 aes 传输加密,安装 base64 插件无效,也不支持国密。
4.2 用户名加密
将生成的 RSA KEY 和用户名放到用户自己的加密代码中,对用户名进行加密。
1)此处用 加密网站 进行加密,实际用户建议使用自己加密代码进行加密。
2)加密步骤如下图所示:

4.3 用户名解密
将加密后的用户名,输入到「解密测试」中,若能成功解密出用户名,代表加解密的流程是正确的。如下图所示:

4.4 用户名转码
加密后的用户名需要转码才能嵌入 URL 中,用户可使用encodeURIComponent对加密用户名进行转码。
本文示例使用 转码网站 进行转码,如下图所示:

4.5 效果查看
访问链接:http://ip:port/工程名/decision?ssoToken=xxx(编码后的结果),实现用户名加密的后台单点登录。如下图所示:

4.6 ssoToken 超时设置
V1.1.0 版本新增该功能,默认不开启。开启后,ssoToken 将在达到「系统管理>登录>登录超时时间」后过期。
V1.0.0 版本对用户名进行 rsa 加密,V1.1.0 版本对下面这个 JSON 字符串进行 rsa 加密,其中 username 为用户名,issueTime 为当前毫秒时间戳。
{
"username": "1",
"issueTime": 1638434945973
}
若用户使用 后台单点登录RSA示例代码 实现的单点登录,开启「ssoToken 超时设置」功能后,需要修改代码接口,如果不修改,ssoToken 无法成功单点登录(进入平台登录页的效果)。代码接口请参见:后台单点登录RSA示例代码 的 2.2.2 节内容。
如果使用的 ssoToken 超时,将报错:登录超时,请重新登录。如下图所示:

5. 注意事项
5.1 Decryption error
问题描述:
在新计算引擎情况下拼接 ssoToken ,通过访问链接http://ip:port/工程名/decision/view/report?viewlet=WorkBook.cptx&ssoToken=xxx在单点登录后跳转至 cptx 模板,解密失败,出现报错:ERROR [standard] Decrypt failed:Decryption error
原因分析:
FineReport 10.0 版本中的新计算引擎请求无法适配 ssoToken 。
解决方案 1:将 cptx 格式的模板嵌入到 frm 格式的决策报表中,后台单点登录时对 frm 模板进行校验登录。
解决方案 2:开启 cptx 格式模板的模板认证,通过 cpt 格式模板的加载结束事件跳转至 cptx 模板,后台单点登录时对 cpt 模板进行校验登录。
