Spring_Security-3.0.1_中文自学教程
SpringSecurity使用记录(五)-- 配置

SpringSecurity使用记录(五)-- 配置研究了好长时间,不知道从哪里下手。
新的版本,很多东西在网上找不到,只能看他们的文档,当然这些文档相当不错,就看是否耐心的研究了!总是有急躁的心理作祟,不能专心研读,却处处碰壁,效率上反而未达预期效果!终于,在无数次的沮丧下,稍微看到了点光亮!前面的文章太过皮毛,接下来的一些,希望能更加实际的,更加深入的分析每一个过程!一直通过默认配置进行设置:namespace(是security 3.0,网上也看到一些兄弟描述的是3.0,但是总是不符合我这里的namespace配置):<beans:beans xmlns="/schema/security"xmlns:beans="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-3.0.xsd/schema/security/schema/security/spring-security-3.0.xsd">按照默认配置的http(这是用来根据namespace设置的基本的security过滤器chain):auto-config=true时,就相当于<http><form-login /><http-basic /><logout /></http>也就是使用了默认的过滤器。
我最开始的想法是能够把本地的login信息(不是调用spring security的login方法),传入到spring security的验证过滤器里面。
这里有一个比较关键的问题,就是封装他们的过滤器(或者仅仅是知道他们到底是哪些过滤器在起作用):表1Alia s FilterClassNamespaceElementorAttributeCHA NNE L_FI LTE R ChannelProcessingFilterhttp/intercept-url@requires-channelCON CUR REN ConcurrentSessisession-management/concurrenT_S ESS ION _FIL TER onFiltercy-controlSECURI TY_ CON TEX T_FI LTE R Securi tyContextPersistenceFilterhttpLOGOUT _FIL TER LogoutFilterhttp/logoutX50 9_FI LTE R X509AuthenticationFilterhttp/x509PRE _AU TH_ FILT ER Astrac tPreAuthenticatedProcessingFilterSubc lassesN/ACAS _FIL TER CasAu thenti cationFilterN/AFOR M_L OGI N_F ILTE R UsernamePasswordAuthenticationFilterhttp/form-loginBAS IC_BasicAuthehttp/http-basicAUT H_F ILTE R nticati onFilt erSERVLE T_A PI_ SUP POR T_FI LTE R SecurityContextHolderAwareFilterhttp/@servlet-api-provisionREM EMB ER_ ME_ FILT ER RememberMeAuthenticationFilterhttp/remember-meANO NYM OUS _FIL TER AnonymousAuthenticationFilterhttp/anonymousSESSIO N_M ANA GEM ENT _FIL TER SessionManagementFiltersession-managementEXC EPTION_ TRA NSL ATI ON_ FILT ER ExceptionTranslat ionFilterhttpFILT ER_FilterSecurihttpSEC URI TY_I NTE RCE PTO R tyInte rcept orSWITCH _US ER_ FILT ER SwitchUserFilterN/A(最开始看的时候,把这个表格忽略了,现在看来这些就是我们想要的!)我们的验证过程,就是按照这样的顺序进行的。
Spring Security培训PPT课件

2011-03-28
流程介绍
• Spring Security 简介 • Spring Security 11种过滤器介绍 • Spring Security 基本配置 • Spring Security 总结
Spring Security 简介
• 这里提到的Spring Security也就是被大家广为熟悉的Acegi Security ,2007年底Acegi Security正式成为Spring Portfolio项目,并更名 为Spring Security。Spring Security是一个能够为基于Spring的企 业应用系统提供描述性安全访问控制解决方案的安全框架。它提供了 一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC(依赖注入,也称控制反转)和AOP(面向切面编程)功能,为 应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控 制编写大量重复代码的工作。
LogoutFilter
• 只处理注销请求,默认为/j_spring_security_logout。 • 用途是在用户发送注销请求时,销毁用户session,清空
SecurityContextHolder,然后重定向到注销成功页面。可以与 rememberMe之类的机制结合,在注销的同时清空用户cookie。
• /j_spring_security_check,提交登陆信息的URL地址。自定义form 时,要把form的action设置为/j_spring_security_check。注意这里 要使用绝对路径,避免登陆页面存放的页面可能带来的问题 。 j_username,输入登陆名的参数名称。 j_password,输入密码的 参数名称 _spring_security_remember_me,选择是否允许自动登录 的参数名称。可以直接把这个参数设置为一个checkbox,无需设置 value,Spring Security会自行判断它是否被选中。
spring-3.1.0中文版api帮助文档

