http://snz.iteye.com/blog/221280
由于ss2的demo配置太过简单,要想在项目中应用的话必须进行相应扩展,这里简单写一下简单的扩展方法。
xml头中引入security命名空间
- <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"
- default-lazy-init="true">
然后是启用ss2默认配置的一段代码
- <!--
- 2.0新增的命名空间,使得配置简化了很多
- auto-config 自动使用默认的配置
- access-denied-page 指定访问未授权页面时显示的页面
- -->
- <security:http auto-config="true" access-denied-page="/accessDenied.html">
- <security:anonymous granted-authority="BASIC" />
- </security:http>
这段代码作用是以ss2的默认配置方式加入1.0时需要手工配置的AuthenticationProcessingFilter等多个必须配置的filter,详细可参考1.0配置和2.0参考手册。
auto-config="true" 表示使用ss2自动配置
access-denied-page="/accessDenied.html"表示拒绝访问时显示的页面
<security:anonymous granted-authority="BASIC" />表示匿名权限的authority为BASIC
ss对权限的管理分为认证和授权两部分,先看认证
-
-
-
- <bean id="authenticationProcessingFilter"
- class="org.springframework.security.ui.webapp.AuthenticationProcessingFilter">
-
- <security:custom-filter before="AUTHENTICATION_PROCESSING_FILTER" />
-
- <property name="authenticationManager" ref="authenticationManager" />
-
- <property name="authenticationFailureUrl"
- value="/spring_security_login" />
-
- <property name="defaultTargetUrl" value="/index.html" />
- </bean>
这是负责认证处理的filter,中间custom-filter一行意思是将filter放在默认配置中别名为AUTHENTICATION_PROCESSING_FILTER的filter前边,即负责认证的filter(别名列表参照参考手册)。
按官方的说法,如果需要用自定义的filter覆盖默认filter,则应该将security:http标签的auto-config属性改为false,这样的话就需要增加很多手动配置项。我试了下,不改false也可以,只是运行期间会出现一个warn信息“Possible error: Filters at position 2 and 3 are both instances of xxxx”,意思是filter串中有两个相同类型的filter。
另:在2.0.2中可以使用position代替before,真正的覆盖默认filter。但是有个bug,如果使用默认登录入口的话,还是会调用默认filter,必须连登录入口一并改掉。
其引用的authenticationManager
- <!--
- 认证管理器
- 根据用户名和密码,使用多个provider进行认证
- 认证成功会生成一个Authentication,否则抛出AuthenticationException
- -->
- <bean id="authenticationManager"
- class="org.springframework.security.providers.ProviderManager">
- <property name="providers">
- <list>
- <ref local="daoAuthenticationProvider" />
- </list>
- </property>
- </bean>
认证管理器通过多个provider实现基于用户名和密码的认证,多个provider中只要有一个认证成功,即成功。
这里只使用了一个daoPorvider
- <!--
- 认证的provider
- userDetailsService 根据用户名获取用户信息
- userCache ehcache缓存user信息。
- -->
- <bean id="daoAuthenticationProvider"
- class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
- <property name="userDetailsService" ref="userDetailsService" />
- <property name="userCache" ref="userCache" />
- </bean>
userDetailsService:根据登录的用户名获取一个UserDetails,即代表一个用户的实体对象。
-
- <bean id="userDetailsService"
- class="org.catspaw.ss2test1.security.UserDetailsSerivceImpl">
- <property name="userDao" ref="userDao" />
- </bean>
UserDetailsSerivceImpl代码
- package org.catspaw.ss2test1.security;
-
- import org.catspaw.ss2test1.dao.UserDao;
- import org.springframework.dao.DataAccessException;
- import org.springframework.security.userdetails.UserDetails;
- import org.springframework.security.userdetails.UserDetailsService;
- import org.springframework.security.userdetails.UsernameNotFoundException;
-
-
-
-
-
-
-
-
- public class UserDetailsSerivceImpl implements UserDetailsService {
-
- private UserDao userDao;
-
- public UserDao getUserDao() {
- return userDao;
- }
-
- public void setUserDao(UserDao userDao) {
- <span cla
分享到:
相关推荐
学习Spring Security 2.0 和 3.0 的中文文档,将帮助开发者深入理解如何配置和使用其核心组件,以及如何处理常见的安全问题。文档通常会包含详细的配置示例、API参考、教程和最佳实践,帮助开发者构建安全的Java应用...
包含了一系列简单的示例,用于演示如何配置和使用Spring Security。 - **3.2. Contacts** 通过这个示例展示如何在实际的应用场景中使用Spring Security。 - **3.3. LDAP例子** 展示了如何使用LDAP作为用户...
在本文中,我们将深入探讨如何在Spring Security 2.0版本中配置并使用AOP(面向切面编程)来实现方法级别的权限控制。首先,我们需要理解Spring Security的基础概念。 1. **Spring Security基本架构** Spring ...
Spring Security OAuth2.0 提供了 `ResourceServerConfigurerAdapter`,可以配置资源服务器的保护规则,如哪些URL需要令牌,以及如何验证令牌。 此外,Spring Security OAuth2.0 还支持自定义权限控制。通过实现`...
Spring Security 2.0允许开发者通过XML或Java配置进行高度定制。你可以自定义认证提供者、权限决策管理器、访问决策投票器,甚至可以完全替换默认的过滤器链。这种灵活性使得Spring Security能够适应各种复杂的应用...
通过SpringSecurityTest这个压缩包文件,你可以找到相关的示例代码和配置,以帮助你更好地理解这些概念。动手实践是学习Spring Security的最佳途径,你可以尝试修改配置,观察不同设置对应用程序安全行为的影响。 ...
在Spring Cloud 2.0版本中,Eureka Server的配置相比1.x版本确实有了一些显著的变化,尤其是在结合Spring Security进行安全设置时。Spring Cloud Eureka是Netflix Eureka的Spring Boot实现,它为微服务架构提供了...
**Spring Security 2.0 知识点详解** Spring Security 是一个强大且高度可定制的权限访问控制框架,主要用于Java应用程序的安全性管理。在2.0版本中,它提供了全面的解决方案来保护Web应用程序免受各种安全威胁。...
终于实现了spring security 2.0 基于数据库的配置,可以连接数据库了,呵呵,由于加入了spring,jar包有些大,没有上传jar,或者新建一个工程,加入spring,然后将jar考过来或者从其他模块中考入jar, 这个工程下的...
在`springsecurity-sample`中,你将找到实际的代码实现,如配置文件、控制器、服务和DAO,展示了如何将这些概念应用于实际项目。通过对这些示例的分析和学习,你可以更好地理解和实践Spring Security 2.0.x的安全...
在Spring Security 2.0的时代,这个框架已经非常成熟,为开发者提供了许多关键功能,如身份验证、授权、访问控制以及会话管理。以下是对Spring Security 2.0的一些核心知识点的详细解释: 1. **身份验证**:Spring ...
对于那些不希望使用XML的开发者,Spring Security 2.0引入了基于Java的配置API,使得配置过程更加直观和模块化。 综上所述,Spring Security 2.0为开发者提供了一套全面、灵活且易于使用的安全框架,无论是在小型...
Acegi,现已被Spring Security 2.0完全取代,是Java应用程序的一个安全框架,主要用于实现企业级应用的安全控制。这个框架提供了丰富的功能,包括用户登录提示、身份验证、权限检查、访问控制、会话管理以及与各种...
Spring Security和OAuth 2.0是两个在Web应用安全领域广泛应用的框架,它们结合使用可以构建强大的单点登录(SSO)和认证授权系统。在这个系统中,`xp-sso-server`代表了认证服务器,而`xp-sso-client-a`和`xp-sso-...
本书可能涵盖了自动配置、起步依赖、健康检查、Actuator监控、Spring Data、Spring Security等核心概念。自动配置是Spring Boot的一大亮点,它可以根据项目中的依赖自动配置相关组件,极大地减少了手动配置的工作量...
使用 Spring Security OAuth 2.0,可以快速构建 OAuth 2.0 验证和授权系统。 首先,需要创建一个 Spring Boot 项目,然后添加 Spring Security OAuth 2.0 依赖项。接下来,需要配置 OAuth 2.0 配置,包括客户端配置...
Spring Security OAuth2.0 是一个广泛使用的Java安全框架,它为构建安全的Web应用程序提供了强大的支持。OAuth2.0是授权框架的一个标准,允许第三方应用在用户授权的情况下访问其私有资源,而无需共享用户的登录凭证...
从Spring-2.0开始可以使用命名空间的配置方式。 使用它呢,可以通过附加xml架构,为传统的spring beans应用环境语法做补充。 你可以在spring参考文档得到更多信息。 命名空间元素可以简单的配置单个bean,或使用更...
使用Spring Security OAuth2.0时,需要配置`http`元素以保护URL,设置过滤器链,如`OAuth2AuthenticationProcessingFilter`和`OAuth2AccessDeniedHandler`,确保只有持有有效令牌的请求才能访问受保护的资源。...