一、 SpringSecurity 框架简介
官网:https://projects.spring.io/spring-security/
源代码: https://github.com/spring-projects/spring-security/
(1)SpringSecurity 的核心功能:
Authentication:认证,用户登陆的验证(解决你是谁的问题)
Authorization:授权,授权系统资源的访问权限(解决你能干什么的问题)
安全防护,防止跨站请求,session 攻击等。
(2)认证(Authentication):应用程序确认用户身份的过程,常见认证:登录。
(3)身份(principal)/主体(Subject):认证用户的主要凭证之一。可以是账号、邮箱、手机号等。在java中主体是Object类型。
(4)凭证(Credential):用户认证过程中的依据之一。常见就是密码。
(5)授权(Authorization):判断用户具有哪些权限或角色。
(6)Spring Security所有功能都是基于Filter(过滤器)实现的。
springsecurity 可定制性更高。
二、Shiro框架简介
扒的图
Shiro是一个强大且易用的 Java 安全框架。
Shiro::用于中小型项目比较常见,简单易上手,可以支持多种环境
Shiro 可以不跟任何的框架或者容器绑定,可独立运行
三、权限管理概述
RBAC(Role Based Access Control) :某个用户拥有什么角色,被允许做什么事情(权限)
用户登录—>分配角色---->(权限关联映射)---->鉴权(拥有什么什么权限)
四、二者对比
通常来说,shiro入门更加容易,使用起来也非常简单,这也是造成shiro的使用量一直高于Spring Security的主要原因。
Spring Security因为它的复杂,所以从功能的丰富性的角度更胜一筹。其中比较典型的如:
Spring Security默认含有对OAuth2.0的支持,与Spring Social一起使用完成社交媒体登录也比较方便。shiro在这方面只能靠自己写代码实现。
还有一种普遍说法:Spring Security在网络安全的方面下的功夫更多,所以其后续的学习成本更高。