APP下载

门户网站集成第三方系统单点登录

2019-06-22杨世旺刘波

视听 2019年5期
关键词:前台门户网站单点

杨世旺 刘波

(广西广播电视技术中心)

一、引言

JEECMSv9.3平台是江西金磊科技发展有限公司旗下的产品,它是一款集PC互联网、移动互联网和微信网站于一体的网站群管理系统,新门户网站基于此平台进行开发。

单位内部业务系统众多,门户网站作为单位对外开放展示的窗口,将各个业务系统入口整合到门户网站中非常有必要,可解决了各业务系统重复登录的问题。在进行业务系统单点登录整合过程中,发现即使JEECMSv9.3框架提供了统一的单点登录接口,但由于单位各业务系统均已不在维护期,且系统接口不统一或未提供单点登录验证接口,所以只能通过技术手段对平台代码进行二次开发,实现各业务系统单点登录整合功能。

由于整合过程是单向整合,各业务系统无法针对单点登录进行接口调整,所以产生不少技术问题。

二、功能实现

(一)技术分析

通过分析JEECMSv9.3平台代码得知,该平台核心框架为FreeMarker+hibernate+Spirng的mvc分层架构,平台后台采用了Maven开发技术,网站管理后台采用VUE技术,网站前台采用html脚本结合jquery等技术实现。门户网站要实现单点登录功能,需改动网站前台代码和平台后台代码。由于平台的高度可配置性,网站前台代码和后台代码的交互非常灵活,前台的所有链接都需要和后台进行交互,因此对网站代码的熟悉程度对于单点登录功能的开发非常关键。

系统后台采用eclipse集成管理工具作为java代码编译环境,前台网站代码由于都是通过平台动态生成的,不适合采用任何开发工具去编译开发,所以只能采用文本编辑的方式去调整。此外,网站前台采用html静态脚本进行展示,而网站后台采用java进行相应基本逻辑处理,因此选择通过jquery技术实现前后台的同步、异步交互,来协助实现单点登录功能的集成。

(二)实现逻辑

集成单点登录的目的是实现各业务系统的免登录进入,其基本设计逻辑为:

点击单点登录入口,先检测门户网站是否已登录,如未登录,则进行提示并跳转到门户登录页面;

如果门户网站已登录,下一步则是判断该业务系统是否已进行绑定,如未绑定,则自动跳转到绑定页面;

如果业务系统已绑定,则在记录此次登录的相关信息后,直接跳转进入业务系统。

基本设计逻辑流程展示如图1。

图1 基本设计流程

记录业务系统的绑定、登录等信息时需要和数据库进行交互,保存业务系统的名称、用户名、密码、绑定时间、登录时间、登录次数等,详细的数据表设计如表1。

表1 表结构设计

(三)前台实现

1.跳转判断

当用户点击业务系统入口时,系统需要将该业务系统的服务器网址、端口、验证方法等参数传递到后台进行验证,为了方便这些参数读取,将参数以json对象的形式,保存在js配置文件中。

