shiro框架

Apache Shiro 是ASF旗下的一款开源软件(Shiro发音为“shee-roh”,日语“堡垒(Castle)”的意思),提供了一个强大而灵活的安全框架。可为任何应用提供安全保障— 从命令行应用、移动应用到大型网络及企业应用。
Apache Shiro提供了认证、授权、加密和会话管理功能,将复杂的问题隐藏起来,提供清晰直观的API使开发者可以很轻松地开发自己的程序安全代码。并且在实现此目标时无须依赖第三方的框架、容器或服务,当然也能做到与这些环境的整合,使其在任何环境下都可拿来使用。
Shiro将目标集中于Shiro开发团队所称的“四大安全基石”-认证(Authentication)、授权(Authorization)、会话管理(Session Management)和加密(Cryptography):
认证(Authentication):用户身份识别。有时可看作为“登录(login)”,它是用户证明自己是谁的一个行为。
授权(Authorization):访问控制过程,好比决定“认证(who)”可以访问“什么(what)”.
会话管理(SessionManagement):管理用户的会话(sessions),甚至在没有WEB或EJB容器的环境中。管理用户与时间相关的状态。
加密(Cryptography):使用加密算法保护数据更加安全,防止数据被偷窥。
此外还有一些附加的功能进行支持和加强,例如:
Web支持:利用Shiro的web支持API可以很容易地实现web程序安全;
Caching:Caching在Apache Shiro的API中是一等公民,确保安全认证的动作快速而有效。
并发(Concurrency):Apache Shiro支持多线程;
测试(Testing):支持测试,帮助你开发单元和综合测试程序确保你的代码如你所预期的那样进行安全认证。
“Run As”:允许用户使用其他用户身份(如果被允许),这在执行某些管理角本中非常有用。
“Remember Me”:在整个会话周期中(sessions)记住用户的身份,用户只需要在程序强制要求登录的情况下才需要登录。
工作流程:
subject:应用代码直接交互的对象是Subject 所有的Subject都绑定到SecurityManager 可以把Subject 看成一个门面
securityManager才是实际的执行者
SecurityManager:安全管理器 即所有与安全相关的操作都会与SecurityManager交互,并且其管理者所有的Subject
他是shiro的核心 相当于springMVC框架中的DispatcherServlet前端控制器

Realm:域 shiro从Realm中获取安全数据(如用户 角色 权限) 就是说SecurityManager要校验用户身份,那么需要
从realm中获取相应的用户进行比较一确定用户身份是否合法 也需要从Realm中得到用户相应的角色和权限验证用户是否能进行操作
可以把Realm看做DataSource既安全数据源

原文地址:https://www.cnblogs.com/xiatc/p/8944409.html