spring3security 3.0.1官方文档(中文)
6. 1. The Authentication Manager, ProviderManager FH Authentication Provider s 6.1.1. Dao Authentication Provider 6.2. UserDetails Service实现 6.2.1.内存认证 6.2. 2. JdbcDaolmpl 6.22.1.权限分组 63.密码加密 63.1.什么是散列加密? 6.3.2.为散列加点儿盐 633.散列和认证 I.wveb应用安全 7.安全过滤器链 7. 1. Delegating FilierProxy 7. 2. Filter Chain Proxy 7.2.1.绕过过滤器链 73.过滤器顺序 74.使用其他过滤器 基于框架 8.核心安全过滤器 8.1. Filter SecurityInterceptor 8.2. Exception Translation Filter 8.2. 1 Authentication Entry Point 8.2.2. Acccss Denicdhandler 8.3. Security ContextPersistence Filter 8.3. 1. Security ContextRepository 8. 4. Username PasswordAuthentication Filter 841.认让成功和失贩的应用流程 9. Basic(基本)和 Digest(摘要)验证 9.1. Basic Authentication Filter 91.1.配置 9.2. DigestAuthentication Filter 9. 1. Configuration 10. Remember-Me认证 101.概述 10.2.简单基于散列标记的方法 103.持久化标记厅法 10.4. Remember-Me接∏和实现 10.41. Token BasedRememberMe services 10.4.2. Persistent Token basedRememberMeServices 11.会话管理 I. 1 Session management Filter 11. 2. Session Authentication Strategy 11.3.同步会话 12.匿名认证 121.概述 12.2.配置 12.3. Authentication TrustResolver 授权 13.验证架构 13.1.验证 13.2.处理预调用 13.2.l. AccessDecision Manager 13.2,2.基」投票的 Access Decisionmanager实现 132.2.1. Role voter 13.2.2.2. Authenticated voter 13.2.2. 3 Custom Voters 3.3.处理后定 14.安全对象实现 14.1.AOP联盟( MethodInvocation)安全拦截器 14.1.1.精确的 Methodsecuritylterceptor配置 142. AspectJ( Join point安全拦截器 15.基于表达式的权限控制 151.概述 15.1.1.常用内建表达式 152.Web安全表达式 15.3.方法安全表达式 1531.@Prc和@ aPost注解 15.31.1.访问控制使用 (a preAuthorize和 (apostAuthorize 15.3.1.2.过滤使用@ PreFilter和a PostFilter l6. acel到 spring security的转换方式 16.1. Spring Security是什么 162.目标 16.3.步骤 16.4.总结 V.高级话题 17.领域对象安全(ACLs) 17.1.概还 17.2.关键概念 17.3.开始 18.预认证场景 18.1.预认证框架类 18.1. 1. AbstractPreAuthenticatedProcessing Filter 18.1. 2. AbstractPreAuthenticatedAuthenticationDetails Source 18.1. 2.1.J2ee BasedPreAuthenticated WebAuthentication Details Source 18.13. Pre AuthenticatedAuthentication Provider 18.1. 4. Http403 Forbiddenentry Point 182.具体实现 18.2.1.请求头认证( Siteminder) 182.1.1. Siteminder小例配置 1822.JEE容器认证 19.LDAP认证 19.1.综述 19.2.在 Spring Sccurity里使用IAP 193.配置LDAP服务器 19.3.1.使用嵌入测试服务器 19.32.使用绑定认证 19.33.读取授权 194.实现类 1941. Ldapauthenticator实现 1941.1.常用功能 19. BindAuthenticator 19.4.1.3. Password ComparisonAuthenticator 1941.4.活动目录认证 1942.链接到LDAP服务器 1943.LDAP搜索对象 19.4.3. 1. FiltcrBascdLdapuscr scarch 19.4.4. Ldap Authorities Populator 1945. Spring Bean配置 1946.LDAP属性和自定义 UserDetails 20.JSP标签库 201.声明 Taglib 20.2. authorize标签 20.3. authentication标签 20.4. accesscontrollist标签 21.Java认证和授权服务(JAAS)供应器 21.1.概述 21.2.配置 21. 2.1. JAAS CallbackHandle 21. 2. 2. JAAS Authority Granter 22.CAS认证 221.彬述 222.CAS是如何工作的 223.配置CAS客户端 23.X.509认证 231.概述 23.2.把X509认证添加到你的web系统中 23.3.为 tomcat配置SSL 24.替换验证身份 241.概述 24.2.配置 A.安仝数据厍表结构 A.1.User表 A.1.1.组权限 A.2.持久登陆( Remember -Me)表 A.3.ACL表 A.3. 1. Hypersonic SQL A.3.1.1. PostgreSQL B.安全命名空间 B.1.Web应用安全shttp元素 B.i..属性 B. 1. 1. 1. servlel-api-provision B. 1. 1. 2. path-type B.1.1.3. lowercase-comparisons B. 1.1. 4 realm B. 5. cntry-point-rcf B. 1.1.6. access-decision-manager-ref B. 1.1.7. access-denied-page B. 1.1.8. once-per-request B. 1.1.9. create-session B. 1. 2. B1.3.< Kintercept-url>元素 B. 1.3.1. pattern B. 1. 3.2. method B. 1.3.3. access B. 1.3.4. rcquires-channcl B. 1. 3.5. filters B14. port-mappings元素 B.1.5.元素 B. 1.5.1. login-page B. 1. 5.2. login-processing-url B. 1.5.3. default-target-url B. 1.5.4. always-use-default-target B. 1. 5.5. authentication-failure-url B. 1.5.6. authenticaLion-Success-handler-rel' B 1.5.7 authentication -failure-handler-ref B.1.6.元素 B1.7.< remember-me>元素 B. I.7.1. data-source-ref B. 2. token-repository-ret B. 1.7. 3. services-ref B. 1.7.4. token-repository-ref B.17.5.key属性 B. 1. 7.6. token-validitv-seconds B. 1. 7.7. user-service-ref B1.8.< session- management>元素 B. 1.8.1. session-fixation-protection B.19.< concurrent- control>元素 B.19.1. max-sessions属性 B.1.9.2. expired-uirl属性 B193. error-l- Maxlmum- exceeded属性 B.1.94. SCSS1on-registry- alias和 SCSSion- registry-rcf属性 B.1.10. s>元素 B.1.11.儿素 B.1.1.. subject-principal-regex属性 B.1.11.2.user- Service-ref属性 B.1.12.< openid-login>元素 B1.13.< logout>元素 B1.131. logout-url属性 B.1.13.2. logout- succcss-url属性 B.1.13.3. invalidate- session属性 B.1.14.< custom- filter>元素 B.2.认证服务 B2.1.< authentication- manager儿素 B.2.1.1.< authentication- provider>元素 B21.2.使用< authentication-provider>来引用个 Authentication Provider bean B.3.方法安全 B.3.1.< global-method- security>元素 B3.1.1. secured- annotations和jsr250- annotations属性 B.3.1.2.安全方法使用< protcct-pointcut.> B3.1.3.< after-invocation-provider>元素 B.32.LDAP命名空间选项 B.32.1.使用元素定义LDAP服务器 B32.2.< dap-provider>元素 B.323.< dap-user-service元素 Spring Framework spring s e Part i.入门 ⌒指南的后面部分提供对框架结构和实现类的深入讨论,了解它们,对你进行复杂的定制是 十分重要的。在这部分,我们将介绍 Spring security3.0,简要介绍该项目的历史,然后 看看如何开始在程序中使用框架。特别是,我们将看看命名控件配置提供了一个更加简单的 方式,在使用传统的 spring bean配置时,你不得不实现所有类 我们也会看看可用的范例程序。它们值得试着运行,实验,在你阅读后面的章节之前-你 可以在对框架有了更多迕接之后再回来看这些例子。也请参考项目网站获得构建项日有用 的信息,另外链接到网站,视频和教程 Spring Framework spring sour e chapter1。介绍 11. Spring Security是什么? Spring security为基于]2EE企业应用软件提供了仝面安仝服务。特别是使用领先的 ]2E解决方案- sprIng框架开发的企业软件项目。如果你没有使用 Spring开发企业软件, 我们热情的推荐你仔细研究一下。熟悉 Spring-尤其是依赖注入原理-将帮助你吏快的掌握 Spring security 人们使用 Spring security有很多种原因,不过通常吸引他们的是在J2 EE Servlet规范 或EB规范中找不到典型企业应用场景的解决方案。提到这些规范,特别要指出的是它们 小能在WAR或EAR级别进行移植。这样,如果你更换服务器环境,就要,在新的目标环 境进行大量的工作,对你的应用系统进行重新配置安全。使用 Spring Security解决了这 些问题,也为你提供了很多有用的,可定制的其他安全特性。 你可能知道,安全包括两个主要操作,“认证”和“验证”(或权限控制)。这就是 Spring Security面向的两个主要方向。“认证”是为用户建立一个他所声明的主体的过程,(“主 体”一般是指用户,设备或可以在你系统中执行行动的其他系统)。“验证指的一个用户能 在你的应用中执行某个操作。在到达授权判断之前,身份的主体已经由身份验证过程建 立了。这些概念是通用的,不是 Spring security特有的 在身份验讦层面, Spring security广泛支持各种身份验证模式。这些验讦模型绝人多数 都由第三方提供,或正在开发的有关标准机构提供的,例如 Internet Engineering Task Force。作为补充, Spring security也提供了自已的一套验证功能。 Spring security 目前支持认证一体化和如下认证技术 Http Basic authentication headers(一个基于 IEFT RFO的标准) Http Digest authentication headers(一个基于 IEFT RFO的标准) HTTP×509clientcertificateexchange(个基于IEFTRFO的标准 LDAP(一个非常常见的跨平台认证需要做法,特别是在人环境 Fom- based authentication(提供简单用户接口的需求) Openid authentication 基于预先建立的请求头进行认证(比如 Computer Associates Siteminder) JA- SIG Central authentication service(也被称为CAS,这是一个流行的开源单点登 录系统) Transparent authentication context propagation for Remote Method Invocation (RMI) and htTpinvoker(一个 SprIng远程调用协议) Automatic" remember-me" authentication(这样你可以设置一段时间,避免在一段时 间内还需要重新验业) Anonymous authentication(〔允许任何调用,自动假设个特定的安全主体) Run- as authentication(这在个会话内使用不同安全身份的时候是非常有用的) Java Authentication and Authorization Service (JAAS) JEE Container autentication(这样,你可以继续使用容器管理认证,如果想的话) Kerberos Java Open Source Single Sign On JOSSO)* OpenNMS Network Management Platform x AppFuse米 AndroMda *k Mule esb xk Direct Web request (DWr) Grails xk Tapestry TRac x Jasypt米 Roller xk Elastic plath x Atlassian crowd sk 你自凵的认让系统(向卜看) x是指由第三方提供,查看我们的整合网页,获得最新详情的链接。) 许多独立软件供应商(ISVs, independent software vendors)采用 Spring security, 是因为它拥有丰富灵活的验证模型。这样,无论终端用户需要什么,他们都可以快速集成 到系统中,不用花很多功大,也不用让用户改变运行环境。如果上述的验证机制都没有满 足你的需要, Spring securityγ是·个开放的平台,编写自己的验证机制是十分简单的 Spring security的许多企业用户需要整合不遵循仟何特定安全标准的“遗留”系统, Spring Security在这类系统上也表现的很好。 有时基本的认证是不够的。有时你需要根据在主体和应用父交互的方式米应用不同的安全措 施。比如,你可能,为了保护密码,不被窃听或受到中间人攻击,希望确保请求只通过 Https 到达。这在防止暴力攻击保护密码恢复过程特别有帮助,或者简单的,让人难以复制你的 系统的关键字内容。为了帮助你实现这些目标, Spring security完全支持自动“信道安 仝”,整合 jcaptcha一体化进行人类用户检测。 Spring securityγ不仅提供认证功能,也提供了完备的授权功能。在授权方面主要有三个 领域,授杈web请求,授权被调用方法,授权访问单个对象的实例。为了帮你了解它们之 间的区别,对照考忐授在 Servlet规范web模式安全,E]B容器管理安全,和文件系统安 全方面的授权方式。 Spring security在所有这些重要领域都提供了完备的能力,我们将 在这份参考指南的后面进行探讨。 12.历史 Spring security开始于2003年年底,灬 ̈ sprIng的 acel安全系统”。起因是 Spring开 发者邮件列表中的一个问题,有人提问是否考虑提供一个基于 sprIng的安仝实现。在当 时 Spring的社区相对较小(尤其是和今天的规模比!),其实 Spring本身是从2003年初 才作为—个 sourceforge的项目出现的。对这个问题的回应是,这的确是一个值得研究的 领域,虽然限于时间问题阳碍了对它的继续硏究。 有鉴于此,一个简单的安全实现建立起来了,但没有发布。几周之后, spring社区的其他 成员询问安全问题,代码就被提供给了他们。随后又有人请求,在2004年一月左右,有 20人在使用这些代码。另外一些人加入到这些先行者中来,并建议在 sourceforge上建 个项目,项目在2004年3月正式建立起来 在早期,项目本身没有自己的认证模块。认证过程都是依赖容器管理安全的,而 acegI则 注重授权。这在·开始是合适的,但随着越来越多用户要求提供额外的谷器支持,基于容 器认证的限制就显现出来了。还有一个有关的问题,向容器的 classpath中添加新jar 常让最终用户感到困惑,又容易出现配置错误。 随后aceg加入了认证服务。大约一年后, acegI成为 sprIng的官方子项目。经过了两 年半在许多生产软件项目中的活跃使用和数以力计的改善和社区的贡献,1.0.0最终版木发 布于2006年5月 acegI在2007年年底,正式成为 spring组合项目,被更名为“ Spring security”。 现在, Spring security成为了一个强人而又活跃的开源社区。在 Spring security支持 论坛上有成千上万的信息。有一个积极的核心开发团队专职开发,一个积极的社区定期共 亨补」并支持他们的同伴 13,发行版本号 了解 spring Security发行版号是非常有用的。它可以帮助你判断升级到新的版本是不 需要化费很大的精力。我们使用 apache便携式运行项目版本指南,可以在以下网址査看 http://apr.apache.org/versioning.html为了方便大家,我们引用页面上的一段介绍: 版本号是一个包含三个整数的组合:主要版本号.次要版本号.补丁。基本思路是主要版本 是不兼容的,大规模升级API。次要版本号在源代码和进制要与老版本保持兼容,补丁 则意味着向前向后的完全兼容。” 14.获得 Spring security 你可以通过多种方式获得 Spring security。你可以下打包好的发行包,从 Spring的网 站下载页,下载单独的jar(和实例WAR文件)从 Maven中央资源库(或者 SpringSource Maven资源厍,获得快照和里程碑发布)。可选的,你可以通过源代码创建项日。参考项 目网站获得更多细节 1.41.项目模块 在 Spring security3.0中,项目已经分割成单独的jar,这更清楚的按照功能进行分割模 块和第三方依赖。如果你在使用 Maven来构建你的项目,你需要把这些模块添加到你的
用户评论