Shiro简介

1.简述                                                   

  Shiro是apache旗下一个开源安全框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证、权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架。使用shiro就可以非常快速的完成认证、授权等功能的开发,降低系统成本。

  官网地址https://github.com/apache/shiro

  Shiro的优点

  • 功能强大、 简单、灵活, 不跟任何的框架或者容器绑定,可以独立运行。

  Shiro的缺点

  • 社区不灵活,本身并没有实现缓存,需自行实现。

  Shiro特点

  • 易于理解的 Java Security API。
  • 简单的身份认证(登录),支持多种数据源(LDAP,JDBC,Kerberos,ActiveDirectory 等)。
  • 对角色的简单的签权(访问控制),支持细粒度的签权。
  • 支持一级缓存,以提升应用程序的性能。
  • 内置的基于 POJO 企业会话管理,适用于 Web 以及非 Web 的环境。
  • 异构客户端会话访问。
  • 非常简单的加密API。
  • 不跟任何的框架或者容器捆绑,可以独立运行。

2.Shiro概要架构                                               

Shiro简介

  Shiro架构包含三个主要的理念

  • Subject:主体对象,负责提交用户认证和授权信息。
  • SecurityManager:安全管理器,负责认证,授权等业务实现。
  • Realm:领域对象,负责从数据层获取业务数据。

3.Shiro详细架构                                               

Shiro简介

核心对象:认证管理对象、授权管理对象、会话管理对象、缓存管理对象、加密管理对象、realm管理对象(领域对象:负责处理认证和授权领域的数据访问问题)。

subject:与软件交互的一个特定实体(用户、第三方服务)。

SecurityManager(安全管理):Shiro的核心,用来协调管理组件工作。

Authenticator(认证管理):负责执行认证操作。

Authorizer(授权管理):负责执授权检测。

SessionManager(会话管理):负责创建并管理用户Session生命周期,提供一个强有力的Session体验。

SessionDAO:代表SessionManager执行Session持久(CRUD)动作,它允许任何存储的数据挂接到Session管理基础上。

CacheManager(缓存管理):提供创建缓存实例和管理缓存生命周期的功能。

Cryptography(加密管理):提供了加密方式的设计及管理。

Realms(领域对象):Shrio和应用程序安全数据之间的桥梁。

4.shiro认证过程                                               

Shiro简介

  认证步骤说明

  • 首先调用Subject.login(token)进行登录,其会自动委托给SecurityManager,调用之前必须通过SecurityUtils.setSecurityManager()设置。
  • SecurityManager负责真正的身份验证逻辑,它会委托给Authenticator进行身份验证。
  • Authenticator才是真正的身份验证者,Shiro API中核心的身份认证入口点,此处可以自定义插入自己的实现。
  • Authenticator可能会委托给相应的AuthenticationStrategy进行多Realm身份验证,默认ModularRealmAuthenticator会调用AuthenticationStrategy进行多Realm身份验证。
  • Authenticator会把相应的token传入Realm,从Realm获取身份验证信息,如果没有返回或抛出异常表示身份验证失败了。此处可以配置多个Realm,将按照相应的顺序及策略进行访问。

5.用户访问流程                                                 

Shiro简介

上一篇:Shiro那些事儿(一): Shiro初探


下一篇:走进shiro,构建安全的应用程序---shiro修仙序章