一、Spring Security基础学习
一.Spring Security概述
Spring Security是基于Spring的安全框架.它提供全面的安全性解决方案,同时在Web请求级别和调用级别确认和授权.在Spring Framework基础上,Spring Security充分利用了依赖注入(DI)和面向切面编程(AOP)功能,为应用系统提供声明式的安全访问控制功能,建晒了为企业安全控制编写大量重复代码的工作,是一个轻量级的安全框架,并且很好集成Spring MVC
二.Spring Security核心功能
1、认证
认证是对主体/用户身份的确认,在我们的生活中随处可见认证场景,如:小区门禁卡,人脸识别,指纹识别等都是对用户身份的确认,在传统的应用中我们通常使用用户名/用户ID和密码来进行用户的身份确认,即登录,但登录的方式不仅限制于用户名/密码的方式,认证是我们应用的第一道安全门,所以对于整个系统的安全来说显得极其重要。
2、授权
控制不同的用户访问不同的权限 ,用户认证成功后,就可以对某些资源进行访问,但是不同的用户有不同的资源访问权利,那么对用户的授权也都不一样。如:公司老板拥有对公司的所有权限,而部门主管只能有对自己管理的部门的权限,所以在程序中授权的过程就是赋予不同用户不同权限的过程。
3、RBAC角色控制
RBAC是基于角色的访问控制(Role-Based Access Control )在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。
举例:可以把部门的展示,添加,修改,删除等资源或功能打包成角色“部门管理”,然后把“部门管理”这个角色赋予某个用户,那么这个用户就是部门管理员,拥有部门的相关权限。
RBAC 认为授权实际上是Who 、What 、How 三元组之间的关系,也就是Who 对What 进行How 的操作。
- 主体(Who ) :是权限的拥有者或主体(如:User,Role)。
- 资源 (what): 是操作或对象,如:页面,菜单,按钮,控制器(controller,hanler)等
- 权限(how) :具体的权限, 如:张三可以删除员工。 那么删除员工就是一个权限
4、攻击防护
Spring Security默认即可防止会话固定攻击
二、简单DEMO
一.POM依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
</dependencies>
二.主启动类
@SpringBootApplication
public class SpringSecurityApplication {
public static void main(String[] args) {
SpringApplication.run(SpringSecurityApplication.class, args);
}
}
三.Controller
@Controller
public class AuthController {
//登录成功后重定向地址
@RequestMapping("/loginSuccess")
@ResponseBody
public String loginSuccess() {
return "登录成功";
}
}
四.测试
我配置了服务端口为8090
访问8090就会打开一个登陆界面
这里的用户默认是user,密码是随机生成的,在这里就可以看到。