Shiro-用户手册

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Shiro用户手册

Shiro架构介绍

一、什么是Shiro

Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功

能:

* 认证-用户身份识别,常被称为用户登录”

«授权-访问控制;

* 密码加密-保护或隐藏数据防止被偷窥;

* 会话管理-每用户相关的时间敏感的状态。

对于任何一个应用程序,Shiro都可以提供全面的安全管理服务。并且相对于其他安全框架, Shiro要简单的多。

Shiro的架构介绍

Subject :即当前操作用户”但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Accou nt )或其他类似事物。它仅仅意味着当前跟软件

交互的东西”。但考虑到大多数目的和用途,你可以把它认为是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 主要组件还包括:

Authe nticator :认证就是核实用户身份的过程。这个过程的常见例子是大家都熟悉的 用户

/密码”组合。多数用户在登录软件系统时,通常提供自己的用户名(当事人)和支持他们的 密码(证书)。如果存储在系统中的密码(或密码表示)与用户提供的匹配,他们就被认为 通过认证。

Authorizer :授权实质上就是访问控制-控制用户能够访问应用中的哪些内容, 比如资源、

Web 页面等等。

Sessio nMan ager :在安全框架领域,

Apache Shiro 提供了一些独特的东西:可在任何应

用或架构层一致地使用 Session API 。即,Shiro 为任何应用提供了一个会话编程范式 -从

小型后台独立应用到大型集群

Web 应用。这意味着,那些希望使用会话的应用开发者,不

必被迫使用Servlet 或EJB 容器了。或者,如果正在使用这些容器,开发者现在也可以选择 使用在任何层统——致的会话

API ,取代Servlet 或EJB 机制。

CacheManager :对Shiro 的其他组件提供缓存支持。

Web MVC

^Subjsct) 日町

Local / In*Process

VM / Network Bounds

Security Manager

Authenticator

Authorizer

g

RDBMS LDAP

PrDpri&tai^

Standalone Application

Acbve

Directory

Authentication^ _ Sti^Legy

J

Session Manager

Rflx SikBrlight Swing (^Subjed)

C/C++ C# .NE T

Memory, RDBMS, p 旳 Tata 已 etc.

Cache Manager

Session

DAO

{cache)

Pluggable Realms (1 or more) JDflC Rea m

LDAP

Realm @auh j

CuytOTT i Raa )m

Shiro认证

认证就是验证用户身份的过程。在认证过程中,用户需要提交实体信息(Principals)和凭据信息(Credentials)以检验用户是否合法。最常见的实体/凭证”组合便是用户名/密码”组合。

亠、Shiro认证过程

1、收集实体/凭据信息

Java代码曲

1. //Example using most common scenario of username/password pair:

2. UsernamePasswordToken token = new UsernamePasswordToken(username, passwor

d);

3. // ” Rememb Me" built-in:

4. token.setRememberMe( true );

UsernamePasswordToke n 支持最常见的用户名/密码的认证机制。同时,由于它实现了RememberMeAuthenticationToken 接口,我们可以通过令牌设置记住我"的功能。

但是,已记住”和已认证”是有区别的:

已记住的用户仅仅是非匿名用户,你可以通过subject.getPri ncipals()获取用户信息。但是

它并非是完全认证通过的用户,当你访问需要认证用户的功能时,你仍然需要重新提交认证信息。

这一区别可以参考亚马逊网站,网站会默认记住登录的用户,再次访问网站时,对于非敏感

的页面功能,页面上会显示记住的用户信息,但是当你访问网站账户信息时仍然需要再次进

行登录认证。

2、提交实体/凭据信息

Java代码理

1. Subject currentUser = SecurityUtils.getSubject();

2. currentUser」o gin(token);

收集了实体/凭据信息之后,我们可以通过SecurityUtils工具类,获取当前的用户,然后通

过调用login方法提交认证。

相关文档
最新文档