网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > DotNet > XML&Web > Acegi安全系统的配置  

Acegi安全系统的配置

2006-12-31  作者:bitsCN整理  来源:CSDN  点评 投稿 收藏

           Acegi 的配置看起来非常复杂,但事实上在实际项目的安全应用中我们并不需要那么多功能,清楚的了解Acegi配置中各项的功能,有助于我们灵活的运用Acegi于实践中。

2.1 在Web.xml中的配置 网管联盟bitsCN@com

1)  FilterToBeanProxy
  Acegi通过实现了Filter接口的FilterToBeanProxy提供一种特殊的使用Servlet Filter的方式,它委托Spring中的Bean -- FilterChainProxy来完成过滤功能,这好处是简化了web.xml的配置,并且充分利用了Spring IOC的优势。FilterChainProxy包含了处理认证过程的filter列表,每个filter都有各自的功能。

网管u家u.bitscn@com

    <filter>
        <filter-name>Acegi Filter Chain Proxy</filter-name>
        <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>
        <init-param>
            <param-name>targetClass</param-name>
            <param-value>org.acegisecurity.util.FilterChainProxy</param-value>
        </init-param>
    </filter>

网管网www_bitscn_com

2) filter-mapping
  <filter-mapping>限定了FilterToBeanProxy的URL匹配模式,只有*.do和*.jsp和/j_acegi_security_check 的请求才会受到权限控制,对javascript,css等不限制。 网管联盟bitsCN_com

   <filter-mapping>
      <filter-name>Acegi Filter Chain Proxy</filter-name>
      <url-pattern>*.do</url-pattern>
    </filter-mapping>
   
    <filter-mapping>
      <filter-name>Acegi Filter Chain Proxy</filter-name>
      <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
   
    <filter-mapping>
      <filter-name>Acegi Filter Chain Proxy</filter-name>
      <url-pattern>/j_acegi_security_check</url-pattern>
</filter-mapping> 网管联盟bitsCN@com

3) HttpSessionEventPublisher
  <listener>的HttpSessionEventPublisher用于发布HttpSessionApplicationEvents和HttpSessionDestroyedEvent事件给spring的applicationcontext。 网管下载dl.bitscn.com

    <listener>
<listener-class>org.acegisecurity.ui.session.HttpSessionEventPublisher</listener-class>
    </listener>
网管u家u.bitsCN.com


2.2 在applicationContext-acegi-security.xml中

