shiro简单理解

Shiro 的优点

 > 简单的身份认证, 支持多种数据源

 > 对角色的简单的授权, 支持细粒度的授权(方法级)

 > 支持一级缓存,以提升应用程序的性能;

 > 内置的基于 POJO 企业会话管理, 适用于 Web 以及非 Web 的环境

 > 非常简单的加密 API

 > 不跟任何的框架或者容器捆绑, 可以独立运行

Shiro 的核心组件

 Shiro 架构 3 个核心组件:

   > Subject: 正与系统进行交互的人, 或某一个第三方服务.

    所有 Subject 实例都被绑定到(且这是必须的)一个SecurityManager 上。

   > SecurityManager: Shiro 架构的心脏, 用来协调内部各安全组件, 管理内部组件实例, 并通过它来提供安全管理的各种服务.

    当 Shiro 与一个 Subject 进行交互时, 实质上是幕后的SecurityManager 处理所有繁重的 Subject 安全操作。

   > Realms: 本质上是一个特定安全的 DAO. 当配置 Shiro 时, 必须指定至少一个 Realm 用来进行身份验证和/或授权.

   Shiro 提供了多种可用的 Realms 来获取安全相关的数据. 如关系数据库(JDBC), INI 及属性文件等.

可以定义自己 Realm 实现来代表自定义的数据源。

Shiro认证过程

  ①. 应用程序代码调用Subject.login 方法,传递创建好的包含终端用户的 Principals(身份)和 Credentials(凭证)的 AuthenticationToken 实例

  ②. Subject 实例: 通常为DelegatingSubject(或子类)委托应用程序的 SecurityManager 通过调用securityManager.login(token) 开始真正的验证。

  ③.SubjectManager 接收 token,调用内部的 Authenticator 实例调用 authenticator.authenticate(token).Authenticator 通常是一个ModularRealmAuthenticator 实例, 支持在身份验证中协调一个或多个Realm 实例

  ④. 如果应用程序中配置了一个以上的 Realm, ModularRealmAuthenticator 实例将利用配置好的AuthenticationStrategy来启动 Multi-Realm 认证尝试. 在Realms 被身份验证调用之前, 期间和以后,AuthenticationStrategy 被调用使其能够对每个Realm 的结果作出反应.

  ⑤. 每个配置的 Realm 用来帮助看它是否支持提交的AuthenticationToken. 如果支持, 那么支持 Realm 的 getAuthenticationInfo 方法将会伴随着提交的 token 被调用.getAuthenticationInfo 方法有效地代表一个特定 Realm 的单一的身份验证尝试。

Shiro授权过程

  ①. 应用程序或框架代码调用任何Subject 的hasRole*, checkRole*, isPermitted*,或者checkPermission*方法的变体, 传递任何所需的权限

  ②. Subject 的实例—通常是DelegatingSubject(或子类), 调用securityManager 的对应的方法.

  ③.SecurityManager 调用 org.apache.shiro.authz.Authorizer 接口的对应方法.默认情况下,authorizer实例是一个 ModularRealmAuthorizer 实例, 它支持协调任何授权操作过程中的一个或多个Realm 实例

  ④. 每个配置好的 Realm 被检查是否实现了相同的Authorizer 接口. 如果是, Realm 各自的 hasRole*, checkRole*,isPermitted*,或 checkPermission* 方法将被调用。

如何配置在 Spring 中配置使用 Shiro

  ①. 在 web.xml 中配置 Shiro 的 Filter

  ②. 在 Spring 的配置文件中配置  Shiro:

   > 配置自定义 Realm:实现自定义认证和授权

   > 配置 Shiro 实体类使用的缓存策略

   > 配置 SecurityManager

   > 配置保证 Shiro 内部 Bean 声明周期都得到执行的 Lifecycle Bean 后置处理器

   > 配置AOP 式方法级权限检查

> 配置 ShiroFilter


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值