`
peterwanghao
  • 浏览: 124082 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Apache Shiro 架构

 
阅读更多

下图显示了Shiro核心系统架构:


l Subject

与软件系统需要交互的实体(用户、第三方服务、定时器任务等等),在系统中需要进行身份认证的对象。

l SecurityManager

SecurityManager是Shiro的心脏,可以协调其管理的组件以确保它们能在一起工作。可以为每一个用户提供所需的安全操作。

l Authenticator

Authenticator是核实用户身份的组件,当用户进行登录时会执行此组件。Authenticator会从一个或多个Realms里获取存储的用户/账号信息,来确保用户身份的真实性。

在进行身份认证时如果配置了多个Realms,可以通过设定认证策略(Authentication Strategy)来定义认证成功或是认证失败的规则。比如是否所有的Realms都认证通过了才算成功,还是第一个认证通过即算成功等等。

l Authorizer

Authorizer是实现访问控制的组件。可控制用户能够访问应用中的哪些内容,比如资源、Web页面等。Authorizer也可以从多个数据源里获取角色或是权限信息。

l SessionManager

创建和管理用户会话的生命周期。可以在所有环境下为用户提供一个强健的Session体验。在本安全框架下提供一个本地化的企业级会话管理,可不需要Web/Servlet或EJB容器。

SessionDAO可将会话保存到任何的数据源中,实现Session持久化操作。

l CacheManager

对Shiro的其他组件提供缓存支持。因为Shiro能够访问多个后台数据源进行身份认证、授权和会话管理,因此需要使用缓存来提高性能。目前任何开源的或商业的缓存产品都能够被放入Shiro框架中来提供一个快速及高效的用户体验。

l Cryptography

Shiro的crypto包提供了易于使用和理解的加密操作,哈希算法和不同的编码器/解码器的实现。Shiro的CryptoAPI简化了复杂的java机制,使加密这样复杂的安全操作对于普通人也易于使用。

l Realms

Realms是Shiro与安全数据之间的“桥梁”或“连接器”。你可以根据你的需求配置多个Realm(通常一个数据源就是一个Realm)。当进行身份认证或授权时可以配置好的Realms中获取相关数据,并且访问Realms的策略是可以自定义的。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics