- 浏览: 446573 次
- 性别:
- 来自: 大连
博客专栏
-
《Spring Secur...
浏览量:379152
文章分类
最新评论
-
蒙奇君杰:
必须感谢一番!!!愿开源的态度为更多的人所拥有,所 认同!
关于对《Spring Security3》一书的翻译说明 -
601235723:
bbjavaeye 写道你好,有个问题请教一下我配了<b ...
《Spring Security3》第四章第一部分翻译下(自定义的UserDetailsService) -
bay0902:
中国互联网的脊梁
Spring Security 3全文下载 -
hdcustc:
项目源码下载 微博网盘里的那个依赖文件损坏了啊 能否提供个可 ...
Spring Security 3全文下载 -
i641878506:
楼主辛苦, 可以提供原书的原项目文件的下载么
Spring Security 3全文下载
附录:参考材料
在本附录中,将会涉及到一些我们感觉有用的参考材料(并相当缺乏文档),而将其插入到章节的内容中又会觉得过于综合。
JBCP Pets示例代码起步
就像我们在第一章:一个不安全应用的剖析中所描述的那样,我们假设你已有了Eclipse 3.4(或3.5)IDE,并包含Web Tools Package(WTP)。示例代码按每章被组织成了不同的ZIP文件,并有一个较大的ZIP文件其中包含了编译和运行示例应用所需要的所有依赖(注意的是,当你阅读本书的时候对应于最新版本的Spring Security它们可能已经较旧了,但是鉴于示例代码和依赖是一个静态的快照,它们能够永远运行)。
我们建议你对每一章建立新的Eclipse工作空间,这样你能够切换工作空间而不用打开或关闭项目。
以下的步骤帮助你建立新的工作空间。首先,我们要导入Dependencies项目到工作空间中:
l 选择“File”按钮,接下来是“Import…”选项。选择“General”文件夹以及“Existing Projects into Workspace”并点击“Next”;
l 确保“Select root directory”选项被选中,点击“Browse...”按钮到文本框。定位到你解压Dependencies.zip的目录并点击“OK”;
l 你应该可以看到Dependencies项目被列了出来。点击“Finish”。
接下来,我们需要导入每章的源码ZIP文件。假设你已经解压了第二章:Spring Security起步的源码到目录中。
l 选择“File”菜单以及“Import…”选项。选择“General”文件夹以及“Existing Projects into Workspace”。点击“Next”;
l 确保“Select root directory”选项被选中并点击“Browse…”按钮到文本框。定位到你解压第二章源码ZIP文件的目录并点击“OK”;
l 你可以看到“JBCPPets”项目和“Servers”项目被裂了出来。将它们都选中然后点击“Finish”。
最后,我们需要将JBCP Pets web应用部署到一个Tomcat实例上(或者你喜欢的应用服务器)。
l 右键点击“JBCPPets”项目并选择“Run As”菜单。在子菜单中选择“Run on Server”菜单项;
l 这时候你可能需要创建一个新的应用服务器实例。只需要按照你应用服务器的提示直到web应用部署完成。
此时,你应该可以运行JBCP Pets应用了。如果你遇到问题,可查看如下的列表:
l Eclipse是否列出了构建错误?如果有任何的Java错误或classpath错误,它们是应该被解决的真正错误。有时候,Spring IDE插件会报出假的错误或警告;
l 查看Eclipse的应用服务器启动控制台,这里包含不成功部署的web应用的错误。最常见的问题是缺失classpath条目,或者忘记将所有的classpath条目添加到JBCPPets 项目的“Java EE Module Dependencies”。尽管这些应该已经为你做好,但是我们不能保证在任何版本的Eclipse下均好用。
对于示例代码有任何问题请联系我们——理解代码和它的概念对你来说很重要!
可用的应用事件
下面的表格,在第六章:高级配置和扩展曾经提到,列出了各种Spring Security元素所发布的全部事件并提供了第二章中引用到的认证异常。为了简便,我们移除了包名,因为所有的时间都在o.s.s.authentication.event(认证相关的事件)和o.s.s.access.event(授权相关的事件)中。
类名 |
何时触发 |
匹配的异常 |
AbstractAuthenticationEvent |
所有认证时间的通用父类。注意这是一个从来不会被抛出的抽象异常(尽管其可以被捕获) |
|
AbstractAuthenticationFailureEvent |
所有认证失败事件的通用父类。注意这是一个从来不会被抛出的抽象异常(尽管其可以被捕获) |
|
AuthenticationFailureBadCredentialsEvent |
当提供的凭证(如用户名和密码)不合法时。它能够用来(有意的)掩盖UsernameNotFoundException。 |
BadCredentialsException UsernameNotFoundException |
AuthenticationFailureConcurrentLoginEvent |
当并发session最大值超出时。 |
ConcurrentLoginException |
AuthenticationFailureCredentialsExpiredEvent |
当UserDetails标识用户凭证过期时。 |
CredentialsExpiredException |
AuthenticationFailureDisabledEvent |
当UserDetails标识用户凭证不可用时。 |
DisabledException |
AuthenticationFailureExpiredEvent |
当UserDetails标识用户账号过期时。 |
AccountExpiredException |
AuthenticationFailureLockedEvent |
当UserDetails标识用户账号被锁定时。 |
LockedException |
AuthenticationFailureProviderNotFoundEvent |
配置错误,当不能找到Authentication Provider认证用户请求时。 |
ProviderNotFoundException |
AuthenticationFailureProxyUntrustedEvent |
当CAS代理ticket不可信时。 |
|
AuthenticationFailureServiceExceptionEvent |
当底层服务(如DAO Provider)失败时,抛出的一般异常。 |
AuthenticationServiceException |
AuthenticationSuccessEvent |
当用户成功认证时。 |
|
AuthenticationSwitchUserEvent |
当成功完成用户切换行为时。 |
|
InteractiveAuthenticationSuccess Event |
当用户通过提供完整凭证认证成功时(类似于IS_FULLY_AUTHENTICATED GrantedAuthority语法) |
|
AbstractAuthorizationEvent |
所有认证事件的通用父类。 |
|
AuthenticationCredentialsNot FoundEvent |
当用户没有认证而试图触发需要访问检查的方法时。 |
|
AuthorizationFailureEvent |
当方法前或后的访问检查失败时。 |
|
AuthorizedEvent |
当方法前或后的访问检查成功时。 |
|
PublicInvocationEvent |
当未认证的安全对象请求成功时。 |
|
SessionCreationEvent |
HttpSession创建时。 |
|
SessionDestroyedEvent |
HttpSession销毁时。 |
|
Spring Security的虚拟URL
以下的URL被Spring Security视为虚拟URL,并独立于你的代码作为servelt过滤器流程的一部分进行监视(并处理)。记住的是这些URL是相对于你的web应用上下文根的。
l /j_spring_security_check——被UsernamePasswordAuthenticationFilter检查进行用户名/密码form认证;
l /j_spring_openid_security_check——被OpenIDAuthenticationFilter检查OpenID返回认证信息(从OpenID provider处);
l /j_spring_cas_security_check——基于CAS SSO登录的返回,进行CAS认证
l /spring_security_login——当配置自动生成登录页面时,DefaultLoginPageGeneratingFilter使用的URL;
l /j_spring_security_logout——LogoutFilter使用来检测退出行为;
l /saml/SSO——Spring Security SAML SSO extension SAMLProcessingFilter使用来进行SAML SSO登录请求;
l /saml/logout——Spring Security SAML SSO extension SAMLLogoutFilter使用来进行SAML SSO退出请求;
l /j_spring_security_switch_user——SwitchUserFilter使用来将用户切换至另一用户;
l /j_spring_security_exit_user——用来退出切换用户功能。
注意的是,有一些功能在本书中没有涵盖,但是在这里我们为了完整性全部包括了。
方法安全的明确bean配置
第六章源码的dogstore-explicit-base.xml文件中包含了这里bean声明的全集。我们之所以在第六章本身中没有包含它,是因为它与要表述的没有太大关系(参考第五章:精确的访问控制来了解相关bean的功能)。
以下是通过Spring bean声明启用方法安全的完整配置:
<!-- ************************************************** --> <!-- Method Authorization --> <!-- ************************************************** --> <bean class="org.springframework.security.access.intercept. aopalliance.MethodSecurityInterceptor" id="methodSecurityInterceptor"> <property name="accessDecisionManager" ref="methodAccessDecisionMan ager"/> <property name="authenticationManager" ref="customAuthenticationMan ager"/> <property name="securityMetadataSource" ref="delegatingMetadataSour ce"/> <property name="afterInvocationManager" ref="afterInvocationManager "/> </bean> <bean class="org.springframework.security.access.intercept. aopalliance.MethodSecurityMetadataSourceAdvisor" id="methodSecurityMet adataSourceAdvisor"> <constructor-arg value="methodSecurityInterceptor"/> <constructor-arg ref="delegatingMetadataSource"/> </bean> <bean class="org.springframework.aop.framework.autoproxy. DefaultAdvisorAutoProxyCreator" id="defaultAdvisorAutoProxyCreator"> <property name="beanName" value="methodSecurityMetadataSourceAdviso r"/> </bean> <bean class="org.springframework.security.access.intercept. AfterInvocationProviderManager" id="afterInvocationManager"> <property name="providers"> <list> <ref local="postAdviceProvider"/> </list> </property> </bean> <bean class="org.springframework.security.access.vote. AffirmativeBased" id="methodAccessDecisionManager"> <property name="decisionVoters"> <list> <ref bean="preAdviceVoter"/> <ref bean="roleVoter"/> <ref bean="authenticatedVoter"/> <ref bean="jsr250Voter"/> <!-- For JSR 250 Method Annotations --> </list> </property> </bean> <!-- Overall Delegating Metadata Source --> <bean class="org.springframework.security.access.method. DelegatingMethodSecurityMetadataSource" id="delegatingMetadataSource"> <property name="methodSecurityMetadataSources"> <list> <ref local="prePostMetadataSource"/> <ref local="securedMetadataSource"/> <ref local="jsr250MetadataSource"/> </list> </property> </bean> <!-- JSR 250 Method Voters --> <bean class="org.springframework.security.access.annotation. Jsr250MethodSecurityMetadataSource" id="jsr250MetadataSource"/> <bean class="org.springframework.security.access.annotation. Jsr250Voter" id="jsr250Voter"/> <!-- Spring @Secured Beans --> <bean class="org.springframework.security.access.annotation. SecuredAnnotationSecurityMetadataSource" id="securedMetadataSource"/> <!-- @Pre/@Post Method Advice Voters --> <bean class="org.springframework.security.access.prepost. PreInvocationAuthorizationAdviceVoter" id="preAdviceVoter"> <constructor-arg ref="exprPreInvocationAdvice"/> </bean> <bean class="org.springframework.security.access.prepost. PostInvocationAdviceProvider" id="postAdviceProvider"> <constructor-arg ref="exprPostInvocationAdvice"/> </bean> <bean class="org.springframework.security.access.prepost. PrePostAnnotationSecurityMetadataSource" id="prePostMetadataSource"> <constructor-arg ref="exprAnnotationAttrFactory"/> </bean> <!-- @Pre/@Post Method Expression Handler --> <bean class="org.springframework.security.access.expression.method. DefaultMethodSecurityExpressionHandler" id="methodExprHandler"/> <bean class="org.springframework.security.access.expression.method. ExpressionBasedPreInvocationAdvice" id="exprPreInvocationAdvice"> <property name="expressionHandler" ref="methodExprHandler"/> </bean> <bean class="org.springframework.security.access.expression.method. ExpressionBasedPostInvocationAdvice" id="exprPostInvocationAdvice"> <constructor-arg ref="methodExprHandler"/> </bean> <bean class="org.springframework.security.access.expression.method. ExpressionBasedAnnotationAttributeFactory" id="exprAnnotationAttrFact ory"> <constructor-arg ref="methodExprHandler"/> </bean>
请注意,明确的bean配置与你使用的Spring Security版本密切相关(就像我们在第六章提到的)。如果在你版本的Spring Security中使用列出的bean遇到问题,请参考o.s.s.config.method.GlobalMethodSecurityBeanDefinitionParser。
这个配置启用了JSR-250的@Secured和@Pre/@Post注解。如果你不使用它们要注释掉或移除相关的支持bean(如@Secured)。记住,SecurityMetadataSource和AccessDecisionVoter都要移除。
逻辑过滤器名字迁移参考
正如在第十三章:迁移到Spring Security 3所讨论的,很多逻辑过滤器名(在<custom-filter>用到)在从Spring Security 2升级到Spring Security 3时发生了变化。这里我们提供了所有的变化,来方便你从Spring Security 2 到3对自定义过滤器的配置:
Spring Security 2 |
Spring Security 3 |
CHANNEL_FILTER |
CHANNEL_FILTER |
CONCURRENT_SESSION_FILTER |
CONCURRENT_SESSION_FILTER |
SESSION_CONTEXT_INTEGRATION_ FILTER |
SECURITY_CONTEXT_FILTER |
LOGOUT_FILTER |
LOGOUT_FILTER |
PRE_AUTH_FILTER |
PRE_AUTH_FILTER |
CAS_PROCESSING_FILTER |
CAS_FILTER |
AUTHENTICATION_PROCESSING_FILTER |
FORM_LOGIN_FILTER |
OPENID_PROCESSING_FILTER |
OPENID_FILTER |
Spring Security 2没有提供LOGIN_PAGE_FILTER |
LOGIN_PAGE_FILTER |
Spring Security 2没有提供DIGEST_AUTH_FILTER |
DIGEST_AUTH_FILTER |
BASIC_PROCESSING_FILTER |
BASIC_AUTH_FILTER |
Spring Security 2没有提供REQUEST_CACHE_FILTER |
REQUEST_CACHE_FILTER |
SERVLET_API_SUPPORT_FILTER |
SERVLET_API_SUPPORT_FILTER |
REMEMBER_ME_FILTER |
REMEMBER_ME_FILTER |
ANONYMOUS_FILTER |
ANONYMOUS_FILTER |
Spring Security 2没有提供SESSION_MANAGEMENT_FILTER |
SESSION_MANAGEMENT_FILTER
|
EXCEPTION_TRANSLATION_FILTER |
EXCEPTION_TRANSLATION_FILTER |
NTLM_FILTER |
Spring Security 3中移除了NTLM_FILTER |
FILTER_SECURITY_INTERCEPTOR |
FILTER_SECURITY_INTERCEPTOR |
SWITCH_USER_FILTER |
SWITCH_USER_FILTER |
评论
发表评论
-
《Spring In Action》第三版译序
2013-07-12 12:19 2895《Spring In Action》第三 ... -
Tomcat源码解读系列(四)——Tomcat类加载机制概述
2012-09-23 22:23 10276声明:源码版本为Tomcat 6.0.35 ... -
Tomcat源码解读系列(三)——Tomcat对HTTP请求处理的整体流程
2012-09-09 22:34 6766声明:源码版本为Tomcat 6.0.35 前面的文章 ... -
Tomcat源码解读系列(二)——Tomcat的核心组成和启动过程
2012-09-02 16:59 6208声明:源码版本为Tom ... -
Tomcat源码解读系列(一)——server.xml文件的配置
2012-08-25 07:31 6284Tomcat是JEE开发人员最常用到的开发工具,在Jav ... -
Spring Security 3全文下载
2012-03-15 20:31 20096本书已经翻译完成,提供给大家下载 以下地址为ITEYE的电子 ... -
《Spring Security3》第十三章翻译(迁移到Spring Security 3)
2012-02-13 22:50 5177第十三章 迁移到Spring Security 3 ... -
《Spring Security3》第十二章翻译(Spring Security扩展)
2012-02-13 22:38 7782第十二章 Spring Security扩展 ... -
《Spring Security3》第十一章(客户端证书认证)第二部分翻译
2012-02-13 22:23 4756在Spring Security中配置客户端证书认证 ... -
《Spring Security3》第十一章(客户端证书认证)第一部分翻译
2012-02-13 22:00 6114第十一章 客户端证书认证(Client Cert ... -
《Spring Security3》第十章(CAS)第二部分翻译(CAS高级配置)
2012-01-19 13:07 8564高级CAS配置 ... -
《Spring Security3》第十章(CAS)第一部分翻译(CAS基本配置)
2012-01-19 12:54 12212第十章 使用中心认证服务(CAS)进行单点登录 ... -
《Spring Security3》第九章(LDAP)第三部分翻译(LDAP明确配置)
2012-01-19 12:44 6377明确的LDAP bean配置 ... -
《Spring Security3》第九章(LDAP)第二部分翻译(LDAP高级配置)
2012-01-19 12:36 7075LDAP的高级配置 一旦我们 ... -
《Spring Security3》第九章(LDAP)第一部分翻译(LDAP基本配置)
2012-01-19 12:22 6094第九章 LDAP目录服务 在本章中,我们 ... -
《Spring Security3》第八章第三部分翻译(属性交换)
2012-01-18 15:46 2863属性交换(Attribute Exchange) ... -
《Spring Security3》第八章第二部分翻译(OpenID用户的注册)
2012-01-18 13:39 5308OpenID用户的注册问 ... -
《Spring Security3》第八章第一部分翻译(OpenID与Spring Security)
2012-01-17 22:38 7493第八章 对OpenID开放 OpenID是 ... -
《Spring Security3》第七章第三部分翻译(ACL的注意事项)
2012-01-17 22:25 2648典型ACL部署所要考虑的事情 ... -
《Spring Security3》第七章第二部分翻译(高级ACL)(下)
2012-01-17 22:17 4133支持ACL的Spring表达式语言 SpEL对A ...
相关推荐
Spring Security三份资料,实战Spring Security 3.x.pdf;Spring Security 3.pdf;Spring Security使用手册.pdf
Spring Security 2.0.x 参考手册 中文版
spring security3 中文版本
很多独立软件供应商,因为灵活的身份验证模式二选择Spring Security。这样做允许他们快速的集成到他们的终端客户需求的解决方案而不用进行大量工程或者改变客户的环境。如果上面的验证机制不符合你的需求,Spring ...
Spring Security 3.pdf Spring Security 3.pdf Spring Security 3.pdf Spring Security 3.pdf
spring参考文档及SpringSecurity参考文档
struts2 + spring3 + hibernate3 + spring security3 + mysql + tomcat sys_users;sys_roles;sys_authorities;sys_resources;sys_users_roles;sys_roles_authorities;sys_authorities_resources; PS:此项目运行不...
3、Spring Security 2.x Overview 4、Dive Into Spring Security Authentication Authorization 5、Development Experiences & Demo 6、Q & A 张明星 5年以上保险、电信大中型项目开发经验,对JavaEE有较深入理解...
Spring Security 3.x 参考手册 中文版 CHM版 绝对真实! 请打不开的网友自己检查下自己的电脑设置,CHM格式有时候有打不开的可能,下不了的,请检查下自己的网络。
spring security spring security 中文文档
简单的 springSecurity3例子代码
Spring security4.0中文版参考手册
(1)该项目是基于spring3+struts2+hibernate3+spring security3的权限管理项目 (2)后台我已经实现了权限管理,包括用户,角色和资源的分配。前台实现了spring security3的管理 (3)网上案例普遍是后台单一登陆。...
spring security方面的学习资料,包含:Spring+Security+3+与+CAS单点登录配置;Spring+Security3中文教程;Spring-Security安全权限管理手册;Spring+Security文库;还有一个学习笔记!
项目应用到spring3,security3,hibernate4,struts2;应用中涉及到安全认证,目前项目有独立的统一认证网关,所以登录时只需要将安全认证网关的认证后信息塞到spring security中,由security3来管理用户的权限设置。...
三更springsecurity学习笔记
SpringSecurity学习总结源代码
Spring Security in Action
Spring Security3 Demo ,根据Spring Security 安全权限管理手册 整理出的例子。 通过eclipse部署。
Spring.Security.3 英文参考手册 Reference 带目录,可搜索