Shiro【初识】
一、前言
不管在什么系统中,权限控制都是必不可少的。
不同的阶段我们可能使用不同的方式来实现权限控制:
在 JavaWeb 阶段,我们可能直接通过定义 Filter 的方式来实现;
而当我们学习了那么多的框架之后,更多的是使用已经开发好的权限框架,比如:Shiro、
Spring Security。
二、ACL和RBAC
(一)ACL:Access Control List 访问控制列表
以前盛行的一种权限设计,它的核心在于用户直接和权限挂钩
优点:简单易用,开发便捷
缺点:用户和权限直接挂钩,导致在授予时的复杂性,比较分散,不便于管理
例子:常见的文件系统权限设计, 直接给用户加权限
(二)RBAC::Role Based Access Control
基于角色的访问控制系统。权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限
优点:简化了用户与权限的管理,通过对用户进行分类,使得角色与权限关联起来
缺点:开发对比ACL相对复杂
例子:基于RBAC模型的权限验证框架与应用 Apache Shiro、spring Security
三、Apache Shiro 和 spring Security
(一)基本了解
什么是 spring Security:官网基础介绍
什么是 Apache Shiro:官网基础介绍
(二)如何选择
-
Apache Shiro比Spring Security , 前者使用更简单
-
Shiro 功能强大、 简单、灵活, 不跟任何的框架或者容器绑定,可以独立运行
-
Spring Security 对Spring 体系支持比较好,脱离Spring体系则很难开发
-
SpringSecutiry 支持 Oauth 鉴权 ,Shiro需要自己实现
总结:两个框架没有谁超过谁,大体功能一致,但 Shiro 更容易上手。
四、Shiro 的四大核心模块
Shiro 有四大核心模块: 身份认证、授权、会话管理、加解密
1)什么是身份认证
Authentication,身份证认证,一般就是登录
2)什么是授权
Authorization,给用户分配角色或者访问某些资源的权限
3)什么是会话管理
Session Management, 用户的会话管理,多数情况下是web session
4)什么是加密
Cryptography, 数据加解密,比如密码加解密等
五、Shiro 的架构
1)Subject
我们把用户或者程序称为主体(如用户,第三方服务,cron作业),主体去访问系统或者资源
2)SecurityManager
安全管理器,Subject的认证和授权都要在安全管理器下进行
3)Authenticator
认证器,主要负责Subject的认证
4)Authorizer
授权器,主要负责Subject的授权,控制subject拥有的角色或者权限
5)Realm
数据域,Shiro 和安全数据的连接器, Shiro 通过 realm 去数据库获取认证授权相关信息
6)Cryptography
加解密,Shiro 包含易于使用和理解的数据加解密方法,简化了很多复杂的api
7)Cache Manager
缓存管理器,比如认证或授权信息,通过缓存进行管理,提高性能。
Java新手,若有错误,欢迎指正!