在扩展后的Spring Security3.0.2中,验证及授权的过程如下:
1、当Web服务器启动时,通过Web.xml中对于Spring Security的配置,加载过滤器链,那么在加载myFilter类时,会注入authenticationManager、accessDecisionManager、securityMetadataSource类。
2、Tomcat启动时先加载securityMetadataSource,该securityMetadataSource类在执行时会提取数据库中所有的用户权限,形成权限列表;
并循环该权限列表,通过每个权限再从数据库中提取出该权限所对应的资源列表,并将资源(URL)作为key,权限列表作为value,形成Map结构的数据。
3、当用户登录时,authenticationManager进行响应,通过用户输入的用户名和密码,然后再根据用户定义的密码(可以加算法和盐值等)进行计算并和数据库比对,
当正确时通过验证。此时myUserDetailService进行响应,根据用户名从数据库中提取该用户的权限列表,组合成UserDetails供Spring Security使用。
4、当用户点击某个功能时,触发accessDecisionManager类,该类通过decide方法对用户的资源访问进行拦截。
用户点击某个功能时,实际上是请求某个URL或Action, 无论.jsp也好,.action或.do也好,在请求时无一例外的表现为URL。
若用户点击了"login.action"这个URL之后,那么这个URL就跟那个Map结构的数据中的key对比,若两者相同,
则根据该url提取出Map结构的数据中的value来,这说明:若要请求这个URL,必须具有跟这个URL相对应的权限值。这个权限有可能是一个单独的权限,
也有可能是一个权限列表,也就是说,一个URL有可能被多种权限访问。
我们在accessDecisionManager类的decide这个方法里,将通过URL取得的权限列表进行循环,然后跟第3步中登录的用户所具有的权限进行比对,若相同,则表明该用户具有访问该资源的权利。简单地说, 在数据库中我们定义了访问“LOGIN”这个URL必须是具有ROLE_经营企业用户 权限的人来访问,那么,登录用户恰恰具有该ROLE_ADMIN权限,两者的比对过程中,就能够返回TRUE,可以允许该用户进行访问。
第2步的时候,一定要注意,securityMetadataSource类的loadResourceDefine ()方法中,形成以URL为key,权限列表为value的Map时,
要注意key和Value的对应性,避免Value的不正确对应形成重复,这样会导致没有权限的人也能访问到不该访问到的资源。
相关推荐
在这个例子中,我们将深入探讨如何使用Spring Security进行认证和授权,并结合数据库操作进行动态配置。 首先,Spring Security的核心概念包括认证(Authentication)和授权(Authorization)。认证是确认用户身份...
Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架,它是安全领域中Spring生态系统的一部分。Spring Security旨在为Java应用程序提供一个全面的安全解决方案,尤其适用于企业级应用场景。它主要...
这三份资料——"实战Spring Security 3.x.pdf"、"Spring Security 3.pdf" 和 "Spring Security使用手册.pdf" 将深入探讨这些概念,并提供实践指导,帮助读者掌握如何在实际项目中应用Spring Security。通过学习这些...
2. **配置Spring Security**:我们需要在Spring Cloud Gateway项目中引入Spring Security依赖,并配置相关的安全配置类。这包括定义认证和授权的规则,例如基于JWT(JSON Web Tokens)的认证,或者基于OAuth2的授权...
进阶阶段需要深入学习如何定制认证和授权流程、如何集成各种认证方式以及如何在实际项目中进行应用。高级阶段则涉及框架的原理深入、性能优化、安全漏洞的处理和防范等高级话题。 在使用Spring Security时,开发者...
在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...
本课程"Spring Security+OAuth2 精讲,打造企业级认证与授权"深入浅出地讲解了这两个框架的使用和集成,旨在帮助开发者构建安全、高效的应用系统。 Spring Security是Spring生态系统中的一个强大安全框架,它提供了...
在本笔记中,我们将深入探讨SpringSecurity的核心概念、配置以及如何与SpringBoot结合使用。 1. **SpringSecurity核心概念** - **Filter Chain**: SpringSecurity通过一系列过滤器实现其安全功能,这些过滤器构成...
在这个示例中,我们将深入探讨如何使用Spring Security OAuth2实现OAuth2授权流程。 1. **OAuth2的角色**: - **资源所有者**:通常是应用程序的用户,他们拥有数据,决定是否允许第三方应用访问。 - **客户端**...
### Spring Security 官方文档中文版重要知识点解析 #### 一、Spring Security 概述 **1.1 Spring Security ...无论是构建企业级应用还是个人项目,掌握 Spring Security 的使用都将极大地提升应用的安全性和可靠性。
在这个项目中,我们将学习如何使用Spring Security来保护我们的API接口,防止未经授权的访问。 JWT是一种轻量级的身份验证标准,常用于前后端分离的应用中。它允许用户信息在多个服务之间安全地传递,而无需在每个...
4. 客户端支持:在前端JavaScript中使用WebSocket API建立连接,发送和接收消息。需要注意的是,由于SpringSecurity的存在,前端连接时可能需要携带认证信息。 5. 实现消息推送:在服务端,可以通过WebSocketSession...
视频详细讲解,需要的小伙伴自行网盘下载,链接见附件,永久有效。 首先,SSM环境中我们通过xml配置的...Springsecurity在两种不同的开发模式中使用,有经典的独立web后台管理系统,也有时下最流行的前后端分离场景。
在Spring Security中,我们可以通过配置`AuthorizationCodeServices` 和 `TokenStore` 来处理授权码和令牌的存储和验证。 资源服务器需要识别并验证OAuth2.0令牌,以保护资源不被未经授权的访问。Spring Security ...
在本示例中,我们将探讨如何使用 SpringSecurity 构建一个基本的认证和授权流程。 首先,Spring Security 的核心组件包括认证(Authentication)和授权(Authorization)。认证涉及识别用户身份,而授权则是确定...
3. **使用Spring Security的访问决策管理器(AccessDecisionManager)**:如果你希望控制哪些角色可以访问静态资源,可以实现自己的访问决策管理器,然后在配置中指定使用这个管理器。 4. **使用HTTP基本认证或OAuth2...
在Spring Security项目中,Maven的pom.xml文件定义了所有必要的依赖,如Spring Security库和其他相关库,确保项目的正确运行。 **数据库配置与Security表** 为了实现用户认证和权限管理,我们需要一个数据库来存储...
同时,了解这些源码也有助于调试和解决Spring Security OAuth在实际项目中遇到的问题。 总之,Spring Security OAuth源码提供了一个深入了解OAuth 2.0协议及其在Spring生态系统中实现的绝佳机会。通过研究Sparklr2...
在Spring Security中,我们可以使用OAuth2提供者模式,创建一个认证服务器,它处理客户端的授权请求,生成访问令牌。常见的OAuth2流程包括授权码(Authorization Code)流、隐式(Implicit)流、客户端凭证(Client ...
Spring Security是Spring生态体系中的一个核心组件,主要负责应用程序的安全性,包括认证、授权和访问控制。本话题将深入探讨Spring Security的3.0.0和3.1.3两个版本,这两个版本都是该框架历史上的重要里程碑。 ...