转载:https://www.cnblogs.com/sankt/p/9278886.html
介绍demo项目前,简单说明一下Shiro框架的特性。
1. Apache Shiro Features
从上图可以看出Shiro具备应用程序安全框架的四大基石”:身份验证、授权、会话管理和密码。
Authentication:有时被称为‘登录’,这是需要明确用户是谁
Authorization:访问控制,即确定‘谁’对‘什么’有访问权限。
Session Management:管理特定用户的会话,即使在非web或EJB应用程序中也是如此。
Cryptography:使用加密算法保持数据安全,但易于使用。
在不同的应用程序环境中,还有更多的特性来支持和增强这些关注点,特别是:
Web Support:Shiro的Web支持API帮助轻松地保护web应用程序。
Caching:缓存是ApacheShiro的API中的第一等公民,以确保安全操作同时保持快速和高效。
Concurrency:ApacheShiro支持具有并发特性的多线程应用程序。
Testing:提供测试支持,以帮助编写单元和集成测试,并确保代码如预期的安全。
Run as:允许用户假定另一个用户的身份(如果允许的话)的特性,有时在管理场景中很有用。
Remember Me:记住用户在会话中的身份,这样他们就只需要在强制的情况下输入口令登录。
2. High-Level Overview
Shiro的体系结构有三个主要概念:Subject、SecurityManager和Realms。下图展现了它的运行原理,
主题:主题本质上是当前正在执行的用户。虽然“用户”这个词通常意味着一个人,一个主题可以是一个人,但它也可以代表一个第三方服务、守护进程帐户、cron作业或任何类似的东西-基本上是任何当前与软件交互的东西。Subject实例都绑定到(并且需要)一个SecurityManager。当与主题交互时,这些交互转化为与SecurityManager的特定主题交互。
SecurityManager:SecurityManager是Shiro体系结构的核心,它将其内部安全组件协调在一起形成一个对象图。然而,一旦为应用程序配置了SecurityManager及其内部对象图,它通常会被单独使用,应用程序开发人员将几乎所有的时间都花在Subject API上。当与一个主题交互时,实际上是幕后的SecurityManager为任何主题安全操作做了所有繁重的工作。
领域:领域充当Shiro和应用程序安全数据之间的“桥梁”或“连接器”。当涉及到实际与用户帐户等安全相关的数据交互以执行身份验证(登录)和授权(访问控制)时,Shiro从一个或多个为应用程序配置的领域中查找数据。从这个意义上说,领域本质上是一个特定于安全的DAO:它封装数据源的连接细节,并根据需要将相关数据提供给Shiro。配置Shiro时,必须指定至少一个用于身份验证和/或授权的域。SecurityManager可以配置多个Realm,但至少需要一个。Shiro提供了开箱即用的领域,以连接到许多安全数据源(也称为目录),如LDAP、关系数据库(JDBC)、INI和属性文件等文本配置源。
3. Detailed Architecture