Shiro 入门
Apache Shiro简介
Apache Shiro:http://shiro.apache.org/download.html
是一个安全框架,Shiro可以用于SE、EE环境。
Shiro能干嘛:认证、授权、加密、会话管理、与WEB集成、缓存、测试、并发、记住我、运行方式。
API功能图:
下面对如中API组件进行解释:
主要功能:
Authentication:身份认证登录
Authorization:授权,访问控制的过程,即确定“谁”可以访问“什么”。
Session Management: 会话管理,用户登录后就是一次会话,在没有退出之前用户的所有信息都在session中。会话可以在SE、WEB环境中。
Cryptography:加密存储到数据库。
Web Support:web支持,用户web集成。
支持功能:
Caching:缓存
Concurrency: 多线程应用的并发验证,例如:线程1开启线程2,接着线程1可以将权限传给线程2。
Testing: 单元测试、集成测试
“Run As”:允许用户假定其他用户的身份(如果允许)的功能,有时在管理方案中很有用。
“Remember Me”:记住用户在会话中的身份,下次就不用登录。
注意:Shiro不会去维护用户、权限;这些需要我们自己设计,并通过相应的接口注入给Shiro即可。
Apache Shiro架构
在最高概念层面,Shiro的架构有3个主要概念:和Subject
,SecurityManager
和Realms
。
Subject:指一个抽象的用户,所有Subject都绑定到SecurityManager中去,与subject的所有交互都会委托给SecurityManager。
SecurityManager:执行者,所有有关安全的操作都会交由SecurityManager进行管理,负责与其他组件进行交互。
Realms:域,充当Shiro与应用程序安全数据之间的“桥梁”或“连接器”。shiro从realms中获取安全数据(角色、权限等),例如SecurityManager要进行验证身份,则Realms需要对用户进行身份比较看是否合法,充当安全数据源。
官方文档中的解释:
详细架构
Subject (org.apache.shiro.subject.Subject
)
SecurityManager (org.apache.shiro.mgt.SecurityManager)
Authenticator (org.apache.shiro.authc.Authenticator)
认证器,可以自定义,认证器需要认证策略。
Authenticator (org.apache.shiro.authc.Authenticator)
认证策略就是满足什么情况才能让用户通过。
Authorizer (org.apache.shiro.authz.Authorizer)
认证策略就是满足什么情况才能让用户通过。
SessionManager (org.apache.shiro.session.mgt.SessionManager)
管理session生命周期,Shiro能够在任何环境中本地管理用户Sessions,如果有多个环境,则可以自己定义分布式session。
SessionDAO (org.apache.shiro.session.mgt.eis.SessionDAO)
数据的访问对象,进行session的CRUD,SessionDAO中可以使用缓存。
CacheManager (org.apache.shiro.cache.CacheManager)
缓存控制器,管理用户的角色、权限等信息的缓存。
Cryptography (org.apache.shiro.crypto.*)
密码模块
Realms (org.apache.shiro.realm.Realm)
了解SecurityManager
功能仍然很重要,尤其是在为应用程序配置功能时。
温馨提示
关注我的公众号【Java剑主】,学习更多有深度的技术文章。本博客不在记录原创博文,请移步公众号获取最新内容。
修道注重根基,熟透原理方能看透事物本质,编程亦如此! Java修炼之道,道心坚不移!踏剑寻梦,不忘初心!