Shiro笔记之简介

Shiro笔记之简介

前言

之前一直有使用Shiro,却没有深入理解,造成过一段时间后又忘记了,又得从重新找资料,学习再使用,决定记录下来,好记性不如烂笔头.

Shiro是什么?

在Shiro官网是这么描述的:

Apache Shiro™ is a powerful and easy-to-use Java security framework that performs authentication, authorization, cryptography, and session management. With Shiro’s easy-to-understand API, you can quickly and easily secure any application – from the smallest mobile applications to the largest web and enterprise applications.

Apache Shiro是一个功能强大且易于使用的Java安全框架,进行授权,认证,加密以及session管理,Shrio API通俗易懂,你可以轻松快速的使用到任何的应用程序中,包括小的移动应用程序,大的web应用程序以及企业应用程序中.

Shiro能做什么?

  1. 用户身份验证 (如: Web系统中验证用户是否是: 系统管理员,访客).
  2. 权限访问控制 (如: Web系统中,管理员有哪些权限,访客有哪些权限).
  3. 启用单点登陆(SSO).
  4. “记住我”(常见应用场景: Web系统中常见的)
  5. 会话(Session)管理.
  6. 加解密等功能.

Shiro核心

Shiro能做的事情太多了,以至于我们不知从何下手…, 嗯哼,别急,我们先来看看Shiro的核心概念:
Shiro核心概念

通过上图,我们可以看出:
构成Shiro的四大基石分别为:
1.认证(Authentication): 最常见的应用场景:登录,简单的来说,通过认证中心,来证明自己的身份。(证明该身份是: 管理员还是访客)。
2.授权(Authorization): 可以理解为访问控制的过程,确定”谁”能够访问”什么”,(如: Web系统中,管理员能访问的哪些资源,访客能访问哪些资源)。
3.会话管理(Session Mananager): 管理用户特定的会话,即使在非Web应用程序中更或是EJB应用程序中
4.加密(Cryptography): 使用加密算法保证数据安全的同时,并且易于使用。

以上是Shiro的主要目标,同样也提供了一些拍案叫絕的特性(功能),如:
1.Web支持: Shiro提供非常方便的API与Web集成.其中包括:Spring,Spring-boot等。
2.缓存: Shiro提供了与EhCache集成的API,也可自行扩展与其他缓存框架的整合,如redis。
3.并发: Shiro支持多线程.
4.测试支持: 该支持可以帮助我们编写单元以及集成测试,确保测试覆盖率。
5.”记住我”: 在常见的Web系统中,都有”记住我”的功能,我们可以看看shiro给我们提供了哪些方便的api来实现.
6.”Run As”: 可以简单的理解为,当前以另一种角色运行(如果允许的话)。

结构&术语解析

Shiro结构
1.Authentication(认证) :  认证就是验证主体身份的过程,就如(你說你是马云,那么好,需要验证,验证成功后,我才承认你是马云)。
2.Authorization(授权) :   也被称为访问控制,是用户/对象是否允许做某事的过程,通常是通过检查主体的角色与权限,是否允许访问请求资源的能力,(如: 管理员访问能够访问哪些资源,访客能够访问哪些资源,)
3.Cipher(密码):密码是一种加解密的算法,Shiro有提供多种加解密的算法API。
4.Credential(凭据):凭据是验证用户/主体身份的信息,也可以说是一种验证机制。
5.Cryptography(密码学):密码学是通过隐藏信息或者将其转换成无意义的信息来保护免受不希望的访问行为,Shiro中,有两个核心的要素:对称加密,非对称加密,(原文为:密码与散列),也提供不少的API。
6.Hash(哈希): 哈希函数是一个单向的,不可逆的输入源,有时称为消息,转换成一个编码的哈希值,有时称为消息摘要。它通常用于密码、数字指纹或底层字节数组的数据。
7.Permission(权限):权限是安全策略中的最低级别结构,在Shiro中,权限是一个声明。如:有没有打开文件的权限,打印文档的权限等,与Linux中读写执行的权限的道理是一样的。
8.Principal:该属性在应用程序中为唯一的,与数据库中的为主键的效果是一样的,可以是用户名。
9.Realm(域):是一个组件,在Realm中,可以进行认证,授权等操作,可以认为是一个特定安全的DAO(数据访问对象)
10.Role(角色):在Shiro中认为,Role是一个简单的权限集合的名称,在应用程序中Role名称是唯一的。
11.Session(会话):会话,不仅仅是指我们常用的HttpSession,也有指非web程序或EJB程序。
12.Subject(主体): 主体可以与应用进行交互的用户

小结

以上介绍了Shiro的基本概念,Shiro能做些什么事情,以及一些专业术语的解析,读到这里,你对Shiro有第一印象了吗?

参考链接

Shiro官网