Spring Security
概要
Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案
Web 应用的安全性
用户认证(Authentication)和用户授权 (Authorization)两个部分,这两点也是 Spring Security 重要核心功能
用户认证(Authentication)
用户认证指的是:验证某个用户是否为系统中的合法主体,也就是说用户能否访问 该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认 证过程。
通俗点说就是系统认为用户是否能登录
用户授权 (Authorization)
用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户 所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以 进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的 权限。
通俗点讲就是系统判断用户是否有权限去做某些事情
对比
Spring Security
Spring 技术栈的组成部分
通过提供完整可扩展的认证和授权支持保护你的应用程序
SpringSecurity 特点
- Spring 无缝整合
- 全面的权限控制
专门为 Web 开发而设计
旧版本不能脱离 Web 环境使用<br /> 新版本对整个框架进行了分层抽取,分成了核心模块和 Web 模块。单独 引入核心模块就可以脱离 Web 环境
-
Shiro
Shiro 特点:
轻量级。Shiro 主张的理念是把复杂的事情变简单。针对对性能有更高要求 的互联网应用有更好表现
通用性
好处:不局限于 Web 环境,可以脱离 Web 环境使用。
缺陷:在 Web 环境下一些特定的需求需要手动编写代码定制
常见的安全管理技术栈的组合是这样的:
• SSM + Shiro
• Spring Boot/Spring Cloud + Spring Security权限管理中的相关概念
主体
使用系统的用户或设备或从其他系统远程登录的用户等等。
简单说就是谁使用系统谁就是主体认证
权限管理系统确认一个主体的身份,允许主体进入系统。简单说就是“主体”证 明自己是谁
笼统的认为就是以前所做的登录操作授权
将操作系统的“权力”“授予”“主体”,这样主体就具备了操作系统中特定功 能的能力。
所以简单来说,授权就是给用户分配权限执行流程
- 设计主体部分进行身份认证
- 进行身份认证后,给出认证的凭证
- 进行筛选,执行通过的操作,然后进行相应的授权
- 通过判定有权限则执行、没有权限就不能执行
Shiro
概要
Apache Shiro 是 Java 的一个安全(权限)框架
• Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在 JavaSE 环境,也可以用在 JavaEE 环境
• Shiro 可以完成:认证、授权、加密、会话管理、与Web 集成、缓存 等功能简介
- Authentication:身份认证/登录,验证用户是不是拥有相应的身份;
- Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限
- Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有 信息都在会话中
- Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;
- Web Support:Web 支持,可以非常容易的集成到Web 环境;
- Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可 以提高效率Concurrency:Shiro 支持多线程应用的并发验证、
- Testing:提供测试支持;
- Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;
- Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登 录了
| Shiro | Spring Security | | —- | —- | | 简单、灵活 | 复杂、笨重 | | 可脱离Spring | 不可脱离Spring | | 粒度较粗 | 粒度较细 |
