Spring Security基本入门
1、为什么要使用权限框架
权限管理是所有后台系统的都会涉及的一个重要组成部分,主要目的是对不同的人访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,隐私数据泄露等问题。
2、权限管理的常见方案
2.1、权限框架 Shiro
Shiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份 认证,权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架。Shiro最大的特点是 不跟任何的框架或者容器捆绑,可以独立运行。
如果我们项目,没有使用到Spring框架,可以考虑使用Shiro。Shiro在小项目使用比较常见。
Shiro 最大的问题在于和 Spring 家族的产品进行整合时较为不便。在Spring Boot 推出的很长一段时间里,Shiro 都没有提供相应的 starter,后来虽然有一个 shiro-spring-boot-web-starter 出来,但配置并没有简化多少。所以在 Spring Boot/Spring Cloud 技术栈的微服务项目中,Shiro几乎不存在优势。
2.2、使用拦截器(过滤器)+JWT 实现地址鉴权
我们的SpringMVC框架是遵循Servlet规范的,其中存在过滤器和拦截器的概念。我们可以通过使用拦截器和过滤器+JJWT实现权限的校验
2.3、使用AOP进行鉴权
这种方式本质上是在方法执行前进行权限校验。
2.4、权限框架 Spring Security
Spring Security是一个功能强大且高度可定制的,主要负责为Java程序提供声明式的身份验证和访问控制的安全框架。前身是Acegi Security,后来被收纳为Spring的一个子项目,并更名为了Spring Security。
3、权限框架核心概念
3.1、认证
请求认证:判断一个用户是否为合法用户的处理过程,最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户和口令是否一致,来判断用户身份是否正确。
如下图所示:
3.2、授权
授权就是用户登录后,控制用户是否有权限访问某些资源。如下图所示: