提问
 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,极速登录

FineReport和泛微OA(Ecology)的单点登录集成方案

kloud 社区微信达人实名认证 番薯互助团队 互助新人
发表于 2017-1-17 09:03 | 显示全部楼层 |取消关注该作者的回复
       最近论坛中出现了好多好多关于帆软报表和泛微OA的集成问题,均出现在“单点登录”上。技术方案区有个传说哥的发的《FineReport与泛微OA(e-cology)集成方案》(传送门http://bbs.fanruan.com/thread-67325-1-1.html),这个文档中介绍了一些FR和泛微集成的背景、价值等,还介绍了FR和OA的深度集成的方案。但是并没有提到单点登录的集成方案。现在小弟在此献把丑,把FR和OA单点登录集成方式做个分享。

1.  同步用户信息

       单点登录的基础,就是用户信息的同步,FR的决策系统中有一个很牛B的功能,可以自动帮助用户实现用户信息同步。具体菜单 决策系统 - 管理系统 - 用户管理。点击用户管理菜单后,右侧页面右上角有一个“设置”按钮,如下图:
96400587d65012a5f9.png

       点击“设置”,则会出现如下图的界面。我们按照下图中的配置进行对应的配置。
62934587d654eb1635.png


认证方式:选择平台内置认证。单点登录的集成是通过平台内置认证进行集成的。
用户同步数据集:选择“已开启”
服务器数据集:服务器数据集是需要去帆软报表的开发工具上进行配置。如下图:
81193587d663f6ab59.png

14304587d666f3d055.png

进入设计器,点击菜单 服务器 - 服务器数据集,新增一个数据集,选择OA的数据源,写入sql“select * from hrmresource”,保存即可。
保存后,我们是需要去本地的开发环境上找到对应的xml,复制到决策系统服务器端,才可使用。本地开发环境的xml路径见上图“保存路径”后面的对应文件路径。
通过EditPlus编辑器打开datasource.xml文件后,找到“OA用户”这块xml代码。将这块代码复制到服务器上的datasource.xml上,路径和/WebReport/WEB-INF/resources/datasource.xml,粘贴格式参见你本地的开发环境。如下图
93390587d6755d6d77.png

注:不要用记事本打开xml,保存可能会损坏xml。更新服务器文件时,做好备份。
继续配置用户同步
用户名:loginid
姓名:lastname
密码:password,注意,OA的密码已经进行了32位大写的MD5加密。
加密方式:不设置密码加密
其他选填。
点击保存,OK,决策系统已经开始在后台执行了用户同步了。我们只需要在决策系统的的用户管理上查看同步的用户信息结果。
第一步完成。。。。。。

2.  泛微OA的登录方式和如何编写单点登录
了解单点登录之前,我们先了解下OA的登录方式,泛微OA的登录方式有2种。第一种,是通过页面登录进OA,第二种,是通过E-Message上的快捷方式进入到OA。见图
90757587d6345506df.png

这样的话,如果我们实现FR和泛微OA集成的单点登录,以上的两种登录方式均要实现这个效果。很多用户和泛微的实施团队会在OA的login.jsp上编写单点登录代码。在login.jsp上编写单点登录代码只能解决第一种登录方式“通过页面登录进OA”,而通过E-Message上的快捷方式进入到OA是不能实现帆软决策系统的单点登录的。OK,如果要实现两种登录方式的单点登录,我们可以在泛微OA登录后页面上编写单点登录代码。泛微OA登录后页面的jsp为“/ecology/wui/theme/ecology7/page/main.jsp”。
第一步,引入js,代码
  1. <script type="text/javascript" src="http://***.***.***.***:**/WebReport/ReportServer?op=emb&resource=finereport.js"></script>  
复制代码

68771587d6a314a94a.png
第二步,获取当前用户的登录名和密码的,
java代码:
  1.   String nodeSql ="select loginid,password from HrmResource where id =  " + user.getUID();
  2.         RecordSet.executeSql(nodeSql);
  3.         if (RecordSet.next()){
  4.                 userpasswordstr = RecordSet.getString("password");     
  5.                 loginidstr = RecordSet.getString("loginid");
  6.         }
复制代码

从上面的代码我们可以很明显的看到,这个和sql和rs的取值字段 跟我们之前配置用户同步信息对应的表和字段是一样的。
第三步,编写js代码。 由于我们的
代码:
  1. var username =FR.cjkEncode("<%=loginidstr%>");  
  2. var password ="<%=userpasswordstr%>";
  3. password = password.toUpperCase();//把密码小写字母转换成大写字母
  4. var scr = document.createElement("iframe");               
  5. scr.src = "http://***.***.***.***:**/WebReport/ReportServer?op=touchfs&username="+username+"&__redirect__=false&password="+password;
复制代码

这里我们是采用iframe的跨域单点登录方式,所以在JS中需要创建一个iframe,然后在iframe上设置SRC。
第四步,保存main.jsp,备份服务器的main.jsp,更新main.jsp。
第五步,重新登录OA,单点登录成功。校验方式,在OA的浏览器上,新建一个页签,输入“http://***.***.***.***:**/WebReport/ReportServer?op=fs”,如果出现如下图,且登录名为自己的用户,则表示单点登录成功,FR决策系统的用户session创建成功。但是。。。。。。。。。但是还没完。
8863587d6c054a1b8.png


3. 在泛微OA上配置决策系统入口
我们完成了第2点的配置,但是OA用户通过什么方式进入决策平台呢。提供2个方式供参考。
第一,用系统管理员配置自定义左侧菜单。
第二,设置门户元素。
以上两个方式所有的对应链接为“http://***.***.***.***:**/WebReport/ReportServer?op=fs”

以上3点完成后,FR和OA的集成工作大功告成,撒花,切蛋糕,要奖金了。哈哈哈哈!
小弟语文成绩不好,如果有表述不清楚的,可以在下方留言反馈唷。我再对文本进行完善。




点评

请问点评和评分有什么区别  发表于 2017-2-20 15:25

评分

参与人数 5F豆 +674 F币 +20 收起 理由
w1748587889 + 5 太棒了,给你32个赞,么么哒
luker + 1 感谢分享
windy_gui + 1
hbyanghua + 1 感谢分享
传说哥 + 666 + 20 感谢分享

查看全部评分

此帖共有 1041 位番薯登录后查看

已有2人关注本帖

qwert13075645088

本帖被以下淘专辑推荐:

回复

使用道具 举报

贝塔 实名认证 番薯互助团队 互助新人
发表于 2017-1-17 09:49 | 显示全部楼层 |取消关注该作者的回复
厉害哟,学习了
来自苹果客户端来自苹果客户端
  • 评论

回复 支持 反对

使用道具 举报

snake9003 帆软员工 互助新人、助理编辑
发表于 2017-1-17 14:16 | 显示全部楼层 |取消关注该作者的回复
总结很到位啊,而且是结合实际使用的,很有参考价值
  • 评论

回复 支持 1 反对 0

使用道具 举报

随便来看看 实名认证 渐入佳境(Lv2)
发表于 2017-1-17 16:08 | 显示全部楼层 |取消关注该作者的回复
楼主666,目前我们实现的方式及效果跟你们的是一样的,但是有个问题,在同步用户数据时,不设置加密方式,那么帆软的移动端 数据分析 就不能登陆了(因为密码都是密文) ;针对此种现象你们是怎么处理的啊?  如果在同步时选则了加密方式,那么从emessage  就不能显示单点了。
  收起(1)
  • kloud kloud

    你的这个问题我们昨天也正在考虑,我们初步考虑是在泛微的E-Mobile上做单点登录。这样的话是需要做一些处理。
    1. 在决策平台上安装H5插件。
    2. 编辑H5的单点登录JSP,并部署在Ecology上。
    3. 在E-Mobile后台,添加E-Mobile插件,并发布插件。
    完成三步即可。
    但是E-Mobile屏蔽了H5报表的上部分的导航按钮,这样一来操作起来也不便。
    我们正在尝试,还有和帆软技术在沟通这块,如果有解决方案我再进行详细分享。
    如果想一同尝试在E-Mobile上处理单点登录可以与我联系。
    2017-01-17 16:17 评论
  • 评论

回复 支持 反对

使用道具 举报

Ku_wan  初学乍练(Lv1)
发表于 2017-1-18 15:12 | 显示全部楼层 |取消关注该作者的回复
这个方式有一些限制的适用条件。我们是域集成登录,根本没法从数据库中获取密码,只能在登录前进行单点登录。另外,如何解决session 过期的问题也是头疼的问题。此外,移动端如何单点登录,也是需要解决的。
  收起(1)
  • kloud kloud

    1. session过期问题应该是部署帆软报表的tomcat需要配置下session超时时间。我们OA的超时时间是12个小时,帆软的超时时间是30分钟,可能OA挂一段时间,帆软就超时了。会有这样的情况。配置下tomcat的超时时间。
    2. 移动端的单点登录我有了解决方案,但是操作不便捷,进入一个报表,如果要看另外一张报表,就得重新进入功能,而不是返回到上一级菜单。这个问题暂时还没解决。
    2017-01-18 20:18 评论
  • 评论

回复 支持 反对

使用道具 举报

964044879  初学乍练(Lv1)
发表于 2017-1-19 10:06 | 显示全部楼层 |取消关注该作者的回复
请问这是哪个版本的泛微oa?e-cology8.0吗?
  • 评论

回复 支持 反对

使用道具 举报

nothingwither  渐入佳境(Lv2)
发表于 2017-1-20 11:10 | 显示全部楼层 |取消关注该作者的回复
总结的很好,感觉对我还是有非常大的帮助
  • 评论

回复 支持 反对

使用道具 举报

xiesb 社区微信达人 初学乍练(Lv1)
发表于 2017-1-20 13:32 | 显示全部楼层 |取消关注该作者的回复
厉害哟,学习厉害哟,学习厉害哟,学习
  • 评论

回复 支持 反对

使用道具 举报

newqiang 实名认证 初学乍练(Lv1)
发表于 2017-1-20 14:58 | 显示全部楼层 |取消关注该作者的回复

来自安卓客户端来自安卓客户端
  • 评论

回复 支持 反对

使用道具 举报

sdpubang  初学乍练(Lv1)
发表于 2017-2-14 16:19 | 显示全部楼层 |取消关注该作者的回复
请问,这句sql,select loginid,password from HrmResource where id =  " + user.getUID()。
获取的password不是加密的吗,数据库里的password是加密的。
加密的password怎么传到url里作为参数?url里的password参数应该传入明文密码吧。
所以这个方法真的可行吗?有人试过吗?
  • 评论

回复 支持 反对

使用道具 举报

luker  禁止发言
发表于 2017-2-15 10:01 | 显示全部楼层 |取消关注该作者的回复
厉害哟,学习厉害哟,学习厉害哟,学习
  • 评论

回复 支持 反对

使用道具 举报

jjchen  渐入佳境(Lv2)
发表于 2017-3-1 08:59 | 显示全部楼层 |取消关注该作者的回复
OA是用LDAP登录的,hrmresource表里面保存的密码没有实际意义,都是1
这种情况要怎么实现利用泛微OA单点登录??
  • 评论

回复 支持 反对

使用道具 举报

wdmcwfnh  初学乍练(Lv1)
发表于 2017-3-14 17:06 | 显示全部楼层 |取消关注该作者的回复
我按照这个进行实施怎么报错啊。~~
  • 评论

回复 支持 1 反对 0

使用道具 举报

zhurizeng  初学乍练(Lv1)
发表于 2017-4-14 21:08 | 显示全部楼层 |取消关注该作者的回复
厉害哟,学习了
  • 评论

回复 支持 反对

使用道具 举报

cuining  初学乍练(Lv1)
发表于 2017-4-19 10:07 | 显示全部楼层 |取消关注该作者的回复
lihai
  • 评论

回复 支持 反对

使用道具 举报

demofr  初学乍练(Lv1)
发表于 2017-6-18 16:06 | 显示全部楼层 |取消关注该作者的回复
请问第二步,获取当前用户的登录名和密码
添加代码的位置在哪里呢?
  • 评论

回复 支持 反对

使用道具 举报

Christ  初学乍练(Lv1)
发表于 2017-6-21 11:44 | 显示全部楼层 |取消关注该作者的回复
太厉害了
  • 评论

回复 支持 反对

使用道具 举报

Christ  初学乍练(Lv1)
发表于 2017-6-21 12:25 | 显示全部楼层 |取消关注该作者的回复
请问对于e-cology6.0,这个main.jsp文件在哪里
  收起(1)
  • bb15211141062 bb15211141062 : 我也不知道在哪?
    2018-06-22 17:19 评论
  • 评论

回复 支持 反对

使用道具 举报

martian6125 社区微信达人 初学乍练(Lv1)
发表于 2017-6-22 11:37 | 显示全部楼层 |取消关注该作者的回复
留个脚印,以备后用,谢谢楼主!
  • 评论

回复 支持 反对

使用道具 举报

ZWtest123 实名认证 渐入佳境(Lv2)
发表于 2017-7-27 11:07 | 显示全部楼层 |取消关注该作者的回复
刚好公司准备安装泛微和帆软,还在想怎么解决问题呢,结果直接给答案了。
  • 评论

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

Copyright © 帆软|联系帆软| 联系管理员@兔子酱|免责声明|手机版|帆软社区 ( 苏ICP备14031611号-3 )

GMT+8, 2018-8-14 22:03 , Processed in 1.553978 second(s), 258 queries , Gzip On.

返回顶部 返回列表