问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何使用acegi做权限控制?

发布网友 发布时间:2022-04-11 22:35

我来回答

2个回答

热心网友 时间:2022-04-12 00:04

Acegi安全框架
简介
Acegi是为基于Spring的应用提供的声明式安全框架。它通过在Spring的应用上下文中配置一系列的Bean完成安全设置,完成利用了Spring提供的依赖注入和IoC编程方式。
为了保证Web应用的安全需求,Acegi使用过滤器拦截servlet请求,并执行认证来执行安全措施。
Acegi通过安全方法级调用来执行更低层次的安全需求。通过使用Spring的AOP,Acegi使用代理对象来确保用户有适当的权限来调用被保护的方法。
无论是较高层次的Web应用的安全,还是较低层次的方法级安全,Acegi都可以通过四个主要组件完成安全需求。

Security Interceptor 用于拦截那些需要访问受保护资源的请求。
Authentication Managers 用于验证主体的身份,如你的principal(典型的如用户名)和你的Credentials(典型的如密码)。能过验证,可以证明Who are you 。
Access Decision Mangers 用于决定已验证通过的principal是否有访问受保护资源的特权。
Run-as Managers 尽管你通过了验证和并得到授权可以访问资源,但可能还会有更多的安全约束:例如,你可能得到了查看某个Web页面的权力,但是页面中可以还有比Web页面安全级别更高的对象。Run-as manager 正是用于这方面的验证。尽管这方面的需求不多,但Acegi通过Run-as Managers可以做到这一点。

管理验证
Acegi定义了AuthenticationManager接口,用于安全验证,同时提供了代理类ProviderManager以及它的相关实现,它们可以完成大部分相应的功能,而不需要我们自己开发。

通过Acegi和CAS实现SSO
耶鲁大学的CAS是SSO的一个解决方案。CAS的细节内容已经超出了本文的讨论范围。为了理解Acegi如何与基于CAS验证的应用相结合的问题,有必要看一下一个典型的CAS验证例子是如何工作的。详见前面研究过的CAS的文档。

你应该理解的一个关键概念就是这个受保护的应用根本不处理用户的Credentials。当用户打算登录应时时,实际上他们登录的是CAS Server.。应用根本不知道用户的Credentials。唯一要做的就是验证用户的ticket是否有效,这个ticket是由CAS Server 发放的。这是一件好事,因为它意味着只有一个应用(即CAS)负责处理用户的验证。
当CAS与Acegi配合使用时,Acegi要做的就是在应用上校验CAS ticket的工作。这使得应用本身可以不管CAS的身份验证过程。
Acegi通过CasAuthenticationProvider类达到这个目的,它不关心用户名和密码,而是接受一个CAS Ticket作为它的Credentials。除了配置CasAuthenticationProvider类以外,还需要在Spring的配置文件中配置其它几个辅助类,它们分别是.CasProxyDecider及其子类。
访问控制
身份验证只是Acegi的第一步。一旦Acegi知道用户是谁,接下来它必须决定用户是否有权访问被保护的资源。这是通过 Access Decision Managers完成的。Acegi定义了net.sf.acegisecurity.AccessDecisionManager接口,它的supports()方法决定该应用是否有权做出访问控制,decide()方法最终是否可以访问,如果不可以访问该资源,应抛出AccessDeniedException。
AccessDecisionManager有三个实现类,分别是net.sf.acegisecurity.vote.AffirmativeBased,net.sf.acegisecurity.vote.ConsensusBased
net.sf.acegisecurity.vote.UnanimousBased。AccessDecisionManager做出决定并不是通过它自己,而是把轮询一个或更多年对象,这些对象对这个用户是否有权访问受保护的资源进行投票。一旦得到所有的投票,AccessDecisionManager会对这些投票进行计数,并做出最终决定。

保护Web应用
Acegi对Web应用的保护是强依赖于过滤器的。这些过滤器在请求被应用处理之前进行拦截,并进行安全控制。根据应用的实际需求,Acegi可以使用6个过滤器,它们分别是
过滤器 功能
Channel-processing filter 确保请求是通过SSL提交的(HTTPS)
Authentication-processing filter 接受验证请求,并将其导向验证管理器进行验证
CAS-processing filter 接受CAS服务的ticket作为经过CAS验证的证明
HTTP Basic authorization filter Processes authentication performed using HTTP Basic authentication
Integration filter Handles storage of authentication between requests (in HTTP Session,for example)
Security enforcement filter Ensures that a user has been authenticated and meets the property
authorization requirements to access a secured web resource

接受一个请求以后,它以下面的顺序进行。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
母爱作文(围绕一句话来写)900字 月经期能喝冰糖沙梨水? 石家庄火车站骗钱 五等分的新娘手游汉化安卓游戏官方下载 昆明看守所那个看守所好在 成建军行政拘留 青岛贵捷充换电设备成套服务有限公司怎么样? 合肥贵捷商贸有限责任公司怎么样? 南京贵捷物资有限公司怎么样? 上海贵捷电气有限公司产品用途 Acegi(十二):anonymousProcessingFilter有什么好玩的? 求Cocos2d-X 3.0游戏开发实战详解/吴亚峰,闫敬,于复兴编著 书中光盘内容。急需 想学一下cocos2d开发,根据教程搭建的环境,但是运行cocos.py 创建项目的时候闪退,闪退之前的内容如下 如何学习cocos2dx开发游戏,具体学习路径 cocos2dx 用js开发的吗 使用cocos2d-x开发游戏,至少需要怎样的电脑配置? cocos2d-x里面的CCString有什么用 cocos2dx有没有写入plist文件的API吗 cocos2dx CCFileUtils 或者CCDictionary如何读取文件 Cocos2d-x编程学习资料哪个平台有,自学能学会吗? 如何删除cocos2d-x?或者如何升级cocos2d-x的版本 请教cocos2dx怎么读取一个TXT文件并显示出来 cocos2dx怎么读取配置文件 iOS游戏编程之从零开始—Cocos2d-x与cocos2d引擎游戏开发的内容简介 cocos2d-x是什么 魔兽世界中的宠物有什么用? 老鼠用法文\德文\日文\韩文\俄文分别怎么说? 什么软件可打开后.rat linux下如何安装和使用ratproxy .rat文件怎么加密 如何配置2个securitymanager acegi中的授权有什么好处,已经认证了为什么还要授权 Spring技术内幕的作品目录 Acegi实干什么用的 jsp插入数据的时候,页面空白,怎么解决? 玩英雄联盟老跳频是怎么回事 spring acegi安全框架 退出时怎么进行友好提示 jenkins 配置ldap问题 Spring中Bean扩展模式有哪些? spring security需要登录后才能访问的路径的权限配置是怎么样的 nginx日志切割脚本怎么运行 Linux下Nginx如何切割访问日志? nginx服务器 日志怎么分开存放呢 nginx几百兆的日志怎么切割?切割工具一开就死。我没权限在服务器上切割。 军哥,是否可以参考张宴的博客吧NGINX的日志切割功能加上 nginx日志切割脚本,手动执行没问题,计划任务执行得到的日志文件为空,请问这是什么问题啊 nginx 日志50g怎么切割 vb删除access中符合条件的记录 access 怎么删除多个表中同一项 某一行记录 比如我要把这两张表中的F000045950 这多行数据删除 该怎么弄 access如何删除某一字段中的一个记录