SpringSecurity-3.0.1中文官方文档(翻译版)这次发布的SpringSecurity-3.0.1是一个bugfix版,主要是对3.0中存在的一些问题进行修正。文档中没有添加新功能的介绍,但是将之前拼写错误的一些类名进行了修正,建议开发者以这一版本的文档为参考。另:SpringSecurity从2010-01-01以后,版本控制从SVN换成了GIT,我们在翻译文档的时候,主要是根据SVN的变化来进行文档内容的比对,这次换成GIT后,感觉缺少了之前那种文本比对工具,如果有对GIT熟悉的朋友,还请推荐一下文本比对的工具,谢谢。序言I.入门1.介绍1.1.SpringSecurity是什么?1.2.历史1.3.发行版本号1.4.获得SpringSecurity1.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.SpringSecurity社区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.什么是SpringSecurity的验证呢?5.3.2.直接设置SecurityContextHolder的内容5.4.在web应用中验证5.4.1.ExceptionTranslationFilter5.4.2.AuthenticationEntryPoint5.4.3.验证机制5.4.4.在请求之间保存SecurityContext。5.5.SpringSecurity中的访问控制(验证)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.TheAuthenticationManager,ProviderManager和AuthenticationProviders6.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.CustomVoters13.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到springsecurity的转换方式16.1.SpringSecurity是什么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.J2eeBasedPreAuthenticatedWebAuthenticationDetailsSource18.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.在SpringSecurity里使用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.PasswordComparisonAuthenticator19.4.1.4.活动目录认证19.4.2.链接到LDAP服务器19.4.3.LDAP搜索对象19.4.3.1.FilterBasedLdapUserSearch19.4.4.LdapAuthoritiesPopulator19.4.5.SpringBean配置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.JAASCallbackHandler21.2.2.JAASAuthorityGranter22.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.HypersonicSQLA.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-handlerB.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-refB.1.5.7.authentication-failure-han