`

Spring Security授权流程(项目中使用)

阅读更多

在扩展后的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的不正确对应形成重复,这样会导致没有权限的人也能访问到不该访问到的资源。

 

  • 大小: 16.4 KB
  • 大小: 18.5 KB
  • 大小: 24.8 KB
  • 大小: 40.7 KB
  • 大小: 20.8 KB
分享到:
评论

相关推荐

    Spring security认证授权

    在这个例子中,我们将深入探讨如何使用Spring Security进行认证和授权,并结合数据库操作进行动态配置。 首先,Spring Security的核心概念包括认证(Authentication)和授权(Authorization)。认证是确认用户身份...

    springsecurity原理流程图.pdf

    Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架,它是安全领域中Spring生态系统的一部分。Spring Security旨在为Java应用程序提供一个全面的安全解决方案,尤其适用于企业级应用场景。它主要...

    Spring Security 资料合集

    这三份资料——"实战Spring Security 3.x.pdf"、"Spring Security 3.pdf" 和 "Spring Security使用手册.pdf" 将深入探讨这些概念,并提供实践指导,帮助读者掌握如何在实际项目中应用Spring Security。通过学习这些...

    Spring Cloud Gateway 整合 Spring Security 统一登录认证鉴权

    2. **配置Spring Security**:我们需要在Spring Cloud Gateway项目中引入Spring Security依赖,并配置相关的安全配置类。这包括定义认证和授权的规则,例如基于JWT(JSON Web Tokens)的认证,或者基于OAuth2的授权...

    SpringSecurity.pdf

    进阶阶段需要深入学习如何定制认证和授权流程、如何集成各种认证方式以及如何在实际项目中进行应用。高级阶段则涉及框架的原理深入、性能优化、安全漏洞的处理和防范等高级话题。 在使用Spring Security时,开发者...

    springsecurity学习笔记

    在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...

    Spring Security+OAuth2 精讲,打造企业级认证与授权

    本课程"Spring Security+OAuth2 精讲,打造企业级认证与授权"深入浅出地讲解了这两个框架的使用和集成,旨在帮助开发者构建安全、高效的应用系统。 Spring Security是Spring生态系统中的一个强大安全框架,它提供了...

    SpringSecurity笔记,编程不良人笔记

    在本笔记中,我们将深入探讨SpringSecurity的核心概念、配置以及如何与SpringBoot结合使用。 1. **SpringSecurity核心概念** - **Filter Chain**: SpringSecurity通过一系列过滤器实现其安全功能,这些过滤器构成...

    Spring Security OAuth2认证授权示例详解

    在这个示例中,我们将深入探讨如何使用Spring Security OAuth2实现OAuth2授权流程。 1. **OAuth2的角色**: - **资源所有者**:通常是应用程序的用户,他们拥有数据,决定是否允许第三方应用访问。 - **客户端**...

    spring-security 官方文档 中文版

    ### Spring Security 官方文档中文版重要知识点解析 #### 一、Spring Security 概述 **1.1 Spring Security ...无论是构建企业级应用还是个人项目,掌握 Spring Security 的使用都将极大地提升应用的安全性和可靠性。

    java+spring-boot-jwt + spring security集成实战项目.zip

    在这个项目中,我们将学习如何使用Spring Security来保护我们的API接口,防止未经授权的访问。 JWT是一种轻量级的身份验证标准,常用于前后端分离的应用中。它允许用户信息在多个服务之间安全地传递,而无需在每个...

    SpringBoot+SpringSecurity+WebSocket

    4. 客户端支持:在前端JavaScript中使用WebSocket API建立连接,发送和接收消息。需要注意的是,由于SpringSecurity的存在,前端连接时可能需要携带认证信息。 5. 实现消息推送:在服务端,可以通过WebSocketSession...

    安全框架Spring Security深入浅出视频教程

    视频详细讲解,需要的小伙伴自行网盘下载,链接见附件,永久有效。 首先,SSM环境中我们通过xml配置的...Springsecurity在两种不同的开发模式中使用,有经典的独立web后台管理系统,也有时下最流行的前后端分离场景。

    spring security oauth2.0 (讲义+代码)

    在Spring Security中,我们可以通过配置`AuthorizationCodeServices` 和 `TokenStore` 来处理授权码和令牌的存储和验证。 资源服务器需要识别并验证OAuth2.0令牌,以保护资源不被未经授权的访问。Spring Security ...

    springsecurity使用demo

    在本示例中,我们将探讨如何使用 SpringSecurity 构建一个基本的认证和授权流程。 首先,Spring Security 的核心组件包括认证(Authentication)和授权(Authorization)。认证涉及识别用户身份,而授权则是确定...

    狂神Spring Security静态资源

    3. **使用Spring Security的访问决策管理器(AccessDecisionManager)**:如果你希望控制哪些角色可以访问静态资源,可以实现自己的访问决策管理器,然后在配置中指定使用这个管理器。 4. **使用HTTP基本认证或OAuth2...

    Spring Security实战例子

    在Spring Security项目中,Maven的pom.xml文件定义了所有必要的依赖,如Spring Security库和其他相关库,确保项目的正确运行。 **数据库配置与Security表** 为了实现用户认证和权限管理,我们需要一个数据库来存储...

    Spring security oauth源码

    同时,了解这些源码也有助于调试和解决Spring Security OAuth在实际项目中遇到的问题。 总之,Spring Security OAuth源码提供了一个深入了解OAuth 2.0协议及其在Spring生态系统中实现的绝佳机会。通过研究Sparklr2...

    Springboot整合Spring security+Oauth2+JWT搭建认证服务器,网关,微服务之间权限认证及授权

    在Spring Security中,我们可以使用OAuth2提供者模式,创建一个认证服务器,它处理客户端的授权请求,生成访问令牌。常见的OAuth2流程包括授权码(Authorization Code)流、隐式(Implicit)流、客户端凭证(Client ...

    spring security3.1.3 和 spring security3.0.0

    Spring Security是Spring生态体系中的一个核心组件,主要负责应用程序的安全性,包括认证、授权和访问控制。本话题将深入探讨Spring Security的3.0.0和3.1.3两个版本,这两个版本都是该框架历史上的重要里程碑。 ...

Global site tag (gtag.js) - Google Analytics