双击此处添加文字
单点登录
来源: | 作者:佚名 | 发布时间: 2020-12-29 | 4976 次浏览 | 分享到:

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=&timestamp=


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配置值(默认不超时)