Spring Security 初探

这两天在看spring security, 写些tips:
1. 作为业界最成熟的AA(Authentication & Authorization)框架, 目测其采用了Apache Shiro
2. 与通用做法一样,其AA做在了Filter 层 而非 Servlet层
3. 其本质上是一个filtechain
4. 利用两种工具达到AA控制的目的: a. 过滤器filters. b. 拦截器 interceptor
过滤器主要用于URL 表单等认证. 拦截器主要通过annotation的方式对每个类,方法,属性进行细粒度的控制
5. 默认过滤器有这些:
[img]http://dl.iteye.com/upload/attachment/0065/6787/cdbaf177-191d-3915-8905-801ed6fb6d2a.png[/img]

6. 用户可以增加自己的过滤器,自己的过滤器位置可以指定
7. 过滤器控制的URL可以基于配置文件配置,也可以基于数据配置。
8. 核心过滤器之一 FilterSecurityInterceptor, 有两个重要的属性
a. AuthenticationManager, 用于从数据源(可以是DB,文件)中获取认证信息
b. AccessDecisionManager, 用于做授权处理,可能有很多个授权provider,根据这些providerd的授权“投票”结果,进行处理: 3种"投票"方案如下:
--------如果有一个赞成就同意(具体的说就是只要你在那个URL对应的几个用户组中的一个就让你访问)
--------如果都赞成就同意(具本的说就是那个URL对应的几个用户组里都有你,你才能访问)
--------如果都不反对就同意
9. spring security 有自己默认的权限tables, 如果要想定制化怎需要修改 JdbcDaoImpl 中的3条SQL

10.异常处理: spring security种 有很多异常处理类,比如访问被禁止。可以根据自己的需要处理。 有很多人奇怪为什么用了spring security自带的tutorial会自动产生一个loginPage.这其中就用到了异常处理机制:user 敲入初始url 的时候spring security接收到的request URL 是 “/”, 走完所有的默认filter之后产生异,系统处理异常,重定位新的URL: /j_spring_security_check.这时候重走所有的filter,被其中的DefaultLoginPageGeneratingFilter所处理,返回一个login page。
(待)

你可能感兴趣的:(Java,EE)