门户网站业务系统入口使用html技术中的标签进行展示,首先将标签中的href属性设置成(#)空锚点,使其在单击时不做跳转刷新,而在标签单击(onclick)方法功能中,添加绑定js中自定义的ITool.sso函数,如:

在绑定的ITool.sso方法中,通过使用jquery的ajax技术,实现与java后台进行交互,获取门户网站登录、业务系统绑定信息,并在交互成功后,通过逻辑判断,设定跳转链接,跳转到登录页面、绑定页面或直接单点登录进入业务系统,实现逻辑如图2。

2.绑定操作

图2 页面跳转判断

当判断业务系统未进行绑定时,系统自动跳转到绑定页面,系统绑定页面借鉴了网站登录页面,需要用户输入绑定系统的用户名和密码,然后点击绑定按钮,系统将通过ajax方法和后台交互,并进行第三方跨域提交验证。在和第三方系统进行跨域登录认证时,经过多次尝试,由于第三方业务系统不一定支持ajax异步认证的方式,所以该认证统一采用后台认证的方式。

由于不同的业务系统的跨域认证会返回不同的认证结果,在系统认证设计时,通过动态js方法,实现不同的业务系统的认证跳转。

在进行第三方跨域认证时,使用后台java的URLConnection类,读取请求URL,并返回请求结果的页面内容信息,通过对页面内容进行解析,判断认证是否成功,如图3。

图3 第三方跨域登录认证

判定是否绑定成功,如绑定成功,则直接跳转单点登录进入业务系统,如失败,则在页面上已红色字体提示错误信息。

3.登录跳转

在绑定成功或者判定用户已绑定业务系统后,需要使用前台jquery技术,动态创建所需提交的元素标签,模拟业务系统的form表单提交方法,实现逻辑如图4。

4.绑定管理

在用户对业务系统进行绑定后,可能会存在所绑定的业务系统用户名或者密码已修改的情况,针对这种情况,前台增加了绑定管理功能,实现对业务系统的解除绑定、重新绑定等功能。

(四)后台实现

1.代码逻辑

通过分析平台后台代码,将单点登录后台java代码的实现附加在平台用户管理模块;后台代码主要需要实现用户网站登录状态、绑定状态获取,页面跳转参数获取及调整等。

图4 登录跳转

用户网站登录状态、绑定状态获取,首先获取网站登录用户信息,如获取不到,则返回用户登录状态为false,如能获取,则根据用户ID和参数到数据库读取绑定信息,如已绑定,则进一步返回绑定的用户名和密码等相关信息。

在进行第三方跨域用户绑定认证时,采用后台java的URLConnection类,实现方法中,除了传递请求的httpUrl外,还需传递进来编码方式和超时时间,否则会造成返回结果乱码或在网络不通畅时网页卡顿的现象。

此外,为了保证代码的严谨性、可读性,在进行后台java编码时,需严格遵守平台的后台编码规范,这对系统的后续升级维护至关重要。

2.数据库操作

单点登录的绑定信息,最终都会保存到数据库表sso_user中,实现逻辑设计如下:

当第一次绑定时,判断是否已绑定过,如已绑定,则修改绑定状态,如未绑定,则记录绑定系统编号、用户ID、绑定用户名称、加密后的绑定用户密码,绑定时间等;

用户进行单点登录时,记录用户的登录次数,登录时间等;

进行解除绑定时,修改该绑定的状态、最后修改时间。

(五)重点难点

第一、在进行单点登录第三方跨域认证时,经过多次尝试,最终选定使用后台java的URLConnection类来实现,因为第三方业务系统不一定支持ajax异步认证的方式,所以验证时是直接调用业务系统的登录方法来实现,所以无法使用前台ajax请求来获取认证请求结果;

第二、在进行第三方系统登录跳转时,模拟form表单进行提交时,需要注意提交页面的编码方式,做到动态修改成第三方网站所需的编码方式,在提交后,再将网站编码方式修改回来,否则会造成原网站乱码或功能异常;

第三、当遇到实在无法单向去对第三方系统进行判断验证或者登录时,最好的方式还是通过和相关技术人员进行沟通,获取第三方系统的相关信息,如在和对接集成时,是否要对参数进行加密操作等,这集成前是无法预知的,所以及时的沟通非常重要。

三、总结

目前单位的门户网站OA办公、监控平台两个单点登录接口已经完成编码和测试工作,程序已可正常运行;如后续需要增加其他第三方接口时,可以有所借鉴或者直接复用已有的接口,减少不必要的重复工作,提高工作效率。

猜你喜欢

前台门户网站单点
历元间载波相位差分的GPS/BDS精密单点测速算法
中式琴房设计方案
庞鲜、周衍耀室内设计作品
公路电助力 从幕后走向前台
孟晚舟:从前台打杂到华为副总裁
数字电视地面传输用单频网与单点发射的效果比较
YouTube
前后向平滑算法在精密单点定位/ INS 紧组合数据后处理中的应用
中国省级教育门户网站排行榜等
中国省级教育门户网站排行榜等