Spring 3.x权威开发指南:实施Java EE 6的利器2011年8月31日目录序 (VIII)前言 (X)1借助Spring 3.1实施Java EE 6 (1)1.1Java EE 6编程模型讨论 (1)1.1.1Java EE 6够敏捷,No! (1)1.1.2盘旋于具体与抽象之间 (2)1.2挖掘Spring 3.1的架构价值 (3)1.2.1精耕细作于Java EE 6平台 (3)1.2.2面向Spring的SpringSource Tool Suite集成开发工具 (3)1.2.3全面拥抱OSGi 4.2 (4)1.2.4开发者决定一切 (4)1.3下载及构建Spring 3.1 (5)1.3.1下载Spring 3.1正式发布版 (5)1.3.2基于SVN库持续构建Spring源码 (6)1.4小结 (7)2控制反转容器 (8)2.1DI及Spring DI概述 (8)2.1.1面向Java ME/Java SE的BeanFactory (8)2.1.2面向Java EE的ApplicationContext (9)2.2多种依赖注入方式 (9)2.2.1设值注入 (9)2.2.2构建器注入 (11)2.2.3属性注入 (12)2.2.4方法注入 (12)2.3借助Autowiring策略智能注入协作者 (13)2.3.1<bean/>元素的autowire属性 (13)2.3.2基于@Required注解加强协作者管理 (14)2.3.3基于@Autowired或@Inject注解的另一Autowiring策略 (16)2.3.4借助primary属性或@Qualifier注解细粒度控制Autowiring策略 (16)2.4资源操控 (19)2.5将DI容器宿主到Web容器中 (19)2.6外在化配置应用参数 (19)2.7Spring受管Bean的作用范围 (19)2.8Bean Validation集成支持 (19)2.9回调接口集合及触发顺序 (19)2.10<util/>命名空间 (20)2.11值得重视的若干DI特性 (20)2.11.1depends-on属性 (20)2.11.2别名(Alias) (20)2.11.3工厂Bean和工厂方法 (20)2.11.4<p/>命名空间 (21)2.11.5抽象和子Bean (21)2.12基于注解(Annotation)方式配置DI容器 (21)2.13Spring表达式语言(SpEL)支持 (22)2.13.1核心接口及类 (22)2.13.2基于API方式使用 (22)2.13.3基于XML方式使用 (22)2.13.4基于Annotation注解使用 (22)2.13.5SpEL语法速查 (22)2.14回调接口集合及其触发顺序 (22)2.14.1BeanNameAware回调接口 (22)2.14.2BeanClassLoaderAware回调接口 (23)2.14.3BeanFactoryAware回调接口 (23)2.14.4ResourceLoaderAware回调接口 (23)2.14.5ApplicationEventPublisherAware回调接口 (23)2.14.6MessageSourceAware回调接口 (23)2.14.7ApplicationContextAware回调接口 (23)2.14.8@PostConstruct注解 (23)2.14.9InitializingBean回调接口 (23)2.14.10<bean/>元素的init-method属性 (24)2.14.11@PreDestroy注解 (24)2.14.12DisposableBean回调接口 (24)2.14.13<bean/>元素的destroy-method属性 (24)2.15小结 (24)3面向切面编程 (25)3.1AOP及Spring AOP基础 (25)3.1.1细说AOP (25)3.1.2Spring AOP基础概念 (25)3.2AspectJ 6初探 (25)3.3老式Spring AOP (25)3.4基于@AspectJ的Spring AOP (26)3.5基于<aop:config/>元素的AOP (26)3.5.1巧用<aop:include/>元素 (26)3.6在AspectJ 6应用中启用@Configurable注解 (26)3.6.1显式使用AnnotationBeanConfigurerAspect切面 (26)3.6.2阐述@Configurable注解 (28)3.6.3通过META-INF/aop.xml(或aop-ajc.xml)控制启用的切面集合 (30)3.6.4<context:spring-configured/>元素 (31)3.6.5初探<context:load-time-weaver/>元素 (31)3.7小结 (31)4DAO层集成支持 (33)4.1RDBMS持久化操作抽象支持 (33)4.2.1JDBC最佳实践 (33)4.3事务集成支持 (33)4.4集成测试支持 (33)4.5在AspectJ 6应用中启用@Transactional注解 (33)4.6小结 (33)5Hibernate、JPA集成 (34)5.1Hibernate集成支持 (34)5.2JPA集成支持 (34)5.3智能处理Java EE容器中的装载期织入(LTW) (34)5.4小结 (35)6O/X Mapping集成支持 (36)6.1O/X Mapping集成支持 (36)6.1.1Marshaller及Unmarshaller接口 (37)6.2实践XMLBeans集成支持 (37)6.2.1借助Ant生成XMLBeans JAR (38)6.2.2XmlBeansMarshaller实现类 (39)6.2.3<oxm:xmlbeans-marshaller/>元素 (40)6.3小结 (40)7集成Java EE其他容器服务 (41)7.1简化JNDI操作 (41)7.2集成EJB 3.1 (41)7.3线程池及任务调度集成支持 (41)7.4集成JMS (41)7.5集成JavaMail (41)7.6集成分布式操作 (41)7.7集成JMX (42)7.8集成Java EE连接器架构 (42)8Web层集成支持 (43)8.1Spring Web MVC框架 (43)8.2Spring Portlet MVC框架 (43)8.3REST架构风格 (43)8.4小结 (43)9高级Spring 3.0特性 (44)9.1优雅销毁DI容器 (44)9.2小结 (44)10附录A:安装及使用SpringSource Tool Suite (45)10.1获得SpringSource Tool Suite (45)10.2安装SpringSource Tool Suite (45)10.3使用SpringSource Tool Suite (47)10.3.1针对Spring 3.1的支持 (47)10.3.2针对Spring Web Flow的支持 (49)10.3.3针对Spring Batch的支持 (50)10.3.4针对Spring Roo的支持 (50)11附录B:Spring 3.1内置的命名空间 (51)11.1<beans/>命名空间 (51)11.2<context/>命名空间 (51)11.3<util/>命名空间 (51)12附录C:Spring Web Services (52)12.1文档驱动的Web服务 (52)12.2面向OXM的Web服务实现策略 (52)12.3Web服务安全 (52)13附录D:Spring Web Flow (53)13.2探索Spring Web Flow (53)14附录E:Spring BlazeDS Integration (54)14.1Flex-RIA王者 (54)14.2简化BlazeDS的使用 (54)14.3深入到Spring BlazeDS Integration中 (54)15附录F:Spring Roo (55)15.1快速研发之道 (55)15.1.1Spring Roo概述 (55)15.2Spring Roo架构哲学 (55)15.3深入到Spring Roo中 (55)16附录G:相关资料 (56)16.1图书 (56)16.2网站 (56)序从2003年开始,开源Spring一直在同Java EE携手走来。
SpringSecurity原理

