Shiro学习——(一)Shiro简介

Shiro简介

一、Shiro是什么?

   Apache Shiro 是一个强大而灵活的开源安全框架,它干净利落地处理身份认证授权企业会话管理加密

二、Shiro可以做什么?

  • 验证用户来核实他们的身份
  • 对用户执行访问控制
  • 在任何环境下使用 Session API,即使没有 Web 或 EJB 容器
  • 在身份验证,访问控制期间或在会话的生命周期,对事件作出反应。
  • 聚集一个或多个用户安全数据的数据源,并作为一个单一的复合用户“视图”。
  • 启用单点登录(SSO)功能。
  • 为没有关联到登录的用户启用"Remember Me"服务
  • 以及更多——全部集成到紧密结合的易于使用的 API 中。

Shiro框架的特点

  Shiro 视图在所有应用程序环境下实现这些目标——从最简单的命令行应用程序到最大的企业应用,不强制依赖其 他第三方框架,容器,或应用服务器。

在这里插入图片描述

1、Shiro应用程序的四大基石——身份验证,授权,会话管理和加密
  • Authentication:有时也简称为“登录”,这是一个证明用户是他们所说的他们是谁的行为。
  • Authorization:访问控制的过程,也就是绝对“谁”去访问“什么”。
  • Session Management:管理用户特定的会话,即使在非 Web 或 EJB 应用程序。
  • Cryptography:通过使用加密算法保持数据安全同时易于使用。
2、Shiro额外功能
  • Web Support:Shiro 的 web 支持的 API 能够轻松地帮助保护 Web 应用程序。

  • Caching:缓存是 Apache Shiro 中的第一层公民,来确保安全操作快速而又高效。

  • Concurrency:Apache Shiro 利用它的并发特性来支持多线程应用程序。

  • Testing:测试支持的存在来帮助你编写单元测试和集成测试,并确保你的能够如预期的一样安全。

  • “Run As”:一个允许用户假设为另一个用户身份(如果允许)的功能,有时候在管理脚本很有用。

  • “Remember Me”:在会话中记住用户的身份,所以他们只需要在强制时候登录。

三、Shiro体系结构

Shiro架构的三个主要概念:Subject、SecurityManager、Realms

组件交互图

在这里插入图片描述

详细图

