# 帆软报表集成指南

# 集成方案介绍

# 页面集成&豆腐块集成

# 页面集成介绍

真实场景种会有业务系统嵌入详细报表,在登录业务系统后或访问报表页面时,将该报表有权限的用户名及密码发送到报表服务器进行认证,从而访问报表时不需要再次登录。

# 页面认证

# 页面&豆腐块嵌入

报表先把权限验证地址以 iframe 的方式嵌入,解决跨域问题,然后再在 iframe 中初始化表单登录事件,实现登录页面后不进行跳转,访问对应报表即可。

# 单点集成

# 注册企业微信应用信息

12认证管理

# 注册报表应用

注册帆软应用

移动端配置:选择上一步注册的微信应用信息

回调地址:http://www.finereport.com/webroot/decision

​ http://www.finereport.com/webroot/decision/login/weixin

​ http://www.finereport.com/webroot/decision/weixin

获取到对应的clientId、clientScret

# 单点插件安装

插件下载地址:http://download.glink.glkyun.com/glodon-gosp/tools/fine-plugin-com.tptj.course.hg.login.username-1.0.zip

02安装插件

若帆软报表插件安装功能异常

可将该文件解压放入./webapps/webroot/WEB-INF/plugins/下面

重启报表服务

# 创建表 fine_oidc_config

名称 类型(mysql) 类型(sqlserver) 备注
id int int ID类型(PRIMARY KEY)、主键
client_id varchar(50) nvarchar(50) 客户端ID(注册报表应用获取)
client_secret varchar(255) nvarchar(255) 客户端密钥(注册报表应用获取)
grant_type varchar(255) nvarchar(255) grant_type(默认值:authorization_code)
hr_title varchar(255) nvarchar(255) hr_title(hr11_或者铁建其他)
logout_uri varchar(255) nvarchar(255) 登出地址
redirect_uri varchar(255) nvarchar(255) 登录成功回调地址
response_type varchar(255) nvarchar(255) response_type(默认值)
scope varchar(255) nvarchar(255) scope(默认值:openid)
state varchar(255) nvarchar(255) state(默认值:1)
url varchar(255) nvarchar(255) 平台认证地址

mysql:

CREATE TABLE `fine_oidc_config`  (
  `id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `client_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `client_secret` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `grant_type` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `hr_title` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `logout_uri` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `redirect_uri` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `response_type` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `scope` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `state` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

sqlserver:

CREATE TABLE fine_oidc_config (
	id bigint NOT NULL,
	client_id nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL,
	client_secret nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL,
	grant_type nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL,
	hr_title nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL,
	logout_uri nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL,
	redirect_uri nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL,
	response_type nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL,
	scope nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL,
	state nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL,
	url nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL,
	CONSTRAINT pk_fine_oidc_config PRIMARY KEY (id)
);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

创建表 fine_oidc_detail(登录并跳转某报表详细地址)

名称 类型(mysql) 类型(sqlserver) 备注
id varchar(50) nvarchar(50) id
url varchar(255) nvarchar(255) 跳转报表详情地址

mysql:

CREATE TABLE `fine_oidc_detail` (
  `id` varchar(50) COLLATE utf8_bin NOT NULL,
  `url` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1
2
3
4
5

sqlserver:

CREATE TABLE fine_oidc_detail (
	id nvarchar(50) NOT NULL,
	url nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL,
	CONSTRAINT pk_fine_oidc_detail PRIMARY KEY (id)
);
1
2
3
4
5

# 单点配置

单点配置-认证参数配置

跳转配置-跳转详情配置

# 登录说明

# 管理页面登录

访问:http://www.finereport.com/webroot/decision

跳转至登录页,使用平台用户进行登录

03管理端登录页

登录完成

09报表管理页

# 报表登录

企业微信多应用配置不同报表

访问:http://www.finereport.com/webroot/decision?clientId=finereport&clientType=weixin&viewId=2

viewId对应数据库表【fine_oidc_detail】的id值

10微信注册地址

登录完成

11企业微信跳转

# 设计器登录

账号:admin转换后的账号 密码:原管理员账号密码

04设计器登录

# 内嵌页面登录

账号密码:可使用管理员账号创建单独使用的新账号及密码提供嵌入使用

06添加新用户

认证完成之后访问对应的报表页面即可

登录参照官方文档:https://help.fanruan.com/finereport/doc-view-879.html?source=4

登录成功之后即可访问详细报表页面

# 谷歌浏览器单点登录失败
  • 参照:https://help.fanruan.com/finereport/doc-view-4027.html
# Safari浏览器跨域单点登录失败
  • 参照:https://help.fanruan.com/finereport/doc-view-1756.html
# IE11 浏览器跨域单点登录失败
# 问题描述:

iframe 跨域单点登录在 IE11 浏览器上失败,谷歌浏览器上单点登录正常。

# 解决方案:

1)由于 IE11 没有 attachEvent 这个属性,需要添加一个 meta 标签来设置浏览器的默认兼容模式,通过在 html 的 head 标签中加入下面代码:

<meta http-equiv="X-UA-Compatible" content="IE=10" />
1

meta 标签用来设置浏览器的默认兼容模式为 IE10,这样就可以依旧使用 attachEvent 属性。

2)另外 IE11 浏览器需要将报表服务器的地址加入到受信任的站点中,如下图所示:

07IE11跨域异常处理

# 打通用户体系

将用户及组织信息同步进帆软系统

# 管理员账号与平台账号不一致

# 修改帆软报表db文件

路径:tomcat-linux/webapps/webroot/WEB-INF/embed/finedb/db.script

替换原管理员账号admin替换为当前铁建通登录管理员(eg:id=891569)

cd tomcat-linux/webapps/webroot/WEB-INF/embed/finedb/
vi db.script
:/%s/admin/891569/g
:wq!
1
2
3
4
# 修改数据库

[FINE_USER]表 将admin数据对应的信息全部改为891569

# 重启软报表即可

# 用户授权

采用原报表管理页面授权(前提:部署的报表系统无损或涉及到功能无损)

05报表授权