一、什么是权限管理
权限管理实现对用户访问系统的控制
用户可以访问而且只能访问自己被授权的资源
只要有用户和密码的系统,权限管理几乎都会出现
1.1、什么是认证
对于需要访问控制的资源用户首先经过身份认证
判断一个用户是否为合法用户的处理过程
1.2、什么是授权
认证通过后用户具有资源的访问权限-方可访问
控制能够访问哪些资源
二、Shiro概述
Apache Shiro是Java的一个安全框架
Shiro是一个强大的简单易用的Java安全框架,主要用来更便捷的认证、授权、加密、会话管理、与Web集成、缓存等
Shiro使用起来小而简单
spring中有spring security ,是一个权限框架,它和spring依赖过于紧密,没有shiro使用简单。
shiro不依赖于spring,shiro不仅可以实现web应用的权限管理,还可以实现c/s系统,分布式系统权限管理,
shiro属于轻量框架,越来越多企业项目开始使用shiro.
三、Shiro核心类
Authentication:身份认证/登录,验证用户是不是拥有相应的身份;
Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;
Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;
Cryptography:加密,保护数据的安全性
Web Support:Web支持,可以非常容易的集成到Web环境;
Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率;
Concurrency:shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;
Testing:提供测试支持;
Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;
Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。
四、Shiro三个核心概念
1、Sunject:在shiro当中我们可以统称为用户,在代码的任何地方,都能轻易获得shiro subject,一旦获得Subject,你就可以立即获得你希望用shiro为当前用户做的90%事情,比如登入、退出、访问会话、执行授权检查等
2、SecurityManager:
SecurityManager则管理所有用户的安全操作
引用了多个内部嵌套安全组件,是Shiro框架的核心
你可以把它看成DispatcherServlet前端控制器。
用于调度各种Shiro框架的服务
3、Realms:
Realms则是用户的信息认证器和用户的权限认证器
执行认证(登录)和授权(访问控制)时,Shiro会从应用配置的Realm中查找很多内容
Realm 可以理解为读取用户信息、角色及权限的 DAO
SecurityManager要验证用户身份与权限,那么它需要从Realm获取相应的信息进行比较以确定用户身份是否合法;
可以把Realm看成DataSource,即安全数据源。
五、Shiro架构
5.1、subject:主体
作用:主体可以是用户也可以是程序,主体要访问系统,系统需要对主体进行认证、授权。
5.2、securityManager:安全管理器
作用:主体进行认证和授权都是通过securityManager进行。
5.3、authenticator: 认证器
作用:主体进行认证最终通过authenticator进行的。
5.4、authorizer: 授权器
作用:主体进行授权最终通过authorizer进行的。
5.5、sessionManager:会话管理
作用: web应用中一般是用web容器对session进行管理,shiro也提供一套session管理的方式。
5.6、sessionDao:
作用:通过sessionDao管理session数据,
5.7、cacheManager: 缓存管理器
作用:主要对session和授权数据进行缓存,比如将授权数据通过cacheManager进行缓存管理,和 ehcache整合对缓存数据进行管理。
5.8、realm: 领域
作用:相当于数据源,通过realm存取认证、授权相关数据。
5.9、cryptography: 密码管理
作用:提供了一套加密/解密的组件,方便开发。比如 提供常用的散列、加/解密等功能。
写给自己的Java面试题三
最新推荐文章于 2023-09-28 11:54:08 发布