在这里插入图片描述

  • Subject(org.apache.shiro.subject.Subject) :在我们的教程中已经提到,Subject 实质上是一个当前执行用户的特定的安全“视图”。Subject可以意味着是一个对象,它还可以代表第三方服务,daemon account,cron job, 或其他类似的任何东西——基本上是当前正与软件进行交互的任何东西。 所有 Subject 实例都被绑定到(且这是必须的)一个 SecurityManager 上。当你与一个 Subject 交互时,那些交 互作用转化为与 SecurityManager 交互的特定 subject 的交互作用。

  • SecurityManager(org.apache.shiro.mgt.SecurityManager) :SecurityManager 是 Shiro 架构的心脏,并作为一种“保护伞”对象来协调内部的安全组件 共同构成一个对象图。

  • Realms(org.apache.shiro.realm.Realm) :Realms 担当 Shiro 和你的应用程序的安全数据之间的“桥梁”或“连接器”。当它实际上与安全相 关的数据如用来执行身份验证(登录)及授权(访问控制)的用户帐户交互时,Shiro 从一个或多个为应用程 序配置的 Realm 中寻找许多这样的东西。Realm 本质上是一个特定安全的 DAO:它封装了数据源的连接详细信息,使 Shiro 所需的相 关的数据可用。当配置 Shiro 时,你必须指定至少一个 Realm 用来进行身份验证和/或授权。SecurityManager 可能配置多个 Realms,但至少有一个是必须的。

  • Authenticator(org.apache.shiro.authc.Authenticator) :Authenticator 是一个对执行及对用户的身份验证(登录)尝试负责的组件。当一个用户尝试登录时,该逻辑 被 Authenticator 执行。Authenticator 知道如何与一个或多个 Realm 协调来存储相关的用户/帐户信息。从这些 Realm 中获得的数据被用来验证用户的身份来保证用户确实是他们所说的他们是谁。

    • Authentication Strategy(org.apache.shiro.authc.pam.AuthenticationStrategy) 如果不止一个 Realm 被配置,则 AuthenticationStrategy 将会协调这些 Realm 来决定身份认证尝试成功或 失败下的条件(例如,如果一个 Realm 成功,而其他的均失败,是否该尝试成功? 是否所有的 Realm 必须成功?或只有第一个成功即可?)。
  • Authorizer(org.apache.shiro.authz.Authorizer) :Authorizer 是负责在应用程序中决定用户的访问控制的组件。它是一种最终判定用户是否被允许做某事的机制。 与 Authenticator 相似,Authorizer 也知道如何协调多个后台数据源来访问角色恶化权限信息。Authorizer 使用 该信息来准确地决定用户是否被允许执行给定的动作。

  • SessionManager(org.apache.shiro.session.SessionManager) :SessionManager 知道如何去创建及管理用户 Session 生命周期来为所有环境下的用户提供一个强健的 Session 体验。这在安全框架界是一个独有的特色——Shiro 拥有能够在任何环境下本地化管理用户 Session 的能力, 即使没有可用的 Web/Servlet 或 EJB 容器,它将会使用它内置的企业级会话管理来提供同样的编程体验。 SessionDAO 的存在允许任何数据源能够在持久会话中使用。

    • SessionDAO(org.apache.shiro.session.mgt.eis.SessionDAO) :SesssionDAO 代表 SessionManager 执行Session 持久化(CRUD)操作。这允许任何数据存储被插入到会 话管理的基础之中。
  • CacheManager(org.apahce.shiro.cache.CacheManager) :CacheManager 创建并管理其他 Shiro 组件使用的 Cache 实例生命周期。因为 Shiro 能够访问许多后台数据源, 由于身份验证,授权和会话管理,缓存在框架中一直是一流的架构功能,用来在同时使用这些数据源时提高 性能。任何现代开源和/或企业的缓存产品能够被插入到 Shiro 来提供一个快速及高效的用户体验。

  • Cryptography(org.apache.shiro.crypto.*) Cryptography是对企业安全框架的一个很自然的补充。Shiro的crypto包包含量易于使用和理解的cryptographic Ciphers,Hasher(又名 digests)以及不同的编码器实现的代表。所有在这个包中的类都被精心地设计以易于 使用和易于理解。任何使用 Java 的本地密码支持的人都知道它可以是一个难以驯服的具有挑战性的动物。Shiro 的 cryptoAPI 简化了复杂的 Java 机制,并使加密对于普通人也易于使用。

  • Subject(org.apache.shiro.subject.Subject):Subject 实质上是一个当前执行用户的特定的安全“视图”。一个Subject可以意味着是一个对象,例如一个User,也可以代表第三服务或者其他类似的任何东西——基本上是当前正在与软件进行相互交互的任何东西。

  • SecurityManager:SecurityManager 是 Shiro 架构的心脏,并作为一种“保护伞”对象来协调内部的安全组件 共同构成一个对象图。

  • Realms:Realms 担当 Shiro 和你的应用程序的安全数据之间的“桥梁”或“连接器”。当他实际上与安全相关的数据进行身份验证、授权等功能进行相互交互的时候,Shiro从一个或多个应用程序中配置的Realm中寻找许多这样的东西。,Realm 本质上是一个特定安全的 DAO:它封装了数据源的连接详细信息,使 Shiro 所需的相 关的数据可用。当配置 Shiro 时,你必须指定至少一个 Realm 用来进行身份验证和/或授权。SecurityManager 可能配置多个 Realms,但至少有一个是必须的。

参考文档:Shiro文档
慢慢更新中…
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值