wzh123

博客园 首页 新随笔 联系 订阅 管理

2013年10月28日 #

摘要: 有这样一些场合,系统用户必须以其他角色身份去操作某些资源。例如,用户A要访问资源B,而用户A拥有的角色为AUTH_USER,资源B访问的角色必须为AUTH_RUN_AS_DATE,那么此时就必须使用户A拥有角色AUTH_RUN_AS_DATE才能访问资源B。尽管这种场合相对较少,但存在即合理,总会有需要的时候,要学会未雨绸缪。 为了实现这一需求,Acegi为我们提供了Run-As认证服务。下面我们举例说明如何应用Run-As认证服务。1、用于配置Run-As认证服务的接口与实现类Java代码 publicinterfaceIRunAsDate{ publicvoidshowDate(); }. 阅读全文
posted @ 2013-10-28 20:01 wzh123 阅读(129) 评论(0) 推荐(0) 编辑

摘要: 首先讲讲EhCache。在默认情况下,即在用户未提供自身配置文件ehcache.xml或ehcache-failsafe.xml时,EhCache会依据其自身Jar存档包含的ehcache-failsafe.xml文件所定制的策略来管理缓存。如果用户在classpath下提供了ehcache.xml或ehcache-failsafe.xml文件,那么EhCache将会应用这个文件。如果两个文件同时提供,那么EhCache会使用ehcache.xml文件的配置。EhCache内容如下:Xml代码 属... 阅读全文
posted @ 2013-10-28 19:59 wzh123 阅读(231) 评论(0) 推荐(0) 编辑

摘要: 在实际企业应用中,用户密码一般都会进行加密处理,这样才能使企业应用更加安全。既然密码的加密如此之重要,那么Acegi(Spring Security)作为成熟的安全框架,当然也我们提供了相应的处理方式。 针对用户密码的加密工作,DaoAuthenticationProvider同时暴露了passwordEncoder和saltSource属性。PasswordEncoder和SaltSource是可选的属性,PasswordEncoder负责对认证库中的密码进行加解密。而SaltSource则是在产生密码时给它加点“盐”,以增强密码在认证库中的安全性。Acegi安全系统提供的PasswordE 阅读全文
posted @ 2013-10-28 19:58 wzh123 阅读(343) 评论(0) 推荐(0) 编辑

摘要: 一个能为DaoAuthenticationProvider提供存取认证库的的类,它必须要实现UserDetailsService接口:Java代码 publicUserDetailsloadUserByUsername(Stringusername)throwsUsernameNotFoundException,DataAccessException;public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException; UserDetails 是 阅读全文
posted @ 2013-10-28 19:58 wzh123 阅读(948) 评论(0) 推荐(0) 编辑

摘要: 今天就讲个ConcurrentSessionFilter。在Acegi1.x版本中,控制并发HttpSession和Remember-Me认证服务不能够同时启用,它们之间存在冲突问题,这是该版本的一个Bug,希望他们尽快改进!!关于这方面的资料,网上很多有说,不明白的朋友可以去了解了解。在一些应用场合,企业可能需要限制同一帐号在同一时间登录到同一Web应用的次数,即控制并发HttpSession的数量。比如,在同一时间,只允许javaee/password用户在服务器存在一个或若干个活动HttpSession。Acegi内置了HttpSession的并发控制支持,为我们提供了方便。为了启用这. 阅读全文
posted @ 2013-10-28 19:57 wzh123 阅读(381) 评论(0) 推荐(0) 编辑

摘要: 在企业应用中,用户的用户名、密码和角色等信息一般存放在RDBMS(关系数据库)中。前面几节我们采用的是InMemoryDaoImpl,即基于内存的存放方式。这节我们将采用RDBMS存储用户信息。 UserDetailsService的接口实现有JdbcDaoImpl和InMemoryDaoImpl。JdbcDaoImpl通过数据库获取用户名、密码和角色信息,它将是接下来的重点内容。1、简单JdbcDaoImpl配置 默认时, JdbcDaoImpl会采用如下SQL获得用户名、密码、启用状态:SELECT username, password, enabled From users WHERE 阅读全文
posted @ 2013-10-28 19:56 wzh123 阅读(207) 评论(0) 推荐(0) 编辑

摘要: 7) daoAuthenticationProvider 进行简单的基于数据库的身份验证。DaoAuthenticationProvider获取数据库中的账号密码并进行匹配,若成功则在通过用户身份的同时返回一个包含授权信息的Authentication对象,否则身份验证失败,抛出一个AuthenticatiionException。 javaee=password,ROLE_SUPERVISOR qiuzj=password,ROLE_SUPERVISOR,disabled inMemDaoImpl提供的是基于内存存储用户的信息,inMemDaoImpl借助于userMap属... 阅读全文
posted @ 2013-10-28 19:55 wzh123 阅读(304) 评论(0) 推荐(0) 编辑

摘要: 这一节我们将要了解的是AnonymousProcessingFilter、RememberMeProcessingFilter和LogoutFilter三个过滤器。1、AnonymousProcessingFilter 在大部分企业应用中,存在许多不需要用户登录就可以访问的资源,比如登录页面、退出页面、主页等。鉴于此,Acegi提供了匿名认证服务。这样能够使所有的Web资源得到保护,而不是某些资源不设权限控制,让任何人都可以访问,这样整个Acegi使能应用的Web安全策略模型将非常完美。与此同时,SecurityContextHolder(SecurityContext)将始终持有Authen 阅读全文
posted @ 2013-10-28 19:54 wzh123 阅读(446) 评论(0) 推荐(0) 编辑

摘要: 上一篇是基于BasicProcessingFilter的基本认证,这篇我们改用AuthenticationProcessingFilter基于表单的认证方式。1、authenticationProcessingFilter 处理认证请求(通常是一个登录页面的表单请求)。当身份验证成功时,AuthenticationProcessingFilter会在会话中放置一个Authentication对象,并且重定向到登录成功页面l authenticationFailureUrl定义登陆失败时转向的页面l defaultTargetUrl定义登陆成功时转向的页面l filterProcessesUr. 阅读全文
posted @ 2013-10-28 19:53 wzh123 阅读(261) 评论(0) 推荐(0) 编辑

摘要: 相信不少朋友们对于学习Acegi的过程是比较痛苦的,而且可能最初一个例子都没能真正运行起来。即使能运行起来,对于里面那么多的配置,更搞不清楚为什么要那么配,多配一个和少配一个究竟有什么区别? 最终头都大了^_^基于各方面的原因,本人决定写一系列关于Acegi从简单到复杂应用的文章,一方面是对自己学习Acegi的总结,而另一方面又对想学习研究Acegi的朋友们有所帮助。关于Acegi的介绍,网上有很多相关资料,在此我就省略不写了,但我建议朋友们最好先对Acegi有所了解再来看我的文章。在此,本人声明,我也处理菜鸟阶段,而且文章的内容有些是摘自他人的资源,写得不好、或者说得不对的请多多指出,甚至有 阅读全文
posted @ 2013-10-28 19:52 wzh123 阅读(192) 评论(0) 推荐(0) 编辑