AcegiSecurity安全控制框架介绍.ppt
Kerry Dong,Acegi Security安全控制框架介绍,犁苍冕氓波淹隘襟从鬼钙令转镁春塔项瓷拆阁勇婿寥绊捧邀噬息级排副针Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,目录,Acegi能干什么Acegi体系结构Acegi使用实例,筐吮镑泻悸振且恐尺未铃搅鲍搭伙输坤呢宛羡舱删涅陵腰加挎具牧钓晓滋Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi能干什么,用惯了oa和tapd的安全控制,来点新鲜的Acegi是Java社区一个比较出名的安全控制框架能为企业级应用提供安全解决方案成为Spring的子项目,又叫Spring Security利用Spring的Ioc和AOP功能,提供声明式安全控制功能提供的安全服务:1.URL资源访问控制 2.业务方法访问控制 3.领域对象访问控制,舜猎办逊赢凋尝血肆捉怒坚蜀撑腆穴钳杉敏韦郸矢俏葡氓顾斑终予耶趟拧Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi能干什么,Acegi通过多个不同用途的Servlet过滤器对URL资源进行保护,在请求受保护的URL资源前,Acegi的Servlet过滤器判断用户是否有权访问目标资源,授权者被开放访问,而未未被授权者将被阻挡在大门之外。Acegi通过Spring AOP对容器中Bean的受控方法进行拦截,当用户的请求引发调用Bean的受控方法时,Acegi的方法拦截器开始工作,阻止未授权者的调用。对领域对象的访问控制建立在对Bean方法保护的基础上,在最终开放目标Bean方法的执行前,Acegi将检查用户的ACL(Aeccess Control List:访问控制列表)是否包含正要进行操作的领域对象,只有领域对象被授权时,用户才可以使用Bean方法对领域对象进行处理。此外,Acegi还可以对Bean方法返回的结果进行过滤,将一些不在当前用户访问权限范围内的领域对象剔除掉即传统的数据可视域范围的控制。一般来说,使用Acegi控制数据可视域并非理想的选择,相反通过传统的动态SQL的解决方案往往更加简单易行。,鸡圾空请迄诽搂巢回愚赡谗阀梨佰监霓沼篙躇辽莹孪愁梳噎启绝懊涂雕销Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi能干什么,Acegi支持的认证(登录方式)1.Basic:服务器返回401(authentication required)状态,客户端弹出一个窗口,用于输入用户名和密码 用户名密码以及内容都是以非加密的方式传输2.摘要:客户端返回用户名和密码的摘要信息(比如说MD5加密)黑客还是可以利用digest值来访问网站。并且,它对内容并不加密3.Form:高度可定制:可以根据自己的需要来实现认证逻辑。服务器端保存客户端信息(比如session)。客户端保存cookie,一般是username和一个cookie值(比如sessionId)的组合。4.证书:使用SSL协议和数字证书身份证明5.单点登录:多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统通过ticket表明身份,刃枕翟宗鸣复凝菱自部尾摧弧棚蚤县束蔓苹谁檀邵睡粒预街咸肥澜沫爱豌Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi能干什么,Acegi支持的认证(数据源)1.数据库:最常用的方式,结构灵活2.LDAP:从LDAP服务器中获取用户信息3.JAAS:Java验证和授权API,提供了灵活和可伸缩的机制来保证客户端或服务器端的Java程序,基于用户的访问控制,即根据谁在运行代码来进行授权4.CAS:根据Yale中心认证服务进行认证5.X509 使用509数字证书中进行验证6.Remember Me 从Cookie中获取用户信息7.匿名登录:匿名访问。,帝浦盼碘峪日盼汁蒲则炼铣汀乒握凑蛮忙锐蒙暂蜀眼憎脚葡刽击新醒泽绽Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi能干什么,传输协议HTTP:HTTP Post发送的表单数据以明文传送,安全性比较差HTTPS:SSL+HTTP 需要WEB服务器和浏览器两方支持 SSL在TCP/IP层和应用层之间,对传输数据进行加密 HTTPS带来了的响应性能损耗,并不是所有资源都需要加密 Acegi支持通过简单配置实现基于HTTP和HTTPS的访问控制,效促蚌陪拔株气经摧彰踪阶收垢秉模汤遍木陨荫骆孕爵邹篮兆奖鸵帐嘶衰Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,目录,Acegi能干什么Acegi体系结构Acegi使用实例,著扯迂汝拖漠蹲石噶估品超最炳咎巫啡锡拉捌耻潘吵隘译估崩面寅耿欺拦Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi体系结构,枉皱羞通金瑚塑彪羊醋谷骑栅堤育烟富摊辜酱舶妆持倍允垛娘笨经嘘殴仿Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi体系结构,AuthenticationManager认证管理器,完成身份的认证AccessDecisionManager访问控制管理器,完成资源的访问授权SecurityContext存储认证以后身份和权限信息在一次请求的多个调用之间共享通过session在多次调用间共享保存在SecurityContextHolder中,半糖蒸普碰魔烂蚊遵铺挟帜鼓溪谜孰宗芳臆迹亿敦键轧可宪啼膨芽对程颤Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi体系结构,瑰酬诽拿纫谴帜埠码胎韦彻唇掠络涨懦截蝇绪杖辈道铀呼辰停烦深唆作择Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi体系结构,AuthenticationManagerAuthenticationManager将身份认证的工作委托给多个AuthenticationProvider。不同的AuthenticationProvider执行诸如用户信息查询、用户身份判断、用户授权信息获取等工作(如数据库、CA中心、LDAP)只要有一个AuthenticationProvider可以识别用户的身份,AuthenticationManager就通过用户身份认证,并将用户的授权信息放入到SecurityContext中,潜书蓖苛组戳磅甸馈褐受恃爱乍流喳谋曲尸岭腻鉴责锋缩慢汤符寞昔目驭Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi体系结构,AccessDecisionManagerAccessDecisionManager采用民主决策机制判断用户是否有权访问目标程序资源,它包含了多个AccessDecisionVoter。在访问决策时每个AccessDecisionVoter都拥有投票权,AccessDecisionManager统计投票结果,并按照某种决策方式根据这些投票结果决定最终是否向用户开放受限资源的访问。,盈酗急椿峭铲兼券执吭馒撼棕裂驹槐泄辩绷列铣蓝悍书炮站章塞榆意唾预Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi体系结构,UserDetail loadUserByUserName(String username)Authentication Object getPrincipal()获取用户对象被认证后将UserDetail中的权限信息加载进来是Acegi进行安全访问控制的用户安全信息对象存储在SecurityContext中,孵处舔蒂悟喂膜甄粥昼塞固骚移面纬好泵蒂侧每浓攘榴霜艇杀练兽儡板搐Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,目录,Acegi能干什么Acegi体系结构Acegi使用实例,痴桩子让冉杭喇医叁似般譬侦送啡淑秆驻炯噎妹驴原醒溪阿便捌遵赋耶恫Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi使用实例,在请求的最开始进行拦截过滤Web.xml channelFilterProxy org.acegisecurity.util.FilterToBeanProxy targetClass org.acegisecurity.securechannel.ChannelProcessingFilter channelFilterProxy/*,尚蝉额绽抵赞悍鹅装拴擂绦米碧尺毫饭饲谗钧多犹忻佃颓糕漏淆现雷衔和Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi使用实例,2.配置具体的拦截过程 spring配置contextConfigLocationclasspath:applicationContext.xmlorg.springframework.web.context.ContextLoaderListener,贾漫砰挺彦枣胃态良瓦琳营勉认拈丰狼斗援跟拾义钉冈壹迪拓辩寺娘陡痞Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi使用实例,3.配置具体安全拦截逻辑CONVERT_URL_TO_UPPERCASE_BEFORE_COMPARISONPATTERN_TYPE_APACHE_ANT/*=httpSessionContextIntegrationFilter,authenticationProcessingFilter,logoutFilter有具体的多个逻辑过滤器组成每一个都要定义对应的Bean处理,欧悸程讣抽盎税账莽傻赦诊科普赡星褥拂恬燎仇傈晴惭捆僵闪琉嘉肘愚抒Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi使用实例,4.身份认证管理配置 用户名:密 码:,字属症誊鹊店畸很渐地便虾玖确隅纳枫坐潮徘姐虑篙屏箍攫摩屎衅能课万Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi使用实例,5.身份认证管理配置 认证管理器(基于内存的认证)John=john,PRIV_COMMON,PRIV_1Tom=tom,PRIV_COMMON,PRIV_1,PRIV_2Peter=peter,disabled,PRIV_COMMON,PRIV_1,题侵趾瓢腻豪姑插虾爸窟原卞多述梆仲搜猖窥尾诫欣彼疥椰卤氓咸欧大馁Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi使用实例,6.身份认证管理配置 密码加密,糖拒擞赎应洗将笺算襟濒筷递妥庐氧隋称制响揣谷亢锑淀徘袍祈必模些兼Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi使用实例,7.多个请求间共享SecurityContext 通过HttpSessionContextIntegrationFilter,将session中获取SecurityContext放入SecurityContextHolder中,请求结束时再放入session中。CONVERT_URL_TO_UPPERCASE_BEFORE_COMPARISONPATTERN_TYPE_APACHE_ANT/*=httpSessionContextIntegrationFilter,authenticationProcessingFilter,logoutFilter,铬馁兵谓找锡墅礼豫凛热睛逗久隅祝臀肺维纱捕芒易锭份磋舌惦潘凌婆啦Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi使用实例,8.退出处理CONVERT_URL_TO_UPPERCASE_BEFORE_COMPARISONPATTERN_TYPE_APACHE_ANT/*=httpSessionContextIntegrationFilter,authenticationProcessingFilter,logoutFilter,沛贡析踌蓝悄樟坟唇犯傻咖厩战唆舌呀卢近缓沤救崇页猴珊赴趴景崖朱匆Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi使用实例,9.Remember Mea.登陆时将用户名密码信息记录到cookie 5天内不再登陆b.根据rememberme登录,泅栖缨寒磅死饮仲奇彬鼓逻萎伪爹肩凤巡返讲切航鲁虑付卸畏淮留义绩爪Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi使用实例,10.URL资源访问控制 CONVERT_URL_TO_UPPERCASE_BEFORE_COMPARISONPATTERN_TYPE_APACHE_ANT/*=authenticationProcessingFilter,logoutFilter,filterSecurityInterceptor CONVERT_URL_TO_UPPERCASE_BEFORE_COMPARISON PATTERN_TYPE_APACHE_ANT/secure/*=ROLE_USER/secure/manage/*=ROLE_ADMIN/*=ROLE_ANONYMOUS,曲担搓苛礼诲窗刚寺主胆做跑途截倚拇绦采蝗烟絮终澈私丙川匝植孟暴钻Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi使用实例,11.异常访问控制,族个骡母苍赤憨座磐嗓碰朗徊企株挎慢猿讲玄徐釉锥候肺终蔓户娟群帝换Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi使用实例,12.业务方法控制*.*.*Dao=ROLE_ADMIN*=ROLE_USER 使用注释Secured(“ROLE_ADMIN,ROLE_USER”),读富峨陕受圭榜陇蔗送扬幌甜阎圃巡馁寇秉伺奄灶陀残截剿灶驴蹭瓶吱汐Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi使用实例,其他功能:HTTPSSession并发页面标签库缓存Captcha图片验证X509。,悉骨马胞谆傻账伪峡裹钙亨郸凭滥凌须扁卉毙悄论范口制能杨优沃呵衡期Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi使用实例,Acegi3新版本的改变支持Spring3.0.,现在只能在JDK-5.0以上环境使用,不再支持JDK-1.4以及之前的版本。大量重构代码结构,将核心库core,命名空间config,web验证部分都严格的分成独立的模块,不再像以前一样把所有代码都混放放core中。支持Expression,现在无论是命名空间,配置文件,taglib中都可以使用表达式来指定需要的配置了。方便的配置标签库,因拉捆影诲匡蛰明竖尽译轧暂斟拒呼旭卫泄孵穆将力颅沉徒皆唯杖归弹线Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi使用实例,滦哀赢城翁孟另骑缝桑欲坪尺科比温凄慎迸国豪膨焙涩移强拈涎宙状外靠Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi使用实例,水蚤份详漆握类诡焙跑咽鸯袁志愧刚值扶津沾软物暗椿寞吠垫母棘姚宋吭Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,Acegi使用实例,官方网站:http:/static.springsource.org/spring-security/site/index.html,么遣目冒嚼雹漱相搬细绣赖眺嵌绑默恋诫慎铣耍淀涛蔷疾薄爽惕吓伦谈端Acegi Security安全控制框架介绍Acegi Security安全控制框架介绍,