2.2.1 FILTER CHAIN

  FilterChainProxy会按顺序来调用这些filter,使这些filter能享用Spring ioc的功能, CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON定义了url比较前先转为小写, PATTERN_TYPE_APACHE_ANT定义了使用Apache ant的匹配模式 网管网www_bitscn_com

    <bean id=\"filterChainProxy\" class=\"org.acegisecurity.util.FilterChainProxy\">
        <property name=\"filterInvocationDefinitionSource\">
            <value>
                CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
                PATTERN_TYPE_APACHE_ANT
               /**=httpSessionContextIntegrationFilter,authenticationProcessingFilter,
basicProcessingFilter,rememberMeProcessingFilter,anonymousProcessingFilter,
exceptionTranslationFilter,filterInvocationInterceptor
            </value>
        </property>
    </bean>

中国网管论坛bbs.bitsCN.com

2.2.2 基础认证

1) authenticationManager
  起到认证管理的作用,它将验证的功能委托给多个Provider,并通过遍历Providers, 以保证获取不同来源的身份认证,若某个Provider能成功确认当前用户的身份,authenticate()方法会返回一个完整的包含用户授权信息的Authentication对象,否则会抛出一个AuthenticationException。
Acegi提供了不同的AuthenticationProvider的实现,如:
        DaoAuthenticationProvider 从数据库中读取用户信息验证身份
        AnonymousAuthenticationProvider 匿名用户身份认证
        RememberMeAuthenticationProvider 已存cookie中的用户信息身份认证
        AuthByAdapterProvider 使用容器的适配器验证身份
        CasAuthenticationProvider 根据Yale中心认证服务验证身份, 用于实现单点登陆
        JaasAuthenticationProvider 从JASS登陆配置中获取用户信息验证身份
        RemoteAuthenticationProvider 根据远程服务验证用户身份 网管下载dl.bitscn.com
        RunAsImplAuthenticationProvider 对身份已被管理器替换的用户进行验证
        X509AuthenticationProvider 从X509认证中获取用户信息验证身份
        TestingAuthenticationProvider 单元测试时使用

网管网www_bitscn_com

        每个认证者会对自己指定的证明信息进行认证,如DaoAuthenticationProvider仅对UsernamePasswordAuthenticationToken这个证明信息进行认证。 网管u家u.bitsCN.com

<bean id=\"authenticationManager\" class=\"org.acegisecurity.providers.ProviderManager\">
        <property name=\"providers\">
            <list>
                <ref local=\"daoAuthenticationProvider\"/>
                <ref local=\"anonymousAuthenticationProvider\"/>
                <ref local=\"rememberMeAuthenticationProvider\"/>
            </list>
        </property>
</bean> 网管网www_bitscn_com


2) daoAuthenticationProvider
  进行简单的基于数据库的身份验证。DaoAuthenticationProvider获取数据库中的账号密码并进行匹配,若成功则在通过用户身份的同时返回一个包含授权信息的Authentication对象,否则身份验证失败,抛出一个AuthenticatiionException。 网管u家u.bitsCN.com

    <bean id=\"daoAuthenticationProvider\" 
class=\"org.acegisecurity.providers.dao.DaoAuthenticationProvider\">
        <property name=\"userDetailsService\" ref=\"jdbcDaoImpl\"/>
        <property name=\"userCache\" ref=\"userCache\"/>
        <property name=\"passwordEncoder\" ref=\"passwordEncoder\"/>
   </bean>

网管u家u.bitscn@com


3) passwordEncoder
  使用加密器对用户输入的明文进行加密。Acegi提供了三种加密器:
PlaintextPasswordEncoder—默认,不加密,返回明文.
ShaPasswordEncoder—哈希算法(SHA)加密
Md5PasswordEncoder—消息摘要(MD5)加密

网管bitscn_com

<bean id=\"passwordEncoder\" class=\"org.acegisecurity.providers.encoding.Md5PasswordEncoder\"/> 网管u家u.bitscn@com 


4) jdbcDaoImpl
  用于在数据中获取用户信息。 acegi提供了用户及授权的表结构,但是您也可以自己来实现。通过usersByUsernameQuery这个SQL得到你的(用户ID,密码,状态信息);通过authoritiesByUsernameQuery这个SQL得到你的(用户ID,授权信息) 中国网管联盟bitsCN.com

 
<bean id=\"jdbcDaoImpl\" 
class=\"org.acegisecurity.userdetails.jdbc.JdbcDaoImpl\">
        <property name=\"dataSource\" ref=\"dataSource\"/>
        <property name=\"usersByUsernameQuery\">
            <value>select loginid,passwd,1 from users where loginid = ?</value>
        </property>
        <property name=\"authoritiesByUsernameQuery\">
            <value>select u.loginid,p.name from users u,roles r,permissions p,user_role ur,role_permis rp where u.id=ur.user_id and r.id=ur.role_id and p.id=rp.permis_id and
                r.id=rp.role_id and p.status='1' and u.loginid=?</value>

网管联盟bitsCN_com


        </property>
</bean> 中国网管论坛bbs.bitsCN.com

 

中国网管论坛bbs.bitsCN.com

网管u家u.bitsCN.com


上一页12 3 下一页
TAGs   配置   系统   安全   name   property   用户   ref   信息   bean   class      
 上一篇:使用WebService进行异步通信   下一篇:Javascript调用Webservice的汇集
相关文章列表
Acegi安全系统的配置 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.学好基本功之熟练调用 Web Service
2.XML Web Service完全实例解析
3.Acegi安全系统的配置
4.Xml WebService完全实例解析(2)
5.Xml WebService完全实例解析(1)
6.Javascript调用Webservice的汇集
7.异步WebService调用
8.用C#与XML创建动态分层菜单
9.关于webservice的异步调用实例
10.Xml WebService完全实例解析(3)
最新推荐文章:
1.关于Debug和Release之本质区别的讨论
2.客户端访问Web Service方法的一个细节
3.如何让WebServer返回指的定XML内容
4.如何用XML保存配置设定
5.使用 XML 通过 Java 类定义 Web服务
6.XML文件读取数据绑定到DropDownList
7.WebService中使用自定义类的解决方法
8.Web Service 中的身份验证策略
9.如何使用XmlSerializer类控制串行化
10.XML Web services 基础结构
网管论坛交流:
·不疯魔不成活
·令你大开眼界的真正标准化机房,已整理重
·华为HCSE OSPF路由协议培训教材 V3.0
·为赈灾,女孩舍身拍“裸照”
·Windows Server 2003服务器群集创建和配
·exchange2k3全套官方资料
·双儿一周岁了。。。特殊的礼物来啦。。
·存储备份技术版块守则
·无盘技术交流区守则
·DOS命令基础大全之命令详解<作者吐血