1.概述
针对企业内部信息技术的迅猛发展,内部的应用系统越来越多,由于这些系统相互独立,用户在使用每个系统之前都必须按照相应的系统身份进行登录,为此用户需记住每一个系统的用户名和密码,这给用户带来了不少麻烦。特别是随着系统的增多,出错的可能性就会增加,收到非法截获和破坏的可能性也会增大,安全性就会相应降低。
1.1 应用场景
针对于这种情况,在BI项目整体规划中也就有了单点登录系统,也可将BI通过单点登录集成在OA/第三方系统中,这样就能减少那些不必要的麻烦,安全性也能够相应的提升。 实现方法有以下三种:
1.2 功能介绍
Token方式、username+userpsw方式、与泛微集成(PC端集成)
1.3 流程图
2.操作流程
2.1通过Token方式
用户信息都在Token中 示例:
https://localhost:3000/design?fid=d0228d90-aef7-11e7-8c52-db0d50424002&
token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJmdXNlcm5hbWUiOiJhZG1pbiIsImZwcm9qaWQiOiIxIiwia2
V5IjoiNDQ2MjRkMmM1YmQ2ZTcwMDY0ODQ2ZTllMzE0YjM4
NDMiLCJ0aW1lcyI6IjIwMTktMTEtMTUgMTE6Mzc6MzciLCJpYX
QiOjE1MTA3MTcwNTd9.dbSfzQdTjHPQIzqiTFxeVZ1T83oqNDOqmmbv7vG1IZo
token获取方式
打开报表浏览页,按F12打开浏览器开发者工具,再刷新一遍报表,即可从开发者工具下图处获取到token
2.2 通过username+ userpsw方式
密码为MD5加密
示例①:
http://192.168.0.66:8080/chart?fisHomePage=true&username=admin&userpsw=21232f297a57a5a743894a0e4a801fc3
示例②:
https://localhost:3000/design?fid=d0228d90-aef7-11e7-8c52-db0d50424002&username=admin&userpsw=21232f297a57a5a743894a0e4a801fc3&fprojid=1
http://120.236.240.186:8080/design?fid=rpt556c857020f211e891bdc724298104c5&username=demo&userpsw=fe01ce2a7fbac8fafaed7c982a04e229&fprojid=1
用户和密码:demo/demo
2.3 与泛微集成(PC端集成)
通过username+ userpsw方式
示例:(泛微系统中集成需根据实际情况设置,该例只作为参考)
单点登录地址:http://192.168.0.66:8080/chart?fisHomePage=true&username=admin&userpsw=21232f297a57a5a743894a0e4a801fc3
通过token+ uid方式实现
(1)泛微中定义地址:
http://oa-test.company.cc:/interface/SD/jsp/OaredirectLogin.jsp?otherUrl=http://bi- test.company.cc:8080/chart&sys=land&type=0
说明:oa-test.company.cc 是OA泛微域名地址
bi-test.company.cc:8080 是BI域名登陆地址
(2)然后点击后跳转地址为:
http://bi-test.company.cc:8080/chart/? token=82d0aa7d3714d80b54e647681d9509c3&uid=SYSADMIN&t=1513324475
appkey: 系统标识对应的Key值,由OA提供(例如: U2FsdGVkX195zejeVG15PoO7Nlf9q4D34rt76yhnL
)
(2.1)t:精确到秒的Unix时间戳;应与OA系统时间差不超过5分钟,否则视为超时;
(2.2)uid:用户名(转换为大写)
(2.3)token:由泛微MD5(appkey|t|uid)加密生成
(3)BI系统验证token是否合法
BI系统根据token=MD5(appkey|t|uid)验证是否合法,如果合法取uid权限
appkey取Cross_SBI_API目录config.js中的pckey节点值
注意:BI用户名必须全部小写
示例:http://bi-test.company.cc:8080/?token=82d0aa7d3714d80b54e647681d9509c3&uid=SYSADMIN&t=1513324475
2.4 与泛微集成(移动端APP集成)
(1)泛微中定义地址:
Yxw:泛微APP中添加应用和URL地址。(客户方管理人员添加)
http://oa.company.cc:/interface/SD/jsp/OaredirectLogin.jsp?otherUrl=http://bi-test.company.cc:8080/chart
(2)然后点击后跳转地址为:
http://bi-test.company.cc:8080/chart/? loginid=test&stamp=1513816307706&token=f3a2f4e6e64418a752c55f8c761aa9de122564c2
appkey: 系统标识对应的Key值,由OA提供(例如:U2FsdGVkX195zejeVG15PoO7Nlf9q4D34rt0okijn
)
stamp: 时间戳(1970年1月1日到生成时间的毫秒数)
loginid: 用户登录手机版的用户名
token:由泛微SHA1(appkey+loginid+stamp),SHA1为加密算法生成
(3)BI系统验证token是否合法
BI系统根据token= SHA1(appkey+loginid+stamp)验证是否合法,如果合法取loginid权限
appkey取Cross_SBI_API目录config.js中的appkey节点值
示例:
http://bi-test.company.cc:8080/chart/? loginid=test&stamp=1513816307706&token=f3a2f4e6e64418a752c55f8c761aa9de122564c2
效果展示:
2.5 code类型单点登录(单点登录推荐此安全性更高的Code单点登录方式)
code单点地址固定格式如下:
http://BI服务外网ip:端口/IntegratedLogin?code=&gotourl=&username=×tamp=
2.5.1 单个报表访问示例:
http://192.168.0.148:3000/IntegratedLogin?code=9a6b81add72b380d6dddc2f92cfeeb0f
&username=hq& gotourl=http%3A%2F%2F192.168.0.148%3A3000%2Fdesign%3Ffmenuid
%3D0%26fid%3Dceb7ad1ce025496e89fac49696979d50&timeStamp=1685450597773
2.5.2 BI首页访问示例:
http://192.168.0.148:3000/IntegratedLogin?code=1408bd0faaaf8e664666c46e1b3ee827&username=hq&timeStamp=1685450597773
2.5.3 说明
①gotourl参数值需要转换为UrlEncode编码(在线编码地址:http://www.jsons.cn/urlencode/)
②如果只是局域网内使用,ip可以为内网ip
③username为需要登录的bi用户名称
④gotourl(可选)参数定义最终跳转的目的地址(默认跳转到首页)
⑤timeStamp为当前时间戳(单位:毫秒)
⑥code为username,gotourl(原始格式不加码),timeStamp,key(密钥,对应application.properties文件中loginkey配置值)拼成字符串进行md5加密
⑦code只能使用一次
⑧超时时间(code生成时间和使用时间差)对应application.properties文件中login-timeout-second配置值(默认不超时)