一、简介
二、详解
三、部分标签
四、参考
*************************************
一、简介
二、详解
1、最简单的认证授权方式
2、连接数据库认证授权方式
引入的spring-security包
A、项目源码中主要配置:spring-security.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:s="http://www.springframework.org/schema/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.4.xsd" default-autowire="byType" default-lazy-init="true"> <description>SpringSecurity安全配置</description> <!-- http安全配置 --> <!-- access-decision-manager-ref="accessDecisionManager"--> <s:http auto-config="true"> <s:intercept-url pattern="/pages/league/igo/index/login.jsp" filters="none"/> <s:intercept-url pattern="/login.jsp" filters="none"/> <s:intercept-url pattern="/commons/**" filters="none"/> <s:intercept-url pattern="/images/**" filters="none"/> <s:intercept-url pattern="/css/**" filters="none"/> <s:intercept-url pattern="/js/**" filters="none"/> <s:intercept-url pattern="/**" access="ROLE_USER"/> <s:intercept-url pattern="/search/index" access="ROLE_SUPERVISOR"/> <s:form-login login-page="/pages/league/igo/index/login.jsp" default-target-url="/user/login" authentication-failure-url="/pages/league/igo/index/login.jsp?error=1" /> <s:logout logout-success-url="/pages/league/igo/index/login.jsp" /> <s:remember-me key="e37f4b31-0c45-11dd-bd0b-0800200c9a66" /> <s:concurrent-session-control max-sessions="1" exception-if-maximum-exceeded="false" expired-url="/pages/league/igo/index/login.jsp?error=3" /> </s:http> <!-- 认证配置 --> <s:authentication-provider user-service-ref="userDetailsService"> <!-- 可设置hash使用sha1或md5散列密码后再存入数据库 <s:password-encoder hash="plaintext" /> --> <!-- <s:password-encoder hash="sha" /> --> <s:password-encoder hash="md5" /> </s:authentication-provider> <!-- 项目实现的用户查询服务 --> <bean id="userDetailsService" class="com.base.platform.framework.security.UserDetailsServiceImpl" /> </beans>
B、认证和授权配置 UserDetailsServiceImpl.java
import java.util.HashSet; import java.util.List; import java.util.Set; import org.springframework.dao.DataAccessException; import org.springframework.security.GrantedAuthority; import org.springframework.security.GrantedAuthorityImpl; import org.springframework.security.userdetails.UserDetails; import org.springframework.security.userdetails.UserDetailsService; import org.springframework.security.userdetails.UsernameNotFoundException; import com.base.platform.framework.web.utils.SpringContextUtils; import com.league.myrecord.model.MyRecordBo; import com.league.myrecord.service.MyRecordServiceFacade; /** * 实现SpringSecurity的UserDetailsService接口,实现获取用户Detail信息的回调函数. * */ public class UserDetailsServiceImpl implements UserDetailsService { // @Autowired // private MyRecordServiceFacade myRecordService; /** * 获取用户Details信息的回调函数. */ public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException, DataAccessException { MyRecordBo userBo = null; try { MyRecordServiceFacade myRecordService = SpringContextUtils.getBean("myRecordService"); List loginNameList = myRecordService.findBy("loginName", userName); if(loginNameList!=null &&loginNameList.size()>0){ userBo= (MyRecordBo) loginNameList.get(0); } if (userBo == null) throw new UsernameNotFoundException("用户" + userName + " 不存在"); // GrantedAuthority[] grantedAuths = obtainGrantedAuthorities(userBo); GrantedAuthority[] grantedAuths = null; // -- mini-web示例中无以下属性, 暂时全部设为true. boolean enabled = true; boolean accountNonExpired = true; boolean credentialsNonExpired = true; boolean accountNonLocked = true; grantedAuths = obtainGrantedAuthorities(userBo); if(userBo.getLoginName().equals("ztt")) { } org.springframework.security.userdetails.User userdetail = new org.springframework.security.userdetails.User( userBo.getLoginName(), userBo.getShaPassword(), enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, grantedAuths); return userdetail; } catch (Exception e) { throw new UsernameNotFoundException("用户" + userName + " 不存在"); } } /** * 获得用户所有角色的权限集合. */ private GrantedAuthority[] obtainGrantedAuthorities(MyRecordBo userBo) { Set<GrantedAuthority> authSet = new HashSet<GrantedAuthority>(); GrantedAuthority auth = new GrantedAuthorityImpl("ROLE_USER"); GrantedAuthority auth1 = new GrantedAuthorityImpl("ROLE_SUPERVISOR"); String loginName = userBo.getLoginName(); if(loginName.equals("xiaoming")) { authSet.add(auth1); } else { authSet.add(auth); } return authSet.toArray(new GrantedAuthority[authSet.size()]); } }
三、部分标签
这个标签表达的web资源访问控制, 也是权限访问核心控制单元。 以下是几个示例:
<http pattern="/static/**" security="none"/>
表示资源 /static/** 不需要进行访问控制, 任何用户都可以访问该资源。
其中 security 是表达该资源是否受安全控制的意思, 如果是security="noe", 表示该资源并不受控, 而如果为true, 则表示该资源受控, 需要探幽定的权限才可以进入。
<http use-expressions="true"> <intercept-url pattern="/**" access="isAuthenticated()" /></http>
必须登录过了才可以访问网站的所有资源。
全站可以有多个http配置, 如果上述两个配置在一块, 如下:
<http pattern="/static/**" security="none"/><http use-expressions="true"> <intercept-url pattern="/**" access="isAuthenticated()" /></http>
上述配置表达的意思是本站所有资源都必须登录过才可以访问, 除了 /static/**
<http use-expressions="true"> <intercept-url pattern="/**" access="isAuthenticated()" /> <form-login login-page="/login.htm" login-processing-url="/login-processing.htm"/> </http>
form-login表达的是登录表单处理方案,login-page 属性表示 登录页面, login-processing-url 表示提交登录表单时的处理页面。
<http use-expressions="true"> <intercept-url pattern="/**" access="isAuthenticated()" /> <logout logout-success-url="/loggedout.jsp" delete-cookies="JSESSIONID"/> </http>
logout 这个标签表示登出操作, logout-success-url表示登出成功后的显示页面, delete-cookies表示登出时需要删除的cookies
<http use-expressions="true"> <remember-me /> </http>
remember-me表示密码会被记住, 打开登录界面时, 用户名或密码会显示在登录表单上, 点击登录会直接提交用户名和密码。
四、参考
Spring Security3十五日研究
http://www.blogjava.net/SpartaYew/archive/2011/05/19/SpingSecurity3.html
spring security 3 自定义认证,授权示例
http://chen-rojer-gmail-com.iteye.com/blog/1037973
SpringSecurity 配置(登陆验证,session失效等等)
http://blog.csdn.net/lzsf1984/article/details/8331166
Google code中springside 涉及安全部分的源码注释
spring security3.0的ACL使用例子
http://lhx1026.iteye.com/blog/819854
Official documents:
51CTO下载-Spring Security 2.0.x中文参考文档.pdf
springsecurity.pdf (2.x,3.x)
相关推荐
总的来说,这个“spring-boot spring-security-oauth2 完整demo”为学习和实践Spring Boot、Spring Security与OAuth2的结合提供了宝贵的参考。通过深入理解和实践这个示例,开发者不仅可以掌握这三大框架的基本用法...
Spring Security OAuth2是一个广泛使用的Java库,用于在Spring应用程序中实现OAuth2协议,提供安全授权服务。OAuth2是一种授权框架,允许第三方应用在用户许可的情况下访问其私有资源,如在社交媒体上的数据。2.0.3....
Spring-security配置文档教程,能够满足日常的开发配置。个人总结。
这个压缩包文件"spring-security-parent-2.0.4"是Spring Security的2.0.4版本,是一个Eclipse项目,适合开发者直接导入到Eclipse工作空间进行学习和分析。 1. **Spring Security架构**: Spring Security的架构...
- `spring-security-core-4.0.0.CI-SNAPSHOT-sources.jar`:提供源代码,便于深入学习和调试。 - `spring-security-core-4.0.0.CI-SNAPSHOT.jar`:核心模块的主要库,包括安全性元数据、认证、授权和访问决策管理...
Spring Security是Java领域中广泛应用的...总的来说,`spring-security-web 3.1.2`和`spring-security-oauth2`的源码分析将是一次深入学习Web安全和OAuth2授权的好机会,有助于提升对现代Web安全架构的理解和实践能力。
Spring Security 是一个强大的安全框架,主要用于Java web应用的安全管理。...通过学习,开发者将能够掌握如何在Spring Boot应用中有效地使用Spring Security来保护应用程序,确保数据和资源的安全。
这个zip包包含了Spring Security的核心库、文档、示例代码和其他必要的资源,便于开发者下载和学习。 Spring Security的主要功能包括: 1. **身份验证**:它提供了多种认证机制,如基于密码的认证、Remember Me...
在上述描述的"Spring-security学习"中,我们首先了解了Spring Security的基本应用场景,它通过Servlet过滤器为Web应用提供安全服务。"HelloWorld!"示例通常作为学习新工具或技术的起点,这里也不例外,虽然这个...
《Spring Security核心模块详解》 在Java开发领域,Spring Security是一个强大的、高度可配置的...尽管2.0.5.RELEASE版本相对较旧,但它仍能体现Spring Security的基本架构和设计思想,为后续版本的学习提供了基础。
Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于保护...通过学习和理解这个示例,你可以掌握Spring Security的基本用法,并将其应用到自己的项目中,保护你的应用程序免受未授权访问的威胁。
Spring Security 是一个强大的且高度可...同时,结合官方文档或相关教程,可以更深入地学习如何在实际项目中配置和使用Spring Security 3.0.5。对于新项目,可能需要考虑升级到更高版本以获取最新的安全特性和支持。
Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于Java应用程序。这个资源包是Spring Security 4.2.4的完整版本,发布于2018年2月24日,它专为Java Development Kit (JDK) 8设计。如果你的...
通过学习这个版本,我们可以了解Spring Security的基本架构和工作原理,为理解和使用更高级的版本奠定基础。同时,这个版本的API文档和JAR包对于修复旧系统中的安全问题或研究历史实现也具有参考价值。
对于学习和定制Spring Security来说,深入源码是必不可少的步骤。 在解压的`spring-security-3.0.3.RELEASE`目录中,你可以找到包括源码、文档、测试用例等相关文件,这将帮助你全面了解和掌握Spring Security ...
《深入解析Spring Security 3.1.3.RELEASE》 Spring Security是Java领域中一个强大的安全框架,它为Web应用程序提供了全面的安全性解决方案。本文将深入探讨Spring Security 3.1.3.RELEASE版本的核心特性、工作原理...
对于亚马逊云服务(AWS)的学习者来说,上述文档可能并不直接相关,但了解Spring Security对于保护云服务中的应用程序同样重要。在AWS云平台中,了解如何应用和配置Spring Security可以使得开发者能够构建出更加安全的...
学习Spring Security时,需要理解其核心组件如AuthenticationManager、UserDetailsService、AccessDecisionManager等,并熟悉XML或Java配置方式来定制安全行为。同时,实践编写安全拦截器、自定义过滤器以及处理异常...
【标题】"spring-security-helloworld" 是一个基于Spring Security框架的简单示例项目,它用于初学者理解并实践Spring Security的基础用法。Spring Security是一个强大的安全框架,为Java应用程序提供了全面的安全...
《Spring Security 2.0.5.jar:深度解析与实战指南》 在Java Web开发领域,Spring Security是一款不可或缺的安全框架,它为应用提供了强大的身份验证和授权功能。本篇文章将聚焦于Spring Security 2.0.5版本,通过...