Apache Shiro 使用手册(一)Shiro架构介绍

一、什么是Shiro 
Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能:

  • 认证 - 用户身份识别,常被称为用户“登录”;
  • 授权 - 访问控制;
  • 密码加密 - 保护或隐藏数据防止被偷窥;
  • 会话管理 - 每用户相关的时间敏感的状态。

对于任何一个应用程序,Shiro都可以提供全面的安全管理服务。并且相对于其他安全框架,Shiro要简单的多。

二、Shiro的架构介绍 
首先,来了解一下Shiro的三个核心组件:Subject、 SecurityManager 和 Realms。 如下图: 
 
Subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。但考虑到大多数目的和用途,你可以把它认为是Shiro的“用户”概念。 
Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。

SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。

Realm: Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。 
从这个意义上讲,Realm实质上是一个安全相关的DAO:它封装了数据源的连接细节,并在需要时将相关数据提供给Shiro。当配置Shiro时,你必须至少指定一个Realm,用于认证和(或)授权。配置多个Realm是可以的,但是至少需要一个。 
Shiro内置了可以连接大量安全数据源(又名目录)的Realm,如LDAP、关系数据库(JDBC)、类似INI的文本配置资源以及属性文件等。如果缺省的Realm不能满足需求,你还可以插入代表自定义数据源的自己的Realm实现。

Shiro完整架构图:

 
除了上文所讲Subject、SecurityManager 、Realm三个核心组件外,Shiro主要组件还包括: 
Authenticator :认证就是核实用户身份的过程。这个过程的常见例子是大家都熟悉的“用户/密码”组合。多数用户在登录软件系统时,通常提供自己的用户名(当事人)和支持他们的密码(证书)。如果存储在系统中的密码(或密码表示)与用户提供的匹配,他们就被认为通过认证。

Authorizer :授权实质上就是访问控制 - 控制用户能够访问应用中的哪些内容,比如资源、Web页面等等。

SessionManager :在安全框架领域,Apache Shiro提供了一些独特的东西:可在任何应用或架构层一致地使用Session API。即Shiro为任何应用提供了一个会话编程范式 - 从小型后台独立应用到大型集群Web应用。这意味着,那些希望使用会话的应用开发者,不必被迫使用Servlet或EJB容器了。或者,如果正在使用这些容器,开发者现在也可以选择使用在任何层统一一致的会话API,取代Servlet或EJB机制。

CacheManager :对Shiro的其他组件提供缓存支持。

来源: http://kdboy.iteye.com/blog/1154644

来自为知笔记(Wiz)

时间: 2024-12-09 23:56:38

Apache Shiro 使用手册(一)Shiro架构介绍的相关文章

Apache Shiro 使用手册 链接目录整理

1.Apache Shiro 使用手册(一)Shiro架构介绍 2.Apache Shiro 使用手册(二)Shiro 认证 3.Apache Shiro 使用手册(三)Shiro 授权 4.Apache Shiro 使用手册(四)Realm 实现 5.Apache Shiro 使用手册(五)Shiro 配置说明 Apache Shiro 使用手册 链接目录整理

Apache Shiro 使用手册(三)Shiro 授权

授权即访问控制,它将判断用户在应用程序中对资源是否拥有相应的访问权限. 如,判断一个用户有查看页面的权限,编辑数据的权限,拥有某一按钮的权限,以及是否拥有打印的权限等等. 一.授权的三要素 授权有着三个核心元素:权限.角色和用户. 权限 权限是Apache Shiro安全机制最核心的元素.它在应用程序中明确声明了被允许的行为和表现.一个格式良好的权限声明可以清晰表达出用户对该资源拥有的权限. 大多数的资源会支持典型的CRUD操作(create.read.update.delete),但是任何操作

Apache Shiro 使用手册(五)Shiro 配置说明

Apache Shiro的配置主要分为四部分: 对象和属性的定义与配置 URL的过滤器配置 静态用户配置 静态角色配置 其中,由于用户.角色一般由后台进行操作的动态数据,因此Shiro配置一般仅包含前两项的配置. Apache Shiro的大多数组件是基于POJO的,因此我们可以使用POJO兼容的任何配置机制进行配置,例如:Java代码.Sping XML.YAML.JSON.ini文件等等.下面,以Spring XML的配置方式为例,并且对其中的一些配置参数进行一些简单说明. Shiro对象的

(转) Apache Shiro 使用手册(三)Shiro 授权

解惑之处: 使用冒号分隔的权限表达式是org.apache.shiro.authz.permission.WildcardPermission 默认支持的实现方式. 这里分别代表了 资源类型:操作:资源ID 类似基于对象的实现相关方法,基于字符串的实现相关方法: isPermitted(String perm).isPermitted(String... perms).isPermittedAll(String... perms) 以下两种方案是等价的: subject().checkPermi

SpringMVC Shiro 使用手册关于【Shiro 授权】

授权即访问控制,它将判断用户在应用程序中对资源是否拥有相应的访问权限. 如,判断一个用户有查看页面的权限,编辑数据的权限,拥有某一按钮的权限,以及是否拥有打印的权限等等. 一.授权的三要素 授权有着三个核心元素:权限.角色和用户. 权限 权限是Apache Shiro安全机制最核心的元素.它在应用程序中明确声明了被允许的行为和表现.一个格式良好好的权限声明可以清晰表达出用户对该资源拥有的权限. 大多数的资源会支持典型的CRUD操作(create,read,update,delete),但是任何操

Kafka剖析:Kafka背景及架构介绍

<Kafka剖析:Kafka背景及架构介绍> <Kafka设计解析:Kafka High Availability(上)> <Kafka设计解析:Kafka High Availability (下)> <Kafka设计解析:Replication工具> <Kafka设计解析:Kafka Consumer解析> Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分

0809LNMP架构介绍

12.1 LNMP架构介绍 LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构 PHP是以fastcgi的方式结合Nginx的,可以理解为Nginx代理了PHP的fastcgi和LAMP不同的是,LNMP中提供web服务的是Nginx 在LNMP架构中PHP是作为一个独立的服务存在的,这个服务叫做php-fpm Nginx直接处理静态请求(支持的并发更高,速度比Apache快),动态请求转发给php-fpm处理 12.2 MySQL安装 MySQL的安装没有变化

大型网站技术架构介绍--squid

一.大型网站技术架构介绍 1.pv高  ip高 并发量 2.大型网站架构重点 1. 高性能:响应时间,TPS,系统性能计数器.缓存,消息队列等. 高可用性High Availability   99.99% 7*24 2.衡量标准:假设环境中一台或者多台服务器宕机,服务是否依然可用.解决关键办法:冗余.资源定位,健康检查.负载均衡,关键服务器冗余:web DB ,及时有效的监控和报警 3.高伸缩性[高可维护性] 是否可以用多台服务器构建集群,是否容易向集群添加新的服务器,新服务是否可提供相同的服

shiro + mybatis+ spring (只用shiro的密码校验和并发剔除)——不用权限之类

http://blog.csdn.net/changliangwl/article/details/51455833 shiro + mybatis+ spring (只用shiro的密码校验和并发剔除)——不用权限之类 标签: shirojavamybatisspring 2016-05-20 09:13 103人阅读 评论(0) 收藏 举报 分类: shiro(1) 版权声明:本文为博主原创文章,未经博主允许不得转载. [java] view plain copy </pre>