核心概念:Subject,SecurtiyManager,Realms
Subject:正在与软件交互的事物(可以是人,可以是第三方进程等等)
SecurityManager:管理所有所有用户相关安全的操作,如果是web应用会设置Shiro Servlet Filer 通过xml的格式,这样可以设置Security Manager 实例。若果是集群,需要用其他方式。
Realms:在Shiro与应用的安全数据之间作为桥梁或者连接者。在配置Realms时,至少配置一个Realm,多个Real的配置是被允许的。
功能:
Authentication: 确认用户身份的过程,一般与登陆相关。一般分为三步:收集用户认证信息,称为"principals",收集支撑其身份的证据,称为"credientals";提交第一步的两种信息给系统;如果系统认为二者相匹配,则认证过程成功,不匹配则认为无法认证。
Authorization: 决定用户能做些什么,能访问应用中的哪些地方,比如资源、网页。shiro允许运行时删除和创建新的角色(如果镶嵌在代码中是会破坏程序的)。和认证一样,调用最终会到达SecuriotyManager去管理。大部分安全框架到这就结束了,但是shiro框架提供了更多的功能。
Session Management:shiro独有的区别于其他的安全框架,提供了session api在任何应用和架构层次中。最重要的好处之一是独立于容器的。shiro框架提供了一种可插入的会话数据存储,这意味着你只需要配置会话组一次就可以应用在不同的部署环境中。Shiro会话的另一个好处是,如果需要的话,会话数据可以在客户技术之间共享。
(HttpSession:当用户访问网站时,服务器会创建一个会话(Session),并为该会话分配一个唯一的标识符(Session ID)。Session ID将被发送到用户的浏览器,存储在Cookie中或者在URL的查询参数中。
HttpSession是Java Servlet技术中的一个接口,它提供了一种在多个请求之间存储和检索数据的方式。在一个会话期间,HttpSession对象允许你存储和获取数据,这些数据可以在同一个会话的不同请求中使用。
HttpSession对象的工作原理是这样的:当用户第一次请求网站时,服务器会为该用户创建一个HttpSession对象,然后将Session ID发送给用户的浏览器。在随后的请求中,浏览器将Session ID发送回服务器,服务器可以根据Session ID找到相应的HttpSession对象,从而在请求之间共享数据。
通过HttpSession,你可以在一个会话期间存储和获取用户数据,例如用户登录信息、购物车信息等。在Web应用程序中,HttpSession是非常有用的,因为它允许你在多个请求之间保持数据的一致性。)
(Cookie是一种在Web浏览器和Web服务器之间传递数据的机制。它是在浏览器端存储数据的一小段文本信息,用于跟踪用户的访问和存储用户的偏好设置。
当用户首次访问一个网站时,服务器会在响应中设置一个或多个Cookie,将这些Cookie发送到用户的浏览器。浏览器会将Cookie存储在本地,并在后续请求中将它们发送回服务器。
Cookie通常用于实现以下功能:
-
会话管理:用于在用户访问同一站点的不同页面时保持用户的状态。
-
个性化设置:例如用户界面的语言、字体大小等。
-
跟踪用户行为:例如记录用户浏览历史、购物车内容等。
Cookie有一些限制,例如每个Cookie的大小通常不能超过4KB,并且浏览器有可能禁用Cookie或限制Cookie的数量。此外,Cookie还存在一些安全风险,例如Cookie劫持和跨站脚本攻击(XSS)等问题。因此,开发人员需要注意如何使用Cookie,并采取一些安全措施来保护用户的隐私和安全。
)
cryptography:密码学是隐藏或混淆数据的过程,以便窥探者无法了解它。Shiro在密码学方面的目标是简化JDK的密码学支持并使之可用。
虚拟机级别的问题。Apache Shiro目前没有处理虚拟机级别的安全问题,例如根据访问控制策略防止某些类在类加载器中加载的能力。然而,Shiro可以与现有的JVM安全操作集成,这并非不可想象--只是没有人向该项目贡献这样的工作而已。
多阶段认证。Shiro目前并不支持 "多阶段 "认证,即用户可能通过一种机制登录,然后被要求用另一种机制再次登录。然而,在基于Shiro的应用程序中,通过应用程序预先收集所有需要的信息,然后与Shiro进行交互,已经实现了这一点。在未来的Shiro版本中,确实有可能支持这一功能。
Realm写操作。目前,所有的Realm实现都支持'读'操作,用于获取认证和授权数据,以执行登录和访问控制。不支持 "写 "操作,如创建用户账户、组和角色,或将用户与角色组和权限相关联。这是因为支持这些操作的数据模型在不同的应用中差异很大,而且很难对所有Shiro用户实施 "写 "的API。
因为shiro常用于JSP开发,目前大多采用前后端分离技术,因此需要讲shiro与对应后端框架集成,因此不记录JSP相关语法,同时Session的控制认证也要转化为对JWT的管理,需要改写shiro的方法。
标签:框架,用户,Session,Cookie,shiro,Shiro,HttpSession From: https://www.cnblogs.com/WZXwzx/p/17232458.html