spring security原理使用众多的拦截器对url拦截,以此来管理权限,是spring security核心思想。
对Web资源的保护,就是靠Filter实现的。
如下图:一般来说,我们的Filter都是配置在web.xml中,但是spring security不一样,它在web.xml中配置的只是一个代理,而真正起作用的Filter是作为Bean配置在Spring中的。
web.xml中的代理依次调用这些Bean,就实现了对Web资源的保护,同时这些Filter 作为Bean被Spring管理,所以实现AOP也很简单,真的是一举两得啊。
spring security中提供的Filter不少,有十多个,一个一个学起来比较复杂。
但是对于我们Web开发者来说,常用的就那么几个,如下图中的被红圈圈标记出来的:从上到下,它们实现的功能依次是1、制定必须为https连接;2、从Session中提取用户的认证信息;3、退出登录;4、登录;5、记住用户;6、所有的应用必须配置这个Filter。
一般来说,我们写Web应用只需要熟悉这几个Filter就可以了,如果不需要https连接,连第一个也不用熟悉。
但是有人肯定会想,这些Filter怎么和我的数据库联系起来呢?不用着急,这些Filter并不直接处理用户的认证,也不直接处理用户的授权,而是把它们交给了认证管理器和决策管理器。
如下图:对于这两种管理器,那也是不需要我们写代码的,spring security也提供了现成的类。
那么大家又奇怪了:又是现成的,那怎么和我的数据库关联起来呢?别着急,其实这两个管理器自己也不做事,认证管理器把任务交给了Provider,而决策管理器则把任务交给了Voter,如下图:现在我要告诉你们,这里的Provider和Voter也是不需要我们写代码的。
不要崩溃,快到目标了。
spring security提供了多个Provider的实现类,如果我们想用数据库来储存用户的认证数据,那么我们就选择DaoAuthenticationProvider。
SpringSecurity培训

