互联网下银行客户信息及资金安全保障——基于SpringMVC集成Shiro框架维护信息安全

2019-10-15 03:28司婷婷郭文静
网络安全技术与应用 2019年10期
关键词:框架架构对象

◆司婷婷 郭文静

互联网下银行客户信息及资金安全保障——基于SpringMVC集成Shiro框架维护信息安全

◆司婷婷 郭文静

(中国人民大学信息学院 北京 100089)

本文基于SpringMVC与Shiro框架,介绍了银行系统架构中的信息安全性维护方法。设计一种以SpringMVC为基础集成Shiro框架的系统架构,并介绍了shiro框架在用户认证及权限管理方法的原理及应用方法。通过Shiro框架的认证管理器及授权管理器模型,可以降低开发难度,拓展到多种以Java-web为原理的系统开发中。

SpringMVC;Shiro;安全维护;权限管理

1 概述

随着信息技术越来越多地被应用于银行的各项业务,银行面临的信息技术安全隐患也在日益增加。2017年仅Equifax一家机构泄露的美国公民私人信息就高达1.43亿条。《数据泄露水平指数调查报告》显示,2017年全球被泄或被盗的数据为26亿条,同比增加88%,其中涉及金融服务的财务、账号数据泄露数量巨大,这为企业尤其是银行数据保护敲响了警钟[1]。

尽管国家已经出台相关法律法规规范信息安全,但是其权威性和实际管理力度还不够。近年来,使用用户信息从事违法犯罪的行为屡禁不止,如何保障用户信息及资金安全已成为互联网时代银行面临的巨大挑战之一。

目前,大型银行的数据存储相对封闭,直接入侵攻击系统难度大,可能性低,但随着互联网发展,越来越多的应用系统被利用在业务的各个流程中,用户的各种信息通过开放的网络IP进行传输,使得大型商业银行不得不面临网络攻击、病毒侵扰、非法窃取账户信息、客户信息泄露等新的信息安全问题[2]。在信息的高速公路上,需要多方设卡,才能保障用户信息及资金的安全。

除了传统的SQL注入、DDOS等常见攻击,APT高级持续威胁等新型攻击方式也愈演愈烈[3]。

伴随互联网的高速发展,新技术新框架层出不穷,如果在保证安全稳定性的同时应用技术解决现有困境已经成为亟须解决的问题。

本文主要讨论现有WEB框架中较为流行及安全的SpringMVC框架与Shiro安全框架如何集成,在用户认证和权限管理方面做好安全信息的维护。

2 相关技术介绍

2.1 Spring与SpringMVC框架

Spring框架是RodJohnson、JuergenHoeller等开发的用于支持JavaBean构件运行的容器。该框架提供了依赖注入方式的构件组装机制和基于AOP技术的事务和日志管理等功能[4,5]。基于Spring框架的轻量级J2EE架构能够发挥上述两种架构方案的优势,避免它们存在的缺陷,是一种成熟的J2EE应用开发方案[6]。

Spring提供了一个以统一的、高效的方式构造整个应用的方法。Spring可以将单层框架以最佳的组合糅合在一起建立一个连贯的体系,通过IOC和AOP模式整合对象资源。通过Spring框架,开发者无须理解更深层次的耦合调用关系,简单配置即可进行项目开发。可以说Spring是一个提供了更完善开发环境的一个框架,整合了一切优秀资源可对外提供统一服务,可以为POJO(PlainOrdinaryJavaObject)对象提供企业级的服务。

Spring整合了传统的MVC框架,将模型(model)、视图(view)、控制器(controller)与Spring的对象相结合,构建了一个功能全面的Web应用MVC框架。

SpringMVC框架是Spring基于MVC设计模型的用于构建Web应用程序的一种实现。在Web应用开发过程中,SpringMVC框架容纳了包括JSP在内的大量视图技术,可以灵活配置[7]。SpringMVC无须中间整合层来整合,即使用了MVC架构模式的思想,将Web层进行职责解耦。基于请求驱动指的就是使用请求-响应模型,简化了开发的步骤与难度。

2.2 SpringMVC框架的调用过程

SpringMVC由五大核心组件构成,分为:

(1)DispatcherServlet:前端控制器,处理请求的入口。

(2)HandlerMapping:映射器对象,用于管理url与对应controller的映射关系。

(3)Controller:后端控制器,负责处理请求的控制逻辑。

(4)ModelAndView:模型,封装业务处理结果和视图。

(5)ViewResolver:视图解析器,解析对应的视图关系(前缀+view+后缀)。

客户端发出请求后经由DispatcherServlet拦截对请求进行处理,找到对应的请求入口,通过不同的入口找到对应的映射器对象,根据url匹配相应的controller对象,controller对象经由service-dao-service-controller的路径对请求进行业务处理,并将结果封装为ModelAndView,通过view路径匹配ViewResolver,解析需要返回的model对象以及匹配正确的视图页面。

图1 SpringMVC系统调用过程

3 Spring集成Shiro框架

3.1 Shiro框架介绍

Shiro是apache旗下一个开源安全框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架。相对其他同类安全软件,其本身具有良好的健壮性和易用性。Shiro提供了认证、授权、会话管理、加密等功能,可以为学校、企业和政府机关等机构提供信息安全解决方案[8]。同时,Shiro本身集成了许多保护Java应用的特性,如支持Web应用、线程和并发、缓存机制和测试工具等。与其他安全框架相比,Shiro的安全认证和授权方式比较简洁且容易操作,编写的代码量显著减少[9]。在Web项目中使用Shiro就可以非常快速地完成认证、授权等功能的开发,降低系统成本。

图2 Shiro框架架构图

通过Shiro框架进行权限管理时,涉及的一些核心对象,主要包括:

认证管理对象,授权管理对象,会话管理对象,缓存管理对象,加密管理对象以及Realm管理对象(领域对象:负责处理认证和授权领域的数据访问问题)。

(1)Subject(org.apache.Shiro.subject.Subject):与软件交互的一个特定的实体(用户、第三方服务等)。

(2)SecurityManager(org.apache.Shiro.mgt.SecurityManager):Shiro的核心,用来协调管理组件工作。

(3)Authenticator(org.apache.Shiro.authc.Authenticator)

Authenticator负责执行认证操作。

(4)Authorizer(org.apache.Shiro.authz.Authorizer):负责授权检测。

SessionManager(org.apache.Shiro.session.mgt.SessionManager):负责创建并管理用户Session生命周期,提供一个强有力的Session体验。

SessionDAO(org.apache.Shiro.session.mgt.eis.SessionDAO):代表SessionManager执行Session持久(CRUD)动作,它允许任何存储的数据挂接到session管理基础上。

CacheManager(org.apache.Shiro.cache.CacheManager):提供创建缓存实例和管理缓存生命周期的功能。

Cryptography(org.apache.Shiro.crypto.*):提供了加密方式的设计及管理。

Realms(org.apache.Shiro.realm.Realm):是Shiro和应用程序安全数据之间的桥梁。

3.2 Shiro框架认证流程

在实际项目中我们需要控制用户访问资源权限,如部分资源无须登录可以访问,部分资源需要登录验证成功用户信息后可访问,不同权限的用户访问的资源又有所不同,Shiro框架为此类业务提供了一套成熟的解决方案。

在业务流程的认证操作节点中,通过使用Shiro框架,可以对用户名与密码进行核实,进行身份认证,具体的流程为:

(1)系统调用subject的login方法将用户信息提交给SecurityManager。

(2)SecurityManager将认证操作委托给认证器对象Authenticator。

(3)Authenticator将身份信息传递给Realm。

(4)Realm访问数据库获取用户信息然后对信息进行封装并返回。

(5)Authenticator对Realm返回的信息进行身份认证,在认证流程中,Realm的定义至关重要。

3.3 Shiro框架的授权流程

授权一般指允许who(Subject)对what(Resource)执行how(Permission)操作。其中Resource指系统中的资源,一般会对应一个Url,这个Url的表现一般为菜单。Permission是对资源的访问标识(例如user:add,user:update,user:delete,user:view)。

用户进行资源访问时除了需要进行身份认证,授权认证也是必不可少的一步,同一系统下的不同用户应具备不同的资源访问权限,Shiro通过框架权限认证流程可以对不同的资源与权限进行匹配,做到不同权限访问不同资源。具体的权限认证流程为:

(1)系统调用subject相关方法将用户信息(例如isPermitted)递交给SecurityManager。

(2)SecurityManager将权限检测操作委托给Authorizer对象。

(3)Authorizer将用户信息委托给Realm。

(4)Realm访问数据库获取用户权限信息并封装。

(5)Authorizer对用户授权信息进行判定。

在权限认证中,分别可以通过对角色的控制或对资源的控制进行权限认证,其中基于角色的访问(RBAC-Role-BasedAccessControl)控制扩展性相对较差,基于资源的访问控制(RBAC-Resource-BasedAccessControl)扩展性比较好。

