apache shiro基础概念

apache shiro基础概念

一、什么是权限管理

1、概念

只要有用户系统的的软件,基本上都会涉及的权限管理,权限管理实现对用户访问系统的控制。一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源

2、分类

  1. 页面权限: 比如我们后台管理员界面就不允许普通用户访问

  2. 操作权限

  3. 数据权限

3、组成

  1. 用户认证

    用户去访问系统,系统需要验证用户身份的合法性。最常用的用户身份认证方法:用户密码、证书,指纹,人脸识别等方法。系统验证用户身份合法,用户方可访问系统的资源

  2. 用户授权

    用户授权,简单理解为访问控制,在用户认证通过后,系统对用户访问资源进行控制,当用户具有资源的访问权限方可访问。

4、认证授权流程图

image

二、什么是 apache shiro

Apache Shiro是一个功能强大且易于使用的Java安全框架,提供了认证,授权,加密,和会话管理,如同 Spring security 一样都是是一个权限安全框架,但是与Spring Security相比,在于他使用了和比较简洁易懂的认证和授权方式。

三、Apache Shiro 核心功能

1、结构图

image

2、Authentication

身份认证,有时也简称为“登录”,这是一个证明用户是他们所说的他们是谁的行为

3、Authorization

授权权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;

4、Session Manager

会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通 JavaSE 环境的,也可以是如 Web 环境的;

5、Cryptography

加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;

6、Web Support

Web 支持,可以非常容易的集成到 Web 环境

7、Caching

缓存,比如用户登录后,其用户信息、拥有的角色 / 权限不必每次去查,这样可以提高效率;

8、Remember Me

记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。

9、Concurrency

shiro 支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;

10、Run As

允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;

11、Testing

提供测试支持;

注意: 需要注意的是,Shiro 不会去维护用户、维护权限;这些需要我们自己去设计 / 提供;然后通过相应的接口注入给 Shiro 即可。

四、Apache Shiro 的三大概念

1、概念

应用软件通常是基于用户背景情况设计的。也就是说,你将经常设计用户接口或服务API,基于一个用户将要(或应该)如何与该软件交互。例如,你可能会说,“如果用户与我的应用程序交互的用户已经登录,我将显示一个他们能够点击的按钮来查看他们的帐户信息。如果他们没有登录,我将显示一个登录按钮。”

这个简单的陈述表明应用程序很大程度上的编写是为了满足用户的要求和需要。即使该“用户”是另一个软件系统而不是一个人类,你仍然得编写代码来响应行为,基于当前与你的软件进行交互的人或物。

image

2、Subject

当前用户的操作

是程序安全视角的user。然而user通常指人类,但Subject可以是人,也可以指第三方的服务,守护进程账户,定时任务,或者其他类似的东西-基本上可以是和软件交互的任何事物。

Subject 的实例都绑定在SecurityManager上。当你和subject交互时,SecurityManager把交互转化为subject领域的交互

3、SecurityManager

用于管理所有的Subject

SecurityManager是Shiro架构的核心,他扮演着伞对象的角色(持有各组件引用,协调调用),来协调它内部的安全组件,他们一块来形成对象视图。然而,一旦程序中的SecurityManager和他内部对象已经配置好,通常上就不用再管他,程序的开发人员几乎大部分时间都会花在Subject API上。

4、Realms

用于进行权限信息的验证

Realms在Shiro和你的程序安全数据之间,扮演着桥梁或者连接器的角色。当和安全相关数据有交互时,比如用户登录校验和鉴权,Shiro通过程序中配置的一个或者多个Realm来查询。

在此场景中,Realm是安全领域的DAO:它封装了数据源连接的细节,使得相关数据对于shiro可用。当你配置Shiro,你必须指定至少一个realm用来登录和授权。SecurityManager可能会配置多个Realm,但是至少有一个

五、Authentication 和 Authorization

在shiro的用户权限认证过程中其通过两个方法来实现

1、Authentication

Shiro 认证更大程度上特指用户登录并对用户信息进行校验(这里的信息通常特指principal信息,常见的为用户名/密码组合),如果信息验证成功则顺序执行代码,否则抛出异常

2、Authorization

授权访问控制,用于对用户进行的操作进行人证授权,证明该用户是否允许进行当前操作,如访问某个链接,某个资源文件等。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352