Apache Shiro介绍

Apache Shiro是一个功能强大、灵活的,开源的安全框架。它能够干净利落地处理身份验证、受权、企业会话管理和加密。html

Apache Shiro的首要目标是易于使用和理解。安全一般很复杂,甚至让人感到很痛苦,可是Shiro却不是这样子的。一个好的安全框架应该屏蔽复杂性,向外暴露简单、直观的API,来简化开发人员实现应用程序安全所花费的时间和精力。web

Shiro能作什么呢?算法

  • 验证用户身份
  • 用户访问权限控制,好比:一、判断用户是否分配了必定的安全角色。二、判断用户是否被授予完成某个操做的权限
  • 在非 web 或 EJB 容器的环境下能够任意使用Session API
  • 能够响应认证、访问控制,或者 Session 生命周期中发生的事件
  • 可将一个或以上用户安全数据源数据组合成一个复合的用户 “view”(视图)
  • 支持单点登陆(SSO)功能
  • 支持提供“Remember Me”服务,获取用户关联信息而无需登陆

等等——都集成到一个有凝聚力的易于使用的API。spring

Shiro 致力在全部应用环境下实现上述功能,小到命令行应用程序,大到企业应用中,并且不须要借助第三方框架、容器、应用服务器等。固然 Shiro 的目的是尽可能的融入到这样的应用环境中去,但也能够在它们以外的任何环境下开箱即用。apache

Apache Shiro Features 特性

Apache Shiro是一个全面的、蕴含丰富功能的安全框架。下图为描述Shiro功能的框架图:api

Authentication(认证), Authorization(受权), Session Management(会话管理), Cryptography(加密)被 Shiro 框架的开发团队称之为应用安全的四大基石。那么就让咱们来看看它们吧:缓存

  • Authentication(认证):用户身份识别,一般被称为用户“登陆”
  • Authorization(受权):访问控制。好比某个用户是否具备某个操做的使用权限。
  • Session Management(会话管理):特定于用户的会话管理,甚至在非web 或 EJB 应用程序。
  • Cryptography(加密):在对数据源使用加密算法加密的同时,保证易于使用。

还有其余的功能来支持和增强这些不一样应用环境下安全领域的关注点。特别是对如下的功能支持:安全

  • Web支持:Shiro 提供的 web 支持 api ,能够很轻松的保护 web 应用程序的安全。
  • 缓存:缓存是 Apache Shiro 保证安全操做快速、高效的重要手段。
  • 并发:Apache Shiro 支持多线程应用程序的并发特性。
  • 测试:支持单元测试和集成测试,确保代码和预想的同样安全。
  • “Run As”:这个功能容许用户假设另外一个用户的身份(在许可的前提下)。
  • “Remember Me”:跨 session 记录用户的身份,只有在强制须要时才须要登陆。

注意: Shiro不会去维护用户、维护权限,这些须要咱们本身去设计/提供,而后经过相应的接口注入给Shirospringboot

High-Level Overview 高级概述

在概念层,Shiro 架构包含三个主要的理念:Subject,SecurityManager和 Realm。下面的图展现了这些组件如何相互做用,咱们将在下面依次对其进行描述。服务器

  • Subject:当前用户,Subject 能够是一我的,但也能够是第三方服务、守护进程账户、时钟守护任务或者其它–当前和软件交互的任何事件。
  • SecurityManager:管理全部Subject,SecurityManager 是 Shiro 架构的核心,配合内部安全组件共同组成安全伞。
  • Realms:用于进行权限信息的验证,咱们本身实现。Realm 本质上是一个特定的安全 DAO:它封装与数据源链接的细节,获得Shiro 所需的相关的数据。在配置 Shiro 的时候,你必须指定至少一个Realm 来实现认证(authentication)和/或受权(authorization)。

咱们须要实现Realms的Authentication 和 Authorization。其中 Authentication 是用来验证用户身份,Authorization 是受权访问控制,用于对用户进行的操做受权,证实该用户是否容许进行当前操做,如访问某个连接,某个资源文件等。

详细设计见http://www.ityouknow.com/springboot/2017/06/26/springboot-shiro.html

相关文章
相关标签/搜索