集成spring security到现有项目的问题

qiandl 2010-03-10

我现在的一个WEB项目,它是基于struts2+spring+hibernate框架的,当前的需求是需要拥有WEB security方面功能(session management, 账户密码MD5加密等)以及权限管理。
在网上搜索了中发现了spring security框架,想集成到现有项目,但是有一些疑问,如下:
spring security总的来说包括两部分内容,一个用户登录的校验和权限认证两块。
目前我们项目已经原有的用户登录模块,并且表结构和Sprng security的默认表结构差异很大,如果我只是想用spring security的权限认证功能,而不用登陆校验功能是否可行(但是仍希望用到session management和用户密码MD5加密功能)?我看到spring security中有根据bean方法进行权限管理的部分,我打算用此来实现一些功能的权限管理。
我看spring security的实现原理是通过一些filter实现,是不是我去掉其中的用户校验相关filter就可以?

希望能得到各位的建议,如果有其他满足我需求的框架也请告诉我。
非常感谢!

fansofjava 2010-03-11
“不用登陆校验功能”这样虽然可行,但有些麻烦,因为验证登陆时会记录当前用户的一些信息,如果不用,你就要手动放入这些信息。

“表结构和Sprng security的默认表结构差异很大”
我觉得这个并没多大影响,只与user与role有关,你只要修改User与Role类即可。
metadmin 2010-03-12
SS的用户名、密码校验完毕后,好像把user-role-permission的关系Load出来了。

如果表差异非常大,建议使用自己的filter,完成上述功能,加到chain里面。
qiandl 2010-03-12
谢谢上面两位的建议和思路,看来方向是改造SS的用户校验filter,把用户权限的信息放到指定地方。

另外,今天上面领导要求集成几个portal为single sign-on,我调研了一些开源产品后,发现基本上都没有提供很好的用户管理portal,这样就得需要自己再去开发一套了。。。哪位朋友熟悉SSO产品的,能否向我推荐一下?开源和商用的都可以的。
要求产品能够提供晚上的用户管理portal(用户增删改,密码复杂度管理,用户权限管理,用户密码管理--不能循环重复使用、间隔一段时间强制用户修改密码、连续登录失败后用户状态失效等等),并且能够和Spring Securiry集成。
非常感谢!
metadmin 2010-03-12
客户点名要ss的,还提出这么多需求?
metadmin 2010-03-12
用户增删改可以采用接口模式,也就是需求变化的时候,编写新的页面就好了。其他的,实现起来也有难度,慢慢来吧。。。。 痛苦着。。。。 
fansofjava 2010-03-12
"要求产品能够提供晚上的用户管理portal(用户增删改,密码复杂度管理,用户权限管理,用户密码管理--不能循环重复使用、间隔一段时间强制用户修改密码、连续登录失败后用户状态失效等等),并且能够和Spring Securiry集成。 "

除非那些大公司的门户产品,如果没钱,还是没别想这些吧。现在免费的门户没一个好用的,都很不完善。即使有,也不可能与最新ss进行集成,一般都是自己搞了一套规则在里面。
qiandl 2010-03-13
谢谢楼上两位的帮助,我之前的只言片语可能没有把问题说清楚,不好意思,我现在重新说明一下,希望两位能多多给意见。
项目的背景是,我们现在一个项目要卖给一个大公司,大公司对产品的要求比较高,需要符合他们的一系列标准,总结下来有两个方面需要提高
1,对于WEB层面需要安全性要求,提了一堆策略,结果调研后spring security基本满足需求,并且原来系统也是基于spring的,所以决定集成spring security来解决问题。
2,对于系统构架方面要求有一个单独的Authentication Server(因为这个项目会提供3个portal系统),一方面是基于安全性考虑,一方面也是SSO的考虑。
因为市场部门承诺的是4月份要部署,所以时间很紧。我在调研了一些SSO开源框架后发现基本上没有提供完善的用户管理portal,这也就是说我们需要自己去开发一套,目前的情况是不太现实的。

所以最后和领导讨论的结果是希望找一个功能比较完善的SSO产品,开源和商用的均可(商用的价格要在2-3W RMB左右,最好是开源的。),并且能和Spring Secruriy比较好的集成。
昨天看了一下cisco radius,维护portal基本上满足要求,但是管理portal的页面不太好定制,而且没有和Spring Secruriy集成接口。

希望大家能给我一些建议,无论是SSO方面的,还是系统构架方面的。
非常感谢。
blueblood79 2010-03-14
反复看了你的留言,感觉还是很模糊。
我只能按照自己的理解,顺便说两句:
   1.acegi只是一个框架,具体的业务功能还是需要你自己扩展的
   2.acegi提供认证和授权机制,认证这块比较常见的是读数据库和读配置文件,读数据库主要是验证用户的密码,如果验证通过后,根据用户的角色加载用户的权限,然后可以在acegi提供的filter中,配置此用户需要去的页面。
   3.用户增删改,密码复杂度管理,用户权限管理,用户密码管理--不能循环重复使用、间隔一段时间强制用户修改密码、连续登录失败后用户状态失效等等 这些都是你的业务逻辑,密码管理完全可以在验证密码的判断,然后用户存在上述的问题,之间引导到需要去的页面。
 
     上面只是我的一点浅见,不过信息实在是太模糊了,如果需要,可以发邮件(ran.taor@alipay.com),大家交流一下
qiandl 2010-03-14
谢谢楼上的回复。由于水平有限,我尽量把我的问题表述的更清楚一些,请多包涵。
目前的项目状况是:
存在三个单独的portal,每个portal都有自己的用户数据和权限管理,并且web安全在开发时没有最够的重视,需要提高。

客户的需求:
1,客户有一系列WEB安全标准:为了提升portal的安全性,我们打算引用SS来提高WEB的安全性,以及增强现有web的权限管理,因为发现SS的权限管理还是很方便的。

2,客户要求实现SSO(因为是三个portal):原来三个portal都是相互独立的,包括用户增删改等功能都是在自己的WEB中。
基于客户的需求,我们目前的想法是引用一个SSO的框架,集中管理用户的基本信息(用户名,密码,邮件地址,用户状态等),我们希望框架能提供一个用户维护的portal,这样可以提供给客户去管理用户。
由于客户对安全性的要求,所以这个用户管理portal就会涉及到密码复杂度,首次登录必须重置密码等功能。这里的权限管理指的是创建用户等用户管理的权限,并不是具体业务权限,具体的业务权限会在web应用中用SS来管理实现。

我调研了一些开源框架都没有提供类似的维护portal,目前的开源框架都是只提供了统一认证的登录页面。由于时间的限制,所以自己单独去开发一套不太现实。因为之前没有开源和商用SSO框架的应用经验,所以希望大家如果知道能给我一些建议。
如果觉得我的架构想法有问题,希望也能多多指点一下。
非常感谢。

Global site tag (gtag.js) - Google Analytics