<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" /> <intercept-url pattern="/**" access="ROLE_USER" /> </http> • 设置成 ROLE_ANONYMOUS 也可以。
• <form action="${pageContext.request.contextPath}/j_spring_security_check" style="width:260px;text-align:center;"> <fieldset> <legend>登陆</legend> 用户: <input type="text" name="j_username" style="width:150px;" value="${sessionScope['SPRING_SECURITY_LAST_USERNAME']}"/><br /> 密码: <input type="password" name="j_password" style="width:150px;" /><br /> <input type="checkbox" name="_spring_security_remember_me" />两周之内不必登陆 <br /> <input type="submit" value="登陆"/> <input type="reset" value="重置"/> </fieldset> </form>
spring_security3入门教程

Spring Security 3.x 完整入门教程作者:未知文章来源:网络点击数:353 更新时间:2010-7-15Spring Security 3.x 出来一段时间了,跟Acegi是大不同了,与2.x的版本也有一些小小的区别,网上有一些文档,也有人翻译Spring Security 3.x的guide,但通过阅读guide,无法马上就能很容易的实现一个完整的实例。
我花了点儿时间,根据以前的实战经验,整理了一份完整的入门教程,供需要的朋友们参考。
1,建一个web project,并导入所有需要的lib,这步就不多讲了。
2,配置web.xml,使用Spring的机制装载:<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd"><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext*.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><filter><filter-name>springSecurityFilterChain</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class></filter><filter-mapping><filter-name>springSecurityFilterChain</filter-name><url-pattern>/*</url-pattern></filter-mapping><welcome-file-list><welcome-file>login.jsp</welcome-file></welcome-file-list></web-app>这个文件中的内容我相信大家都很熟悉了,不再多说了。
SpringSecurity入门详解

SpringSecurity⼊门详解序:本⽂主要参考 spring实战 对⾥⾯的知识做⼀个梳理1.Spring Security介绍Spring Security是基于spring的应⽤程序提供声明式安全保护的安全性框架,它提供了完整的安全性解决⽅案,能够在web请求级别和⽅法调⽤级别处理⾝份证验证和授权.它充分使⽤了依赖注⼊和⾯向切⾯的技术. Spring security主要是从两个⽅⾯解决安全性问题:1. web请求级别:使⽤servlet过滤器保护web请求并限制URL级别的访问2. ⽅法调⽤级别:使⽤Spring AOP保护⽅法调⽤,确保具有适当权限的⽤户采⽤访问安全保护的⽅法.2.Web请求级别的保护 对于请求级别的安全性来说,主要时通过保护⼀个或多个URL,使得只有特定的⽤户才能访问,并其他⽤户访问该URL的内容.本⽂主要是基于spring mvc下整合Spring security模块.2.1 声明代理Servlet过滤器 在web中的URL的⼀般需要过滤器进⾏保护,所以需要借助⼀系列的Servlet过滤器提供各种各样的安全性功能.这也需要在web.xml中配置⼀系列相关的<filter>,使得配置⽂件臃肿难以阅读.所以Spring security提供了代理Servelt过滤器可以解决该问题.如下⾯清单所⽰:<filter><filter-name>springSecurityFilterChain</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class></filter>DelegatingFilterProxy是⼀个代理的Servelt过滤器,它主要负责将⼯作委托给⼀个javax.servlet.Filter实现类,这个实现类作为⼀个<bean>已经注册在Spring应⽤的上下⽂,且该bean的Id便是上⾯<filter-name>的名字,即springSecurityFilterChain. springSecurityFilterChain,也可称为FilterChainProxy.它可以链接任意多个其他的过滤器,根据这些过滤器提供不同的安全特性.但是你并不需要在spring配置⽂件中配置该过滤器的bean和它所链接的其他过滤器.2.2 配置最⼩化web安全性和拦截请求<http auto-config="true"><intercept-url pattern="/admin/**" access="ROLE_ADMIN"/></http>在spring的配置⽂件中加⼊这段代码可以拦截站点/admin分⽀⾏下的所有URL请求.并限制只有具备"ROLE_ADMIN"权限的⽤户才可以访问,"ROLE_ADMIN"是⾃定义的⼀个权限.pattern默认使⽤的是Ant格式。
4、Spring Security 安全权限管理手册

Spring Security 3.0 安全权限管理手册参考文献:1、中的spring security权限管理手册。
2、spring security3.0权限管理手册3、spring的相关资料。
本文档内容仅仅作为公司权限管理资料用,对于企业来说,权限管理将是系统中的非常重要的一个模块,权限的设计也是参考相关资料进行整理和补充。
系统将通过数据库进行管理用户权限。
权限管理搭建要的问题:1、区分Authentication(验证)与 Authorization(授权)验证这个用户是谁?用户身份可靠吗?授权某用户A是否可以访问资源R某用户A是否可以执行M操作某用户A是否可以对资源R执行M操作2、SS中的验证特点支持多种验证方式支持多种加密格式支持组件的扩展和替换可以本地化输出信息3、SS中的授权特点支持多种仲裁方式支持组件的扩展和替换支持对页面访问、方法访问、对象访问的授权。
4、SS核心安全实现Web安全通过配置Servlet Filter激活SS中的过滤器链实现Session一致性验证实现免登陆验证(Remember-Me验证)提供一系列标签库进行页面元素的安全控制方法安全通过AOP模式实现安全代理Web安全与方法安全均可以使用表达式语言定义访问规则5、配置SS配置Web.xml,应用安全过滤器配置Spring,验证与授权部分在web页面中获取用户身份在web页面中应用安全标签库实现方法级安全6、配置web.xml7、Spring配置文件中设置命名空间8、通过数据库验证用户身份9、完善web页面验证规则10、自定义验证配置11、本地化消息输出(国际化)根据公司项目的开发要求和集合spring security3.0功能,公司将通过数据库进行对用户身份验证和授权,系统将建立5个基础表进行对权利的管理。
第一部分数据库设计1、表设计create table pub_users(user_id varchar(32),user_account varchar(30),user_name varchar(40),user_password varchar(100),user_desc varchar(100),enabled int,issys int);alter table pub_users add constraint pk_pub_users primary key(user_id);create table pub_authorities(authority_id varchar(32),authority_name varchar(40),authority_desc varchar(100),enabled int,issys int);alter table pub_authorities add constraint pk_pub_authorities primary key(authority_id);create table pub_roles(role_id varchar(32),role_name varchar(40),role_desc varchar(100),enabled int,issys int);alter table pub_roles add constraint pk_pub_roles primary key(role_id);create table pub_resources(resource_id varchar(32),resource_name varchar(100),resource_desc varchar(100),resource_type varchar(40),resource_string varchar(200),priority int,enabled int,issys int);alter table pub_resources add constraint pk_pub_resources primary key(resource_id);create table pub_users_roles(id numeric(12,0) IDENTITY NOT NULL,user_id varchar(32),role_id varchar(32),enabled int);alter table pub_users_roles add constraint pk_pub_users_roles primary key(id); alter table pub_users_roles add constraint fk_users_roles_users foreign key(user_id) references pub_users(user_id);alter table pub_users_roles add constraint fk_users_roles_roles foreign key(role_id) references pub_roles(role_id);create table pub_roles_authorities(id numeric(12,0) IDENTITY NOT NULL,role_id varchar(32),authority_id varchar(32),enabled int);alter table pub_roles_authorities add constraint pk_pub_roles_authorities primary key(id);alter table pub_roles_authorities add constraint fk_pub_roles_authorities_authorities foreign key(authority_id) references pub_authorities(authority_id);alter table pub_roles_authorities add constraint fk_pub_roles_authorities_roles foreign key(role_id) references pub_roles(role_id);create table pub_authorities_resources(id numeric(12,0) IDENTITY NOT NULL,authority_id varchar(32),resource_id varchar(32),enabled int);alter table pub_authorities_resources add constraint pk_pub_authorities_resources primary key(id);alter table pub_authorities_resources add constraint fk_pub_authorities_resources_authorities foreign key(authority_id) references pub_authorities(authority_id);alter table pub_authorities_resources add constraint fk_pub_authorities_resources_resources foreign key(resource_id) references pub_resources(resource_id);3、E-R图如下:第二部分 WEB数据库整合提示:相关代码请参考项目模块1、将数据库表结构和Hibernate建立映射,本系统采用annotation进行对数据库进行零配置处理(请参考hibernate映射),如图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Spring Security-3.0.1 中文官方文档(翻译版)这次发布的Spring Security-3.0.1 是一个bug fix 版,主要是对3.0 中存在的一些问题进行修正。
文档中没有添加新功能的介绍,但是将之前拼写错误的一些类名进行了修正,建议开发者以这一版本的文档为参考。
另:Spring Security 从2010-01-01 以后,版本控制从SVN 换成了GIT,我们在翻译文档的时候,主要是根据SVN 的变化来进行文档内容的比对,这次换成GIT 后,感觉缺少了之前那种文本比对工具,如果有对GIT 熟悉的朋友,还请推荐一下文本比对的工具,谢谢。
序言I. 入门1. 介绍1.1. Spring Security 是什么?1.2. 历史1.3. 发行版本号1.4. 获得Spring Security1.4.1. 项目模块1.4.1.1. Core - spring-security-core.jar1.4.1.2. Web - spring-security-web.jar1.4.1.3. Config - spring-security-config.jar1.4.1.4. LDAP - spring-security-ldap.jar1.4.1.5. ACL - spring-security-acl.jar1.4.1.6. CAS - spring-security-cas-client.jar1.4.1.7. OpenID - spring-security-openid.jar1.4.2. 获得源代码2. Security 命名空间配置2.1. 介绍2.1.1. 命名空间的设计2.2. 开始使用安全命名空间配置2.2.1. 配置web.xml2.2.2. 最小<http> 配置2.2.2.1. auto-config 包含了什么?2.2.2.2. 表单和基本登录选项2.2.3. 使用其他认证提供器2.2.3.1. 添加一个密码编码器2.3. 高级web 特性2.3.1. Remember-Me 认证2.3.2. 添加HTTP/HTTPS 信道安全2.3.3. 会话管理2.3.3.1. 检测超时2.3.3.2. 同步会话控制2.3.3.3. 防止Session 固定攻击2.3.4. 对OpenID 的支持2.3.4.1. 属性交换2.3.5. 添加你自己的filter2.3.5.1. 设置自定义AuthenticationEntryPoint2.4. 保护方法2.4.1. <global-method-security> 元素2.4.1.1. 使用protect-pointcut 添加安全切点2.5. 默认的AccessDecisionManager2.5.1. 自定义AccessDecisionManager2.6. 验证管理器和命名空间3. 示例程序3.1. Tutorial 示例3.2. Contacts3.3. LDAP 例子3.4. CAS 例子3.5. Pre-Authentication 例子4. Spring Security 社区4.1. 任务跟踪4.2. 成为参与者4.3. 更多信息II. 结构和实现5. 技术概述5.1. 运行环境5.2. 核心组件5.2.1. SecurityContextHolder, SecurityContext 和Authentication 对象5.2.1.1. 获得当前用户的信息5.2.2. UserDetailsService5.2.3. GrantedAuthority5.2.4. 小结5.3. 验证5.3.1. 什么是Spring Security 的验证呢?5.3.2. 直接设置SecurityContextHolder 的内容5.4. 在web 应用中验证5.4.1. ExceptionTranslationFilter5.4.2. AuthenticationEntryPoint5.4.3. 验证机制5.4.4. 在请求之间保存SecurityContext 。
5.5. Spring Security 中的访问控制(验证)5.5.1. 安全和AOP 建议5.5.2. 安全对象和AbstractSecurityInterceptor5.5.2.1. 配置属性是什么?5.5.2.2. RunAsManager5.5.2.3. AfterInvocationManager5.5.2.4. 扩展安全对象模型5.6. 国际化6. 核心服务6.1. The AuthenticationManager , ProviderManager 和AuthenticationProvider s 6.1.1. DaoAuthenticationProvider6.2. UserDetailsService 实现6.2.1. 内存认证6.2.2. JdbcDaoImpl6.2.2.1. 权限分组6.3. 密码加密6.3.1. 什么是散列加密?6.3.2. 为散列加点儿盐6.3.3. 散列和认证III. web 应用安全7. 安全过滤器链7.1. DelegatingFilterProxy7.2. FilterChainProxy7.2.1. 绕过过滤器链7.3. 过滤器顺序7.4. 使用其他过滤器——基于框架8. 核心安全过滤器8.1. FilterSecurityInterceptor8.2. ExceptionTranslationFilter8.2.1. AuthenticationEntryPoint8.2.2. AccessDeniedHandler8.3. SecurityContextPersistenceFilter8.3.1. SecurityContextRepository8.4. UsernamePasswordAuthenticationFilter8.4.1. 认证成功和失败的应用流程9. Basic(基本)和Digest(摘要)验证9.1. BasicAuthenticationFilter9.1.1. 配置9.2. DigestAuthenticationFilter9.2.1. Configuration10. Remember-Me 认证10.1. 概述10.2. 简单基于散列标记的方法10.3. 持久化标记方法10.4. Remember-Me 接口和实现10.4.1. TokenBasedRememberMeServices10.4.2. PersistentTokenBasedRememberMeServices11. 会话管理11.1. SessionManagementFilter11.2. SessionAuthenticationStrategy11.3. 同步会话12. 匿名认证12.1. 概述12.2. 配置12.3. AuthenticationTrustResolverIV. 授权13. 验证架构13.1. 验证13.2. 处理预调用13.2.1. AccessDecisionManager13.2.2. 基于投票的AccessDecisionManager 实现13.2.2.1. RoleVoter13.2.2.2. AuthenticatedVoter13.2.2.3. Custom Voters13.3. 处理后决定14. 安全对象实现14.1. AOP 联盟(MethodInvocation) 安全拦截器14.1.1. 精确的MethodSecurityIterceptor 配置14.2. AspectJ (JoinPoint) 安全拦截器15. 基于表达式的权限控制15.1. 概述15.1.1. 常用内建表达式15.2. Web 安全表达式15.3. 方法安全表达式15.3.1. @Pre 和@Post 注解15.3.1.1. 访问控制使用@PreAuthorize 和@PostAuthorize15.3.1.2. 过滤使用@PreFilter 和@PostFilter16. acegi 到spring security 的转换方式16.1. Spring Security 是什么16.2. 目标16.3. 步骤16.4. 总结V. 高级话题17. 领域对象安全(ACLs)17.1. 概述17.2. 关键概念17.3. 开始18. 预认证场景18.1. 预认证框架类18.1.1. AbstractPreAuthenticatedProcessingFilter18.1.2. AbstractPreAuthenticatedAuthenticationDetailsSource18.1.2.1. J2eeBasedPreAuthenticatedWebAuthenticationDetailsSource 18.1.3. PreAuthenticatedAuthenticationProvider18.1.4. Http403ForbiddenEntryPoint18.2. 具体实现18.2.1. 请求头认证(Siteminder)18.2.1.1. Siteminder 示例配置18.2.2. J2EE 容器认证19. LDAP 认证19.1. 综述19.2. 在Spring Security 里使用LDAP19.3. 配置LDAP 服务器19.3.1. 使用嵌入测试服务器19.3.2. 使用绑定认证19.3.3. 读取授权19.4. 实现类19.4.1. LdapAuthenticator 实现19.4.1.1. 常用功能19.4.1.2. BindAuthenticator19.4.1.3. PasswordComparisonAuthenticator 19.4.1.4. 活动目录认证19.4.2. 链接到LDAP 服务器19.4.3. LDAP 搜索对象19.4.3.1. FilterBasedLdapUserSearch19.4.4. LdapAuthoritiesPopulator19.4.5. Spring Bean 配置19.4.6. LDAP 属性和自定义UserDetails20. JSP 标签库20.1. 声明Taglib20.2. authorize 标签20.3. authentication 标签20.4. accesscontrollist 标签21. Java 认证和授权服务(JAAS)供应器21.1. 概述21.2. 配置21.2.1. JAAS CallbackHandler21.2.2. JAAS AuthorityGranter22. CAS 认证22.1. 概述22.2. CAS 是如何工作的22.3. 配置CAS 客户端23. X.509 认证23.1. 概述23.2. 把X.509 认证添加到你的web 系统中23.3. 为tomcat 配置SSL24. 替换验证身份24.1. 概述24.2. 配置A. 安全数据库表结构A.1. User 表A.1.1. 组权限A.2. 持久登陆(Remember-Me)表A.3. ACL 表A.3.1. Hypersonic SQLA.3.1.1. PostgreSQLB. 安全命名空间B.1. Web 应用安全- <http> 元素B.1.1. <http> 属性B.1.1.1. servlet-api-provisionB.1.1.2. path-typeB.1.1.3. lowercase-comparisonsB.1.1.4. realmB.1.1.5. entry-point-refB.1.1.6. access-decision-manager-refB.1.1.7. access-denied-pageB.1.1.8. once-per-requestB.1.1.9. create-sessionB.1.2. <access-denied-handler>B.1.3. <intercept-url> 元素B.1.3.1. patternB.1.3.2. methodB.1.3.3. accessB.1.3.4. requires-channelB.1.3.5. filtersB.1.4. <port-mappings> 元素B.1.5. <form-login> 元素B.1.5.1. login-pageB.1.5.2. login-processing-urlB.1.5.3. default-target-urlB.1.5.4. always-use-default-targetB.1.5.5. authentication-failure-urlB.1.5.6. authentication-success-handler-ref B.1.5.7. authentication-failure-handler-ref B.1.6. <http-basic> 元素B.1.7. <remember-me> 元素B.1.7.1. data-source-refB.1.7.2. token-repository-refB.1.7.3. services-refB.1.7.4. token-repository-refB.1.7.5. key 属性B.1.7.6. token-validity-secondsB.1.7.7. user-service-refB.1.8. <session-management> 元素B.1.8.1. session-fixation-protectionB.1.9. <concurrent-control> 元素B.1.9.1. max-sessions 属性B.1.9.2. expired-url 属性B.1.9.3. error-if-maximum-exceeded 属性B.1.9.4. session-registry-alias 和session-registry-ref 属性B.1.10. <anonymous> 元素B.1.11. <x509> 元素B.1.11.1. subject-principal-regex 属性B.1.11.2. user-service-ref 属性B.1.12. <openid-login> 元素B.1.13. <logout> 元素B.1.13.1. logout-url 属性B.1.13.2. logout-success-url 属性B.1.13.3. invalidate-session 属性B.1.14. <custom-filter> 元素B.2. 认证服务B.2.1. <authentication-manager> 元素B.2.1.1. <authentication-provider>元素B.2.1.2. 使用<authentication-provider> 来引用一个AuthenticationProvider Bean B.3. 方法安全B.3.1. <global-method-security> 元素B.3.1.1. secured-annotations 和jsr250-annotations 属性B.3.1.2. 安全方法使用<protect-pointcut>B.3.1.3. <after-invocation-provider> 元素B.3.2. LDAP 命名空间选项B.3.2.1. 使用<ldap-server> 元素定义LDAP 服务器B.3.2.2. <ldap-provider> 元素B.3.2.3. <ldap-user-service> 元素Part I. 入门本指南的后面部分提供对框架结构和实现类的深入讨论,了解它们,对你进行复杂的定制是十分重要的。