系统集成/单点登录

实现背景

        随着企业内部信息技术的迅猛发展,内部的应用系统越来越多,由于这些系统相互独立,用户在使用每个系统之前都必须按照相应的系统身份进行登录,为此用户需记住每一个系统的用户名和密码,这给用户带来了不少麻烦。特别是随着系统的增多,出错的可能性就会增加,收到非法截获和破坏的可能性也会增大,安全性就会相应降低。针对于这种情况,在BI项目整体规划中也就有了单点登录系统,也可将BI通过单点登录集成在OA/第三方系统中,这样就能减少那些不必要的麻烦,安全性也能够相应的提升。
        实现方法有以下三种:

方法一:通过Token方式

(1)用户信息都在Token中
示例:
https://localhost:3000/design?fid=d0228d90-aef7-11e7-8c52-db0d50424002&
token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJmdXNlcm5hbWUiOiJhZG1pbiIsImZwcm9qaWQiOiIxIiwia2
V5IjoiNDQ2MjRkMmM1YmQ2ZTcwMDY0ODQ2ZTllMzE0YjM4
NDMiLCJ0aW1lcyI6IjIwMTktMTEtMTUgMTE6Mzc6MzciLCJpYX
QiOjE1MTA3MTcwNTd9.dbSfzQdTjHPQIzqiTFxeVZ1T83oqNDOqmmbv7vG1IZo

方法二:username+ userpsw

(1)密码为MD5加密
示例:
http://120.236.240.186:8080/design?fid=rpt556c857020f211e891bdc724298104c5&username=demo
&userpsw=fe01ce2a7fbac8fafaed7c982a04e229&fprojid=1
用户和密码:demo/demo

方法三:与泛微集成(PC端集成)

通过token+ uid方式实现
1.泛微中定义地址:
说明: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
)
(1)t:精确到的Unix时间戳;应与OA系统时间差不超过5分钟,否则视为超时;
(2)uid:用户名(转换为大写)
(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

方法三:与泛微集成(移动端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节点值
示例: