自助服务系统让校园网申请更便捷
2016-02-05陶晋
文/陶晋
自助服务系统让校园网申请更便捷
文/陶晋
在当前国内高校的数字化建设中, 网络服务始终是最基础最重要的部分,如何使师生能更方便地申请和使用网络,同时规范网络申请的管理流程,上海财经大学网络中心对此问题做了专门研究,设计并建设了校园网络自助服务系统。
对上海财经大学的学生来说,以往,如要申请校园网需首先登录网上平台提交申请订单,然后管理员根据订单在校内Radius服务器中添加对应的账号。随后根据用户申请的账号类型划分不同的VLAN,因此管理员还需手工找出用户的网络端口,登录到对应的网络交换机修改VLAN标识号。用户提交完订单后还需到学生服务中心pos机上去刷校园卡,全部完成后通知用户到系统中去获取最新的账号密码。整个网络服务的申请流程不够智能化,需要建设一个高效自动化的服务系统,既可以简化用户的申请过程,获得更好的使用体验,也可以减轻网络管理员的工作量,提高管理效率。
上海财经大学网络中心设计并建设了一套校园网络自助服务系统。该系统整合了相关公司的智能管理平台,用于网络账号的管理。同时,为师生提供了电信和联通多个运营商的接入选择,针对不同的接入网络划分不同的VLAN虚拟局域网,因此系统也整合了VLAN的自动切换功能,用于接入网络的转化。考虑到移动终端的日益普及,系统除了传统的B/S网页架构,还结合上海财经大学微信企业号部署了移动端的应用接入,并设计建设了支付平台,支持用户通过网上微信支付。将部分重要的网络监控集成进微信应用,通过微信通知管理员及时进行处理。
图1 相关系统框架下设计的接口方案
校园网自助服务系统Radius解决方案
上海财经大学的有线网络使用了802.1x认证协议,Radius采用了相关公司的IMC智能管理平台。在这样的系统框架下,设计了接口方案,如图1所示。自助服务系统后台采用Java开发,通过SOAP协议进行跨语言、跨操作系统的互操作。智能管理平台采用了SOA基于服务的架构,设计采用了Apache Axis2的WebService框架。
下面描述下接口调用的具体过程:
1.首先使用Axis2中的ConfigurationContextFactory类获得配置上下文,创建一个用于保持Session状态的ServiceClient实体,使多个Service可在同一个Session中处理。
2.调用login(imcEndpointStr,sc)接口登录IMC服务器,使用stub.toOM(login, true)方法构造SOAP报文,然后通过stub转换为OMElement,再使用之前的ServiceClient对象发送该SOAP报文。发送结束后,还会收到回应SOAP报文,用Stub创建的回应实体Response来解析这个SOAP报文。在对操作员的身份验证及ACL合法性检查通过之后,才能调用后续的其他接口进行业务处理。
3.接下来就可以使用同样的方式调用其他接口进行相应的业务处理了。业务功能接口中,提供了接入用户的增删改查等功能,还包括按账号进行服务申请或服务注销等操作。
4.当客户端程序退出或是客户端注销时,需调用logout(imcEndpointStr,sc)接口,进行操作员注销。
如图2所示,考虑到客户端在与IMC服务器通信过程中需对用户的账号密码等敏感数据进行加密,为了保证用户可鉴别性和交互信息的安全性,设计采用了非对称密钥的加密体制,即公钥和私钥。由IMC自己生成client.ks和service.ks,service.ks通过client.cer获得client的公钥,client.ks通过service.cer获取到server的公钥,同时完成双方的cer信息认可。之后我们就可以对传输的SOAP报文进行签名和3DES加密。
在整合了IMC服务接口模块后,自助服务系统就能对用户账号进行智能的管理了,在前端门户系统中增加对后台Radius服务器操作的支持,既方便了广大师生用户维护自己的账号,又减轻了网络管理员的工作负担,提高了管理效率。
图2 设计采用了非对称密钥的加密体制
校园网自助服务系统网络切换方案
在网络切换方案中,首先在之前所述的Radius服务器上通过接口得到认证数据包,然后绑定用户名与发送上来的终端设备MAC物理地址间的对应关系。接着需要遍历整个校园网的网络交换机,找到上述MAC与交换机网络端口间的关系。通过MAC这个桥梁,就能实时得到用户与网络端口的映射表,以及该端口上的VLAN标识号。最后系统就能自动根据用户申请的某个具体网络业务,配置相应的VLAN,进行网络切换。
在自助服务系统中,设计通过SNMP网络管理协议去获取MAC与网络设备端口的映像表。采用该协议是考虑到它是当前网络管理的标准,绝大多数设备厂商都提供了对它的支持,且该协议基于UDP,面向无连接,传输数据效率较高。而上海财经大学校园网本身网络设备众多,且需不时地进行扫描更新,因此在这样的体系架构下采用此协议比较合适。
选择SNMP4J开源包来实现底层协议传输。找到MIB树中的dot1qTpFdbTable表,经过某个网络设备转发的单播物理地址信息被保存在该表中,dot1qTpFdbTable还包含了dot1qTpFdbPort和dot1qTpFdbStatus等只读属性的OID节点,分别表示终端设备MAC物理地址,交换机端口,端口上的VLAN标识号等。系统对这张表进行读取,将SNMP协议报文中的PDU类型设置成GETNEXT,不断进行轮询直到读取表的最后一行。
在设置网络设备中的VLAN时,选择了dot1qPortVlanTable表中的dot1qPvid节点进行操作。该OID节点表示经过该设备端口转发的tagged和ntagged帧的VLAN标识号,是可读写的。找到该表中需要设置的某行端口,将SNMP协议报文中的PDU类型设置成SET,数据类型为Integer32,执行写入操作。最后操作完成后还需对该设备上的MIB配置保存节点进行写入操作,将RAM内存中的配置文件写入到NVRAM启动配置文件中,以免RAM中的配置内容断电后丢失。
另外,在设置完成后,也需要定期将前面网络设备各端口上的VLAN信息进行保存,当设备出现故障时方便网络管理员进行替换。对此,设计采用了Tftp协议,当系统中保存网络设备配置的线程被唤醒时,在服务器上启动该协议的服务端守护进程,自助服务系统则通过Telnet协议登录到各网络设备中,执行保存到该Tftp服务器的操作。
网络设备管理软件与移动微信应用的协同配合
根据上文所述,自助服务系统会根据用户申请的不同网络业务,自动在网络设备端口上配置对应的VLAN标识。在绝大多数情况下,这种模式都是正确的。但不能排除某些意外的场景,比如用户名本身有问题等,这时就需要管理员的干预了。对此,专门设计了解决方案,在学校的微信企业号应用中添加了一个网络管理模块,只有拥有该权限的用户方可进入,该模块对一般用户是不可见的。网络管理员在应用菜单中手工输入用户名等信息,系统会根据网络管理协议的扫描结果找出与之对应的网络设备端口。然后管理员就可根据用户的实际情况,在微信菜单提供的几种网络业务切换选项中进行操作。
另外,将设备端口上的进出流量及广播组播等监控参数集成了进来。通过对MIB树中ifXTable表里的ifHCInOctets、ifHCOutOctets、ifHCInBroadcastPkts、ifHCOutBroadcastPkts等参数进行定时采样,获取网络设备端口上各数值在一段时间内的增量,进而得出这段时间内网络设备端口上的流量及广播包数据。该表将原先的32位类型数据升级到了64位,扩充了对高流量网络设备端口的支持。当系统通过监控发现某设备端口流量出现异常或是广播组播包数目异常,就会触发服务告警,通过微信消息推送到相关人员进行处理,同时该微信网络管理应用菜单中也包含了对该端口的断开等操作,由管理员根据实际情况决定是否断开某个异常端口,以保证校园网整体的稳定运行。利用该系统,曾经成功处理过一起故障。当时系统侦测到某个交换机设备端口上广播包数目异常,在5秒内收到30多万个广播数据包,通过微信消息通知,网络管理员在1分钟内就锁定了该端口。然后通过观察,发现该端口下存在环路。因为大量的数据包需要处理,进而导致核心设备CPU使用率上升到了百分之六十多,全网出现故障。网络管理员当即断开该端口,随后整网恢复正常。正因为微信通知及时,操作方便,整个故障从出现到解决没有超过2分钟。
上述管理模块是提供给网络管理员使用的,随着移动微信的日益普及,上海财经大学微信企业号的注册师生用户数已有16000多人,普及率超过95%,因此在设计自助服务系统时通过建立消息型应用和配置自定义菜单,将自助服务系统用户端的功能和网络事件的通知也集成到了学校的微信企业号中,给一般用户使用。
用户点击该微信企业号的自助服务应用,通过手机相册上传身份证照片,补全个人信息,然后根据自己需要来选择电信或联通的上网卡,能直接使用手机微信来完成支付,系统后台处理完成之后会将账号密码通过微信消息通知该用户,完成整个流程。整个过程可随身通过手机在1至2分钟内完成,简化了之前繁琐的申请流程,给广大师生带来了极大方便。在日后使用过程中,用户如遗忘了自己的账号,也随时可通过该微信应用找到自己名下所有的账户信息。当某些网络网段出现故障需要维护,系统也会提前通过消息通知给相关用户,让他们获知当前网络出现故障将中断多长时间,管理员正在尽快解决,增加了网络服务的透明度。
微信网上支付方案
支付方面,原先采用校园一卡通在pos机上刷卡的方式。效率低下,需要人工干预,往往造成每年学生入学高峰期间长时间的排队。因此在设计自助服务系统的支付功能时,摒弃了原先的做法,统一使用微信网上支付的方案。在架构中添加了支付平台这一层,它将前端业务商户系统和后端微信支付系统隔离开来,对业务系统来说只需向支付平台发送支付请求即可,不用关心财务账号归属等细节问题,降低了系统的耦合性。在自助服务系统中统一使用POST提交表单的方式,将参数传递到支付平台,支付平台支持两种模式JSAPI和微信扫码支付。使用JSAPI用户可以在微信内打开网页,调起微信支付控件后输入密码完成订单支付,支付平台返回支付结果并跳转到指定的页面。而微信扫码支付中支付平台会返回订单号和二维码字符串给自助服务系统,由系统将该字符串生成二维码并显示在网页上,供用户扫描二维码进行支付。
支付平台的输入及回调参数方面,设计了业务系统接入码、业务系统订单号、商品ID与描述、收费金额、交费人编号姓名、跳转页面的URL、时间戳等参数,以及通过md5方式对上述参数进行数据加密。平台还设计提供了对账统计功能,可通过api实时获取微信支付平台的信息,包括交易的金额与笔数、交易时间、支付方式等信息,与自助服务系统进行比对,核实两者之间的数据是否匹配一致。
图3是设计的自助服务系统后台商户JSAPI支付的整个流程。由系统生成图文消息,展示给用户。用户打开微信客户端点击该图文消息,在该客户端网页内请求生成支付订单,并向支付平台发送支付请求,再由支付平台向微信支付系统发起支付请求。微信支付系统生成预付单并将该信息返回支付平台,支付平台根据预付单信息生成支付参数并将参数返回微信客户端。
随后用户在微信客户端发起支付并将参数传递给微信支付系统,支付系统校验参数合法性和授权,返回微信客户端校验结果,并要求支付授权。微信客户端提示用户输入密码,用户确认订单信息并支付,客户端将支付授权发送给微信支付系统。微信支付系统异步通知支付平台支付结果,同时支付平台通知微信支付系统处理的结果,支付系统再通知微信客户端支付结果,并发送微信消息提示。支付平台异步通知自助服务系统支付结果,同时通知微信客户端跳转到指定页面完成整个流程。
图3 设计的自助服务系统后台商户JSAPI支付的流程
自助服务系统应用效果
通过设计建设自助服务系统,上海财经大学网络信息中心将网络申请维护过程中一些原本孤立繁琐的操作,包括管理员对Radius账号的管理、查找文档并登录到网络交换机中修改配置、对网络环境的监控、人工进行pos刷卡缴费、定时统计核实账务情况、通知用户绑定的账号信息等过程进行了优化整合,实现了自动化和智能化,且以该系统为核心统一进行管理。
(作者单位为上海财经大学教育技术中心)