spring security 2.0的配置文件可以使用spring2.0的命名空间配置,大大减少了配置量,最显著的一点就是省掉了那个长长的filter串。
1.0时需要先配置一个filter代理,由filter代理来执行acegi其他的功能filter:
<bean id="filterChainProxy"
class="org.acegisecurity.util.FilterChainProxy">
<property name="filterInvocationDefinitionSource">
<!--所有需要用的acegi的filter都必须按顺序在这排列好-->
<value>
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/**=httpSessionContextIntegrationFilter,logoutFilter,authenticationProcessingFilter,basicProcessingFilter,securityContextHolderAwareRequestFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterSecurityInterceptor
</value>
</property>
</bean>
web.xml里配置filter代理:
<filter>
<filter-name>AcegiFilterChainProxy</filter-name>
<filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>
<init-param>
<param-name>targetClass</param-name>
<param-value>org.acegisecurity.util.FilterChainProxy</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>AcegiFilterChainProxy</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
然后再一个一个配置相应的功能filter,相当繁琐。
2.0只需要
<security:http auto-config="true">
</security:http>
web.xml里:
<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>
ss就会自动代理几个基本的功能filter(如AuthenticationProcessingFilter),filter也有了默认配置,不必在一个个去配置。
使用security命名空间需要将spring配置文件的头上加上security命名空间的xsd:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.xsd">
。。。
</beans>
security:http标签内还可以包含其他的功能标签,如:
<security:http auto-config="true">
<security:anonymous
granted-authority="${security.anonymous.authorities}" />
</security:http>
可以提供匿名访问支持,相当于1.0时的非基本的功能filter,remember-me等也可以这样实现。
不过事实上ss的默认实现是很简陋的,提供的demo里都是使用内存数据库,权限配置也都是写死到配置文件里,根本无法在项目中应用,进行相应的扩展是不可避免的。
ss也提供了覆盖默认配置的方法:<security:custom-filter position="alias"/>,position为相应filter的别名。
对应关系:
CHANNEL_FILTER |
ChannelProcessingFilter |
CONCURRENT_SESSION_FILTER |
ConcurrentSessionFilter |
SESSION_CONTEXT_INTEGRATION_FILTER |
HttpSessionContextIntegrationFilter |
LOGOUT_FILTER |
LogoutFilter |
X509_FILTER |
X509PreAuthenticatedProcessigFilter |
PRE_AUTH_FILTER |
Subclass of AstractPreAuthenticatedProcessingFilter |
CAS_PROCESSING_FILTER |
CasProcessingFilter |
AUTHENTICATION_PROCESSING_FILTER |
AuthenticationProcessingFilter |
BASIC_PROCESSING_FILTER |
BasicProcessingFilter |
SERVLET_API_SUPPORT_FILTER |
classname |
REMEMBER_ME_FILTER |
RememberMeProcessingFilter |
ANONYMOUS_FILTER |
AnonymousProcessingFilter |
EXCEPTION_TRANSLATION_FILTER |
ExceptionTranslationFilter |
NTLM_FILTER |
NtlmProcessingFilter |
FILTER_SECURITY_INTERCEPTOR |
FilterSecurityInterceptor |
SWITCH_USER_FILTER |
SwitchUserProcessingFilter |
比如:
<bean id="logoutFilter"
class="org.springframework.security.ui.logout.LogoutFilter">
<security:custom-filter position="LOGOUT_FILTER" />
<!-- 退出后指向的 URL -->
<constructor-arg value="${security.logout_success_url}" />
<constructor-arg>
<list>
<bean
class="org.springframework.security.ui.logout.SecurityContextLogoutHandler" />\
</list>
</constructor-arg>
<property name="filterProcessesUrl"
value="${security.logout_processes_url}" />
</bean>
这个filter将覆盖默认的logoutFilter
分享到:
相关推荐
《Spring Boot2.0项目开发综合实训》指导手册v1.0是一本专注于Java开发者学习Spring Boot 2.0框架的实战教程。该手册详细介绍了如何利用Spring Boot 2.0进行高效、便捷的Web应用开发,涵盖了从基础概念到高级特性的...
Spring Security OAuth 是一个用于保护RESTful Web服务的框架,它为OAuth 1.0a和OAuth 2.0协议提供了全面的支持。在这个源码中,我们可能会看到如何将Spring Security与OAuth结合,以构建安全的Web应用程序和服务。...
《Spring 2.0 技术手册》是继 Spring 1.0 之后的重要著作,作者林信良针对 Spring 框架在 2.0 版本中的新特性进行了深入剖析与讲解。本书不仅适合于已经有一定 Java 开发基础的学习者,也适用于想要深入了解 Spring ...
- **使用命名空间配置方式**:从2.0版本开始,Spring Security引入了一种新的命名空间配置方式,这种方式可以极大地简化配置文件的编写工作。通过这种方式,开发者可以用较少的代码实现相同的功能。 #### 四、结论 ...
* 使用 Spring Boot 的自动配置机制来简化配置 Spring Boot 2.0 的使用方法 要使用 Spring Boot 2.0,需要按照以下步骤进行: 1. 创建 Maven 或 Gradle 项目 2. 添加 Spring Boot 依赖项 3. 配置 application....
7. **组件扫描与自动装配**:在Spring 2.0中,可以通过组件扫描(Component Scanning)和自动装配(Auto Wiring)进一步简化配置。组件扫描可以自动发现类上的特定注解,如`@Component`,然后将其注册为bean。自动...
4. **Spring Security OAuth**:它是Spring Security的扩展,提供了OAuth 1.0a和2.0的支持,帮助开发者轻松实现OAuth安全机制。 5. **OAuth的用例**:常用于API保护,例如Web应用调用API,移动应用访问服务器资源等...
9. **JMS和AMQP更新**:对于消息传递,Spring 5提供了更好的JMS 2.0和AMQP 1.0支持,简化了消息驱动应用程序的开发。 10. **REST客户端改进**:RestTemplate被替换为更强大的WebClient,提供了非阻塞和反应式的HTTP...
该框架使用了特定的方式(如自动配置)来简化Spring应用的整个搭建过程,让配置变得更简单,减少样板代码。 **2.2 Spring Boot 历史** Spring Boot 于 2014 年初首次发布,随着 Spring 框架的发展而不断更新和完善...
2006年发布的Spring 2.0版本开始支持注解,极大地方便了基于注解的配置。2009年的Spring 3.0版本对模块进行了重组,并提供了基于Java的Bean配置(JavaConfig),同时开始支持REST风格的Web服务。这一系列版本的更新...
接着,需要创建app-context.xml文件,用于配置Spring的应用程序上下文。该文件的内容如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...
首先,Spring Boot 2.0 是整个系统的基础,它简化了Spring应用的初始化和配置过程。Spring Boot以其依赖管理和自动配置特性,使得开发者能够快速搭建项目,同时提供内置的Tomcat服务器,支持热部署,极大地提高了...
这部分可能通过Spring Security或Apache Shiro等安全框架实现。 4. **新闻管理**:系统应提供新闻的添加、编辑、删除、查找和排序等功能。新闻可能还可以关联图片、视频等多媒体资源,并支持富文本编辑。 5. **...
此外,系统可能涉及到的Java技术栈包括Spring Boot框架,这是一个快速开发微服务的利器,它简化了配置并提供了丰富的功能,如自动配置、内嵌Web服务器、数据访问支持等。Spring Security则可以用来处理OAuth 2.0授权...
这通常可以通过在`pom.xml`文件中引入`keycloak-spring-boot-starter`依赖来实现,它会自动配置Spring Security以与Keycloak服务器通信。同时,我们需要在`application.properties`或`application.yml`中配置...
Spring Boot是基于Spring框架的快速开发工具,它简化了配置并提供了“开箱即用”的特性。在SSO场景中,Spring Boot用于构建服务端和客户端应用。其核心特性包括自动配置、内嵌Web服务器(如Tomcat或Jetty)、以及对...
- **OAuth 2.0**简化了流程并增加了更多的安全性,涉及的角色包括: - **Resource Owner**(资源所有者):拥有资源的用户。 - **Client**(客户端):请求访问资源的应用程序。 - **Resource Server**(资源...
在Java中,这可能是一个基于Servlet Filter的实现,如Spring Security或Apache Shiro等框架提供的功能。 2. **共享票据存储**:验证后的票据需要在各个系统间共享,可以是内存、数据库或分布式缓存等存储方式。 3....