Shiro(安全框架)

Shiro简介

Apache Shiro是一个强大易用的Java框架,提供了认证、授权、会话管理和加密等功能。对于任意一个应用程序,Shiro都可以提供全面的安全管理服务,对比Spring Security,可能没有Spring Security功能强大,但是我们在实际工作中 可能并不需要那么复杂的功能,所以使用简单易用的Shirro就已经足够了。

Shiro特性

1.四大基石
Authentication(认证)、Authorization(授权)、Session Management(会话管理)、Cryptography(加密)被Shiro框架开发团队称之为应用安全的四大基石

Authentication:身份认证/登录”,验证用户是不是拥有相对应的身份(判断有没有这个用户)
Authorization:授权,即权限验证,验证某个用户是否拥有某个权限(判断某个用户拥有什么权限,可以干一些什么事)
Session Management:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所以信息都会在会话中;会话可以是普通的JavaSE环境的,也可以是Web环境的
Cryptography:加密,保护数据的安全性,通过使用加密算法保持数据安全同时易于使用。
2.其他功能
也提供了额外的功能来支持和加强在不同环境下所关注的方面,尤其是以下这些:

Web Support:Shiro的web支持的API能够轻松地帮助保护 Web 应用程序。
Caching:缓存是Apache Shiro中的第一层公民,来确保安全操作快速而又高效。
Concurrency:Apache Shiro利用它的并发特性来支持多线程应用程序。
Testing:测试支持的存在来帮助你编写单元测试和集成测试,并确保你的能够如预期的一样安全。
“Run As”:一个允许用户假设为另一个用户身份(如果允许)的功能,有时候在管理脚本很有用。
“Remember Me”:在会话中记住用户的身份,所以他们只需要在强制时候登录。

Shiro架构

对于一个好的框架,从外部看应该具有非常简单易于别人使用的API,且API契约明确;从内部来看的话,其应该有一个可扩展的架构,即非常容易插入用户自定义实现,因为任何框架都不能满足所有需求。
在这里插入图片描述
可以看到应用代码直接交互的对象是Subject,也就是说Shiro的对外API核心就是Subject;其每个API的含义如下:
Subject:主体,代表了当前 “用户”,这个用户不定是 一个具体的人,与当前应用交互的任何东西都能是Subject, 如网络爬虫,机器人等,即一个抽象概念。所有Ssubject都绑定到SecurityManager, 与Subject 的所有交互都会委托给SecurityManager,可以把Subject 人カ是一个门面,SecurityManagerオ是实际的执行者

SecurityManager:安全管理器,即所以与安全有关的操作都会与SecurityManager交互,它管理着所有的Subject;可以看出它是Shiro的核心,它负责与后面介绍的其他组件进行交互,如果学过Spring MVC你可以把它看做成DispatcherServlet前端控制器

Realm:域,Shiro从Realm对象获取安全数据(如用户,角色,权限),也就是说SecurityManager需要验证用户身份,那么它需要从Realm获取相对应的用户进行比较确定用户的身份是否合法(是否存在);也需要从Realm得到用户相应的角色 / 权限进行验证是否能进行操作;可以把Realm看出DataSource(安全数据源)

认证

Token
“用户”这个概念在框架中被抽象为主体(Subject)。用户如果想要通过认证,需要提供Principa(身份)和Credentials(凭证),从而应用能验证用户身份。这些身份和凭证信息,在Shiro框架中以Token的概念进行封装。Shrio中的认证Token和AuthenticationToken封装了这两个信息:
Principa:身份,即主体的标识属性,可以是任何东西,如用户名】邮箱等,唯一即可。一个主体可以有多个Principa,但只有一个Primary principals,一般是用户名/手机号。
Credentials:凭证证明,即只有主体知道的安全值,如密码/数字证书等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值