Springsecurity

1. Springsecurity 的简介
SpringSecurity 一个能够为基于 Spring 的企业应用系统提供声明式的安全訪问控制解决方式 的安全框架(简单说是对访问权限进行控制嘛),应用的安全性包括用户认证(Authentication) 和用户授权(Authorization)两个部分。用户认证指的是验证某个用户是否为系统中的合法主体, 也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名 和密码来完成认证过程。用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中, 不同用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可 以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。 springsecurity 的主要核心功能为认证和授权,所有的架构也是基于这两个核心功能去实现的。
2. 框架原理
对 web 项目得资源安全性得保护,最好得方法是使用 Filter,对方法进行保护,最好得方式使用 AOP。SpringSecurity 对目进行认证和用户得授权时,基于 Sevrvlet 过滤器和 SpringAOP,通过 各种各样得拦截器来实现的权限控制,提供了安全性解决方案,可以在 web 项目请求和方法调 用过程中处理身份认证和授权,从而实现对项目得安全管理。
3. 核心功能
主要核心核心功能:认证,授权。 认证:指验证某个用户是否是系统中得合法用户,用户是否可以访问该系统,一般要求用户提供 用户名和密码进行登录认证。 授权:指验证某个用户是否有权限执行某个操作,在一个系统中,不同用户所拥有得权限是不同 得,系统会根据不同得角色分配不同得功能。
4. 框架的核心组件
SecurityContextHolder:提供对 SecurityContext 的访问 SecurityContext,:持有 Authentication 对象和其他可能需要的信息 AuthenticationManager 其中可以包含多个 AuthenticationProvider ProviderManager 对象为 AuthenticationManager 接口的实现类 AuthenticationProvider 主要用来进行认证操作的类 调用其中的 authenticate()方法去进行认证操 作 Authentication:SpringSecurity 方式的认证主体
AAA 教育软件学院 学术部编辑 QQ:83193980
技术成就梦想 软件创造价值 143
GrantedAuthority:对认证主题的应用层面的授权,含当前用户的权限信息,通常使用角色表示 UserDetails:构建 Authentication 对象必须的信息,可以自定义,可能需要访问 DB 得到 UserDetailsService:通过username构建UserDetails对象,通过loadUserByUsername根据userName 获取 UserDetail 对象 (可以在这里基于自身业务进行自定义的实现 如通过数据库,xml,缓存获 取等)
5. springsecurity 实现方式
1. 配置文件实现,只需要在配置文件中指定拦截的 url 所需要权限、配置 userDetailsService 指 定用户名、密码、对应权限,就可以实现。 2. 实现 UserDetailsService,loadUserByUsername(String userName)方法,根据 userName 来实现 自己的业务逻辑返回 UserDetails 的实现类,需要自定义 User 类实现 UserDetails,比较重要的方 法是 getAuthorities(),用来返回该用户所拥有的权限。 3. 通过自定义 filter 重写 spring security 拦截器,实现动态过滤用户权限。 4. 通过自定义 filter 重写 spring security 拦截器,实现自定义参数来检验用户,并且过滤权限。
6. springsecurity 控制权限的几种方法
在 SpringSecurity3 的使用中,有 4 种方法: 1.全部利用配置文件,将用户、权限、资源(url)硬编码在 xml 文件中; 2.用户和权限用数据库存储,而资源(url)和权限的对应采用硬编码配置。 3.细分角色和权限,并将用户、角色、权限和资源均采用数据库存储,并且自定义过滤器, 代 替 原 有 的 FilterSecurityInterceptor 过 滤 器 , 并 分 别 实 现 AccessDecisionManager 、 InvocationSecurityMetadataSourceService 和 UserDetailsService,并在配置文件中进行相应配置。 4.修改 spring security 的源代码,主要是修改 InvocationSecurityMetadataSourceService 和 UserDetailsService 两个类。前者是将配置文件或数据库中存储的资源(url)提取出来加工成为 url 和权限列表的 Map 供 Security 使用,后者提取用户名和权限组成一个完整的(UserDetails)User 对 象,该对象可以提供用户的详细信息供 AuthentationManager 进行认证与授权使用。

原文地址:https://www.cnblogs.com/czs528/p/13527401.html