Spring_Security-3.0.1_中文自学教程
- 格式:pdf
- 大小:1.06 MB
- 文档页数:92
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 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携手走来。
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。
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⼊门详解序:本⽂主要参考 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格式。
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映射),如图。
Spring3 MVC - 3到Spring MVC框架简介Spring3 MVC框架简介Spring MVC是Spring的框架的Web组件。
它提供了丰富的功能,为建设强大的Web应用程序。
Spring MVC框架的架构,并在这样的高度可配置的方式,每一块的逻辑和功能设计。
此外Spring可以毫不费力地与其他流行的Web框架,如Struts,WebWork的,的Java Server Faces和Tapestry集成。
这意味着,你甚至可以告诉Spring使用Web框架中的任何一个。
比Spring更不紧耦合的servlet或JSP 向客户端呈现视图。
喜欢速度与其他视图技术集成,Freemarker的,Excel或PDF现在也有可能。
Spring3.0 MVC系列∙第1部分:到Spring 3.0 MVC框架简介∙第2部分:在Spring 3.0 MVC创建Hello World应用程序∙第3部分:在Spring 3.0 MVC的形式处理∙第4部分:Spring3 MVC的Tiles Support与Eclipse中的例子插件教程∙第5部分:Spring3 MVC的国际化及本地化教程与范例在Eclipse∙第6部分:Spring3 MVC示例教程Spring主题∙第7部分:创建Spring3 MVC Hibernate 3的示例在Eclipse中使用Maven的在Spring Web MVC,你可以使用任何对象作为命令或表单支持对象,你不需要实现框架特定的接口或基类。
Spring的数据绑定是高度灵活的:例如,将验证错误类型不作为应用系统错误,可以通过评估的不匹配。
因此,你不必重复你的业务对象的属性,简单的无类型的字符串,在表单对象仅仅是为了处理无效的意见,或正确转换的字符串。
相反,它往往是最好直接绑定到业务对象。
请求处理生命周期Spring的Web MVC框架是,像许多其他Web MVC框架,要求为导向,围绕一个中心的servlet,它把请求分派给控制器,提供其他功能,有利于开发Web应用而设计的。
Spring Security下一页Spring Security安全权限管理手册0.0.2版权 © 2009 Lingo论坛:/bbs/。
Email:xyz20003@。
QQ群:3038490。
2009-05-26 13:41:40序言I. 基础篇1. 一个简单的HelloWorld1.1. 配置过滤器1.2. 使用命名空间1.3. 完善整个项目1.4. 运行示例2. 使用数据库管理用户权限2.1. 修改配置文件2.2. 数据库表结构3. 自定义数据库表结构3.1. 自定义表结构3.2. 初始化数据3.3. 获得自定义用户权限信息3.3.1. 处理用户登陆3.3.2. 检验用户权限4. 自定义登陆页面4.1. 实现自定义登陆页面4.2. 修改配置文件4.3. 登陆页面中的参数配置4.4. 测试一下5. 使用数据库管理资源5.1. 数据库表结构5.2. 初始化数据5.3. 实现从数据库中读取资源信息5.3.1. 需要何种数据格式5.3.2. 替换原有功能的切入点6. 控制用户信息6.1. MD5加密6.2. 盐值加密6.3. 用户信息缓存6.4. 获取当前用户信息II. 保护web篇7. 图解过滤器7.1. HttpSessionContextIntegrationFilter7.2. LogoutFilter7.3. AuthenticationProcessingFilter7.4. DefaultLoginPageGeneratingFilter7.5. BasicProcessingFilter7.6. SecurityContextHolderAwareRequestFilter7.7. RememberMeProcessingFilter7.8. AnonymousProcessingFilter7.9. ExceptionTranslationFilter7.10. SessionFixationProtectionFilter7.11. FilterSecurityInterceptorIII. 保护method篇IV. ACL篇V. 最佳实践篇A. 修改日志B. 常见问题解答C. Spring Security-3.0.0.M1下一页序言序言上一页下一页序言为啥选择Spring Security欢迎阅读咱们写的Spring Security教程,咱们既不想写一个简单的入门教程,也不想翻译已有的国外教程。
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. 入门本指南的后面部分提供对框架结构和实现类的深入讨论,了解它们,对你进行复杂的定制是十分重要的。