维基百科这么说:Apache Shiro(读作 sheeroh,即日语 城)是一个开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。我随即谷歌一下关键字 日语 shiro,真是以讹传讹,明明是白色的意思,不知道从哪里开始变成 城 的意思了。白色白(しろ= shiro)ホワイト(White)黑色黒(くろ= kuro )ブラック(Black)红色赤(あか= aka )レッド(Red)。
可见,历史还是很悠久的,都15岁了。
理解框架,首先的理解概念,Shiro的概念挺好理解,就是名字取得差劲了点。什么Subject, Realm,跟单词本身含义一点都挂不上边。
Subject 表示 当前的操作用户,在安全领域,术语 Subject 可以是人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着 当前跟软件交互的东西。这些解释跟 Subject 这个词感觉靠不上边,所以每次看完隔一段时间,就记不起来了 Subject 是个啥意思。所以,换个方式:Subject -> 主题 -> 猪蹄,所以从卤猪蹄开始理解 Shiro 的概念。
Realm,单词本身是领域、范围的意思,在 Shiro 里面则是桥梁、连接的意思。Realm 充当了 Shiro 与应用安全数据间的 桥梁 或者 连接器。也就是说,当切实与像用户帐户这类安全相关数据进行交互,执行认证(登录)和授权(访问控制)时,Shiro 会从应用配置的Realm中查找很多内容。记不住的话,就记得 real+m(真的么?)你说的你是谁你要去哪里,都是真的么。
就是简单的 你是谁(认证,是不是你)和 你要到哪里去(授权,能不能去),两个词经常容易混淆。Authentication 简称 Authc,Authorization 简称 Authz,对了,必须先认证然后才是授权,所以按照字母顺序,应该是 Authc 然后是 Authz,一下子记住了吧。
RBAC 就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成 用户-角色-权限 的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系。