看了看Spring Web Security3.0,感觉架构很和谐。
做个小程序验证一下。
需求
1 自定义的user,role,accessDecisionManager。
2 可以配置url和role的对应关系来做web的访问权限。
s1 在web.xml中配置要应用spring web security.这个配置指明了要应用spring security,以及spring的配置文件位置。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/security.xml</param-value>
</context-param>
<!-- listener setting-->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<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>
s2 在security.xml中加入以下片断,主要由两个目的。1是配置用自己定制的AccessDecisionManager来控制web的访问权限。2是配置用自己定制的UserDetailsService来提供用户信息。
<beans:bean class="allen.MyAccessDecisionManager"
id="myAccessDecisionManager">
</beans:bean>
<http auto-config="true"
access-decision-manager-ref="myAccessDecisionManager">
<anonymous enabled="false" />
<intercept-url pattern="/**" access="allen" />
</http>
<beans:bean class="allen.MyUserDetailsService"
id="myUserDetailsService">
</beans:bean>
<authentication-manager>
<authentication-provider
user-service-ref='myUserDetailsService' />
</authentication-manager>
s3 认证相关:自定义了UserDetails
private String userName;
private String password;
private Collection<GrantedAuthority> auths;
自定义了GrantedAuthority,里面只有一个string来表明role.
定制的MyUserDetailsService,该类实现UserDetailsService,用来提供用户信息,可以从任何地方由用户名取到该用户的信息。这里可以返回自定义的UserDetails。在security.xml里面的配置指明了当需要认证时,就可以从这里得到用户信息。
@Override
public UserDetails loadUserByUsername(String arg0)
throws UsernameNotFoundException, DataAccessException {
UserDetails details = UserCache.userCache.getUser(arg0);
return details;
}
s4 授权相关:
自定义了MyAccessDecisionManager,实现了AccessDecisionManager。在security.xml里面的配置指明了当需要授权检查时,MyAccessDecisionManager会做实际的检查工作。
在decide中,可以得到一切和授权相关的东西。如何做取决于我们想怎么做。
这里检查用户的role能不能访问当前访问的url.
@Override
public void decide(Authentication authentication, Object securityObject,
Collection<ConfigAttribute> arg2) throws AccessDeniedException,
InsufficientAuthenticationException {
if (authentication == null || !authentication.isAuthenticated())
throw new InsufficientAuthenticationException("Not Authenticated");
Object principal = authentication.getPrincipal();
MyUserDetails myUserDetails = (MyUserDetails) principal;
Collection<GrantedAuthority> userRoles = authentication
.getAuthorities();
String url = null;
if (securityObject instanceof FilterInvocation) {
FilterInvocation filter = (FilterInvocation) securityObject;
url = filter.getRequestUrl();
}
if (!URLManager.manager.canAccessUrl(url, userRoles)) {
throw new AccessDeniedException("Role check fails.");
}
}
小结:spring的web security还是很和谐的。扩展很容易。用着挺舒服。
分享到:
相关推荐
spring-security-web-3.0 spring-security-taglibs-3.0 spring-security-openid-3.0 spring-security-core-3.0 spring-security-config-3.0 spring-security-aspects-3.0 spring-security-acl-3.0
在Spring Security 3.0版本中,这个框架进行了大量的改进和增强,以适应不断变化的安全需求。 Spring Security的核心概念包括: 1. **过滤器链**:这是Spring Security的主要执行机制,它通过一系列自定义的过滤器...
Spring Security 是一...总之,Spring Security 3.0提供了一套完整的安全解决方案,其核心组件包括了认证、授权、Web安全和对象级别的权限控制。理解和掌握这些jar包的功能,能够帮助开发者有效地构建安全的应用程序。
### Spring Security 3.0 自定义表结构详解 在企业级应用开发中,Spring Security作为Spring框架...通过以上步骤,开发者可以利用Spring Security 3.0实现高度定制化的权限管理方案,有效提升应用的安全性和用户体验。
Spring Security是Spring框架的一个强大且高度可定制的安全模块,用于保护基于Web和非Web的应用程序。版本3.0的发布带来了许多改进和新特性,使其成为处理安全需求的首选解决方案。本文将深入探讨Spring Security ...
这个“spring security3.0 demo”很可能是为了展示如何在实际应用中配置和使用Spring Security。 首先,Spring Security的核心概念包括: 1. **Filter Security Interceptor (FSI)**:这是Spring Security的主要...
标题 "springMVC+springSecurity3.0+maven" 指的是一个集成项目,它结合了Spring MVC、Spring Security 3.0和Maven这三个关键的Java开发工具和技术。让我们逐一深入理解这些技术及其相互之间的关系。 首先,Spring ...
SpringSecurity3.0是Spring框架的一个重要扩展,主要用于企业级应用的安全管理,提供了一套全面的访问控制和安全解决方案。本教程将深入探讨SpringSecurity3.0的核心概念、配置及其实现方式,帮助开发者理解并掌握...
在Spring Security 2.0 和 3.0 版本中,有一些重要的变化和新特性: 1. **模块化架构**: Spring Security 2.0 提供了基础的认证和授权功能,而3.0进一步强化了模块化设计。这使得开发者可以根据项目需求选择合适...
在本项目"SpringSecurity3.0 Demo"中,我们将深入探讨SpringSecurity 3.0版本的功能和用法。 首先,SpringSecurity的核心功能包括用户认证(Authentication)和权限授权(Authorization)。在3.0版本中,它引入了更...
**Spring Security 3.0.x 知识点详解** Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,广泛应用于Java企业级应用的安全管理。Spring Security 3.0.x 版本是该框架的一个重要里程碑,它提供了...
《SpringSecurity_3.0》是一本面向Java Web开发初学者和中级程序员的教程,它深入浅出地介绍了Spring Security这一强大的安全框架。Spring Security是一个为Java应用提供身份验证和授权服务的开源项目,它旨在保护...
教你使用 SpringSecurity 3.0 一步一步教你使用SpringSecurity,从保护web应用到保护业务方法调用
在实际应用中,Spring Security可用来保护RESTful API、Web页面、服务层方法等。它可以限制对特定URL的访问,也可以在Controller或Service层进行细粒度的权限控制。 总结,Spring Security 3.0 的权限管理系统为...
《Spring Security 3.0 GA 入门与深入解析》 Spring Security 是一款强大的安全框架,广泛应用于Java Web 应用程序的安全管理。在3.0 GA版本中,该框架进一步提升了性能,优化了API,并增加了许多新特性,使得安全...
Spring Security 3.0是该框架的一个重要版本,提供了许多安全控制功能,用于保护Web应用程序不受到黑客的攻击。 ### Spring Security 3.0入门知识点: 1. **Spring Security概述**: Spring Security是一个提供...
《Spring 3.0 + Spring Security 3.1.4 API 中文版》是一份集成了Spring框架3.0和Spring Security 3.1.4的中文帮助文档,旨在为开发者提供详尽的API参考和指导。这两个核心组件在企业级Java应用开发中扮演着至关重要...
9. **RESTful服务安全**:对于RESTful API,Spring Security提供了JWT(JSON Web Token)支持,允许安全地传输认证和授权信息。 10. **自定义**:Spring Security的灵活性允许开发者根据需求创建自定义策略和组件,...
Spring Security 是一个强大的Java安全框架,它为Web应用程序提供了全面的安全解决方案。在3.0.x版本中,"remember-me"功能是Spring Security提供的一种便捷方式,允许用户在关闭浏览器后仍能在一段时间内保持登录...