Acegi系列(一), 配置出问题了...

Acegi的配置出问题了:


        1, 登录后所有连接都能访问. -->
        2, 同样的IP,同样的浏览器中可以在不Logout情况下连续登录.       
        3, 即使不登录也能访问里面的连接.

找到Acegi的配置文件看了又看,那么长的配置,那么多的Bean,又是那么长的类名,一头雾水,这可从哪下手呢?Google,Baidu里搜索了一番也没有找到合适的答案.倒是找到以前写的博客,这让我想起以前为了解决登录类型问题时就多多少少研究过Acegi,不过当时也只是单独从配置文件来看的,根本没没接触它背后的实现.那个问题(登录类型)解决后就把Acegi又放下了.

       看来现在又到了跟Acegi交手的时候了.

       与上次不同,这次交手更多地是从其背后的实现上来理解它的配置.

        Acegi是解决Java里提供安全保护的开源框架,它的核心内容就是认证(Authentication)与授权(Authorization).那认证是什么授权又是什么?第一次听到认证这人词,就不由自主地想到了现在四六级证,毕业证学位证啥的,这里的认证与我们常的证有什么联系?一点点的联系也没有?
        结合自己以前的理解再好好的搜了下后,得出如下的认识:
        安全(Security)保护是为系统提供一套机制,以便让系统的功能只让一部分人操作.这个生活中有很多的实例,比如说我们给门加锁,加了锁后就只能是有钥匙的人才能正常的进去.而认证与授权正是安全保护所应用的两个手段(一时想不到什么更贴切的词,就先用"手段"吧),JavaEE里有个专门的缩写JAAS就是说这个事儿,其中认证是围绕"你是谁?"这个问题展开的,而授权是围绕"你可以做什么"展开的.

        生活中有什么形象的例子来帮助我们理解认证与授权两个有些怪怪的词儿呢?当然有的,以我们用ATM取钱为例,我们插入银行卡,输入密码,密码正确后我们才可以进行像查询,取钱,转帐这样的操作.对密码的验证就是看看你是不是银行卡的Owner,这个"看看"的动作在安全保护里就叫作"认证"了,认证成功后,系统记下你的信息,这样我们就可以做实打实的事了,这个实打实的事的操作是有权限的,我们肯定不希望别人来取我们的钱,只能通过"认证"这一关的人才可能取钱.

        上面的例子有些简化或者说一些步骤合在一起了.大家都认为"取钱"这一操作是需要保护,也没有对用户是否登录的验证(因为我们取钱时与AMT的Session很短,也就是取完一次后就退出了).而在软件里做安全保护时,这两个虽然不是最重要的,但也是必须的.

        于是有了下面示意图:AcegiProcess

 

        (1)处的"Is secure resource"对应着我们取钱时默认的规则,也就是对每一个请求Acegi先判断下要访问的Resource是否是受保护的.
        (2)处的Principal exists也就是的取钱时对用户是否登录的验证.若没有登录就到(3)处的Login.若是已登录的,就直接到(4)处的Principal has authorized role判断.
        (3)处的Login OK对应着取钱时的输入密码及对其的验证,若成功就到(4)处的判断.
        (4)处的判读是看当前用户是否有操作的授权,在取钱时,ATM机会自动地把那些没权操作的选项隐藏起来,可选的操作当然也都是有权的了.

        这样经过这么一系列的筛选,我们终于可以取到钱了.

        这是对Acegi的一个大致了解,但上图所示的四步具体是怎么实现的以及可以通过什么配置来达到这种层层设防的效果呢?在下篇博客中我将试着做些解释.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值