没有合适的资源?快使用搜索试试~ 我知道了~
首页Apache_Shiro_使用手册.docx
Apache_Shiro_使用手册.docx
需积分: 9 15 下载量 135 浏览量
更新于2023-03-16
评论
收藏 446KB DOCX 举报
Apache_Shiro_使用手册Apache_Shiro_使用手册Apache_Shiro_使用手册
资源详情
资源评论
资源推荐
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 的其他组件提供缓存支持。)
Shiro 认证
认证就是验证用户身份的过程。在认证过程中,用户需要提交实体信息(Principals)和
凭据信息(Credentials)以检验用户是否合法。最常见的“实体/凭证”组合便是“用户名/密码”
组合。)
一、Shiro 认证过程)
1、收集实体/凭据信息)
Java 代码))
1. //Exampleusingmostcommonscenarioofusername/passwordpair:
2. UsernamePasswordTokentoken=newUsernamePasswordToken(username,pass
word);
3. //”RememberMe”built-in:
4. token.setRememberMe(true);
UsernamePasswordToken 支持最常见的用户名/密码的认证机制。同时,由于它实现了
RememberMeAuthenticationToken 接口,我们可以通过令牌设置“记住我”的功能。)
但是,“已记住”和“已认证”是有区别的:)
已记住的用户仅仅是非匿名用户,你可以通过 subject.getPrincipals()获取用户信息。但是
它并非是完全认证通过的用户,当你访问需要认证用户的功能时,你仍然需要重新提交认
证信息。)
这一区别可以参考亚马逊网站,网站会默认记住登录的用户,再次访问网站时,对于非敏
感的页面功能,页面上会显示记住的用户信息,但是当你访问网站账户信息时仍然需要再
次进行登录认证。)
2、提交实体/凭据信息)
Java 代码))
1. SubjectcurrentUser=SecurityUtils.getSubject();
2. currentUser.login(token);
收集了实体/凭据信息之后,我们可以通过 SecurityUtils 工具类,获取当前的用户,然后通
过调用 login 方法提交认证。
3、认证处理)
Java 代码))
1. try{
2. currentUser.login(token);
3. }catch(UnknownAccountExceptionuae){...
4. }catch(IncorrectCredentialsExceptionice){...
5. }catch(LockedAccountExceptionlae){...
6. }catch(ExcessiveAttemptsExceptioneae){...
7. }...catchyourown...
8. }catch(AuthenticationExceptionae){
9. //unexpectederror?
10. }
如果 login 方法执行完毕且没有抛出任何异常信息,那么便认为用户认证通过。之后在应用
程序任意地方调用 SecurityUtils.getSubject() 都可以获取到当前认证通过的用户实例,使
用 subject.isAuthenticated()判断用户是否已验证都将返回 true.
相反,如果 login 方法执行过程中抛出异常,那么将认为认证失败。Shiro 有着丰富的层次
鲜明的异常类来描述认证失败的原因,如代码示例。)
二、登出操作)
登出操作可以通过调用 subject.logout()来删除你的登录信息,如:)
Java 代码))
1. currentUser.logout();//removesallidentifyinginformationandinvali
datestheirsessiontoo.
当执行完登出操作后,Session 信息将被清空,subject 将被视作为匿名用户。)
三、认证内部处理机制)
以上,是 Shiro 认证在应用程序中的处理过程,下面将详细解说 Shiro 认证的内部处理机制。
)
如上图,我们通过 Shiro 架构图的认证部分,来说明 Shiro 认证内部的处理顺序:)
1、应用程序构建了一个终端用户认证信息的 AuthenticationToken 实例后,调用
Subject.login 方法。)
2、Sbuject 的实例通常是 DelegatingSubject 类(或子类)的实例对象,在认证开始时,
会委托应用程序设置的 securityManager 实例调用 securityManager.login(token)方法。)
剩余20页未读,继续阅读
bbbbbbbbbb
- 粉丝: 0
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 27页智慧街道信息化建设综合解决方案.pptx
- 计算机二级Ms-Office选择题汇总.doc
- 单链表的插入和删除实验报告 (2).docx
- 单链表的插入和删除实验报告.pdf
- 物联网智能终端项目设备管理方案.pdf
- 如何打造品牌的模式.doc
- 样式控制与页面布局.pdf
- 武汉理工Java实验报告(二).docx
- 2021线上新品消费趋势报告.pdf
- 第3章 Matlab中的矩阵及其运算.docx
- 基于Web的人力资源管理系统的必要性和可行性.doc
- 基于一阶倒立摆的matlab仿真实验.doc
- 速运公司物流管理模式研究教材
- 大数据与管理.pptx
- 单片机课程设计之步进电机.doc
- 大数据与数据挖掘.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0