Apache Shiro 安全框架的使用

/ JavaWeb / 232浏览

介绍

Apache Shiro 是一个功能强大、易于使用的Java安全框架,它执行身份验证、授权、加密和会话管理。使用Shiro的易于理解的API,您可以快速轻松地保护任何应用程序——从最小的移动应用程序到最大的Web和企业应用程序。

Shiro同类型框架,主要有Spring Security,都是起到系统的安全方面的能力。Shiro主要包含以下几大核心组件: alt

(组件示意图来自官网)

核心组件说明:

组件说明
SecurityManager安全管理器,图中没有对此说明,但安全管理器又起到了最重要的作用,它对
所有组件起到统一管理的作用。可以理解为Shiro架构本身。
Realms域,图中也没有对此说明,Shiro从Realm获取安全数据(如用户、角色、权限),
就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户
进行比较以确定用户身份是否合法;也需要从Realm得到用户相应的角色/权限
进行验证用户是否能进行操作;可以把Realm看成DataSource,即安全数据源。
Authentication认证管理器,起到用户登录认证的作用。
Authorization授权管理器,访问授权控制,相当于角色权限管理,即确定“谁”可以访问“什么”。
Session Management会话管理。
Cryptography加密算法,使用加密算法保持数据的安全,同时仍易于使用。

另外可以看到Supporting Features中,包括了Web支持,说明Shiro除了可以应用在Java工程之外,还可以应用在Web工程中,而且也包括了对缓存、并发的支持等等。

准备

这里以JavaWeb工程为例,基于:SpringBoot 1.5.x 搭建项目,thymeleaf 模板引擎显示视图层。

<!-- shiro -->
<dependency>
	<groupId>org.apache.shiro</groupId>
	<artifactId>shiro-spring</artifactId>
	<version>1.2.5</version>
</dependency>
<dependency>
	<groupId>com.github.theborakompanioni</groupId>
	<artifactId>thymeleaf-extras-shiro</artifactId>
	<version>1.2.1</version>
</dependency>

应用