在使用RBAC时,实际应用中又分粗粒度权限控制和细粒度的权限控制,粗粒度一般指对资源类型的访问控制(例如用户可以导出所有订单明细),细粒度一般对具体某个资源实例的访问控制(例如只能导出自己工资信息),对于粗粒度的权限控制可以使用过滤器或Spring拦截器都可以,对于细粒度的权限控制一般都会在业务层进行相关判定。

4 银行系统产品架构设计及代码实现

4.1 项目整体架构设计

目前,银行系统基于独特的业务需要及安全性要求,一般使用SpringMVC框架作为基本结构,采用分布式系统架构。融合集成多种成熟互联网技术完成开发,图3为常用架构设计。具体访问流程为:客户端可由通过EasyUI、Bootstrap、Html5等开发的客户端页面发起请求,请求数据采用json格式,利用http传输,通过负载均衡与代理将请求转发到相应的服务器。在服务层中,以SpringMVC为基础框架,配置session处理对话信息,log4j处理日志信息,Shiro进行安全控制,Dubbo实现生产者消费者之间的动态调用,解决强耦合的问题,并提升访问速度,避免高并发可能造成的问题。在数据层,采用Oracle数据库存储数据,使用Mybatis框架访问数据库,并配合Redis减轻数据库压力,提高并发访问能力。

图3 银行系统产品架构设计图

4.2 SpringMVC集成Shiro框架

在整个项目框架中,除SpringMVC框架自身的拦截功能外,主要使用Shiro进行安全性的控制,SpringMVC提供了一套成熟的方法集成Shiro框架,具体实现方法为:

(1)添加Shiro依赖。

添加org.apache.shiro下面的shiro-spring及shiro-ehcachejar包。

(2)配置web.xml文件。

配置org.springframework.web.filter.DelegatingFilterProxy下的shiroFilter过滤器,并定义拦截路径。

(3)添加Spring-Shiro配置文件。

a)引入shiro的核心安全接口。

b)定义要求登录时的连接。

c)配置shiro连接约束,其中对静态资源设置允许匿名访问,剩余其他路径,必须认证通过才可以访问。

d)配置shiro安全管理器。

e)自定义Realm。

f)配置凭证算法匹配器。

g)定义Shiro生命周期处理器。

h)启用Shiro注解权限检查。

(4)构建Realm类。

通过Realm实现基本认证及权限控制,对于不同的业务需求,可以配置多种Realm类,实现多Realm认证。具体实现代码如下:

5 总结

本文不仅介绍了SpringMVC框架与Shiro框架,还基于银行管理系统架构,详细说明了SpringMVC框架与Shiro的集成方法。在实际应用中,此类技术被广泛利用于多种银行系统中,在一定程度上确保了Web应用系统的安全。SpringMVC集成Shiro原理简单,操作简捷,降低开发难度的同时减少了工作量,方便移植到其他Web应用系统。此开发框架对其他Java-Web应用系统的认证和访问控制及安全性控制都有一定的借鉴价值。

[1]赵刚.浅谈银行信息安全存在的问题[J].科技情报开发与经济,2006(21):115-116.

[2]张俊,余跃.大型商业银行核心业务系统网络攻击防控的探索与实践[J].中国金融电脑,2019(03):70-71.

[3]林鹏,张志峰,孙英明.“互联网+”时代的信息安全研究[J].金融电子化,2018(7).

[4]JohnsonR,HoellerJ. J2EE Development without EJB[M].北京:电子工业出版社,2005.

[5]胡启敏,薛锦云,钟林辉.依赖注入技术及其执行过程的形式化描述[J].燕山大学学报,2005(7).

[6]胡启敏,薛锦云,钟林辉.基于Spring框架的轻量级J2EE架构与应用[J].计算机工程与应用,2008(02):115-118.

[7]AndrewH.Object-orientedanalysisanddesign[M].北京:机械工业出版社,2003:17-56.

[8]高秀慧,高建华.基于J2EE框架的Web应用可靠性研究[J].计算机工程与设计,2013,34(4):1270-1275.

[9]LIX,XUEY.Asurveyonserver-sideapproachestosecuringWebapplications[J].ACMComputingSurveys,2014,46(4):1-29.

猜你喜欢
框架架构对象
基于FPGA的RNN硬件加速架构
有机框架材料的后合成交换
框架
晒晒全国优秀县委书记拟推荐对象
功能架构在电子电气架构开发中的应用和实践
构建富有活力和效率的社会治理架构
攻略对象的心思好难猜
VoLTE时代智能网架构演进研究
区间对象族的可镇定性分析
关于原点对称的不规则Gabor框架的构造