Shiro简介和环境搭建

Apache Shiro是一个用来实现认证和授权的开源框架。我们编写的应用程序通常需要登录认证和权限检查,它们都是可复用的逻辑,每起一个新项目都重写一遍是比较烦的,因此Shiro出现了。通过简单的配置,Shiro就可以帮我们实现这些功能,而不用我们自己编写这些逻辑。

Shiro中其实有一些鸡肋或者说过时的特性,实际开发中只会涉及其中部分功能,我这里以实际开发者的角度,记录一些Shiro框架集成和使用的最佳实践。

Shiro官网:https://shiro.apache.org

同类技术比较

最常和Shiro并列提及的框架是SpringSecurity,后者是一个重型框架,功能更为复杂而且和Spring能够紧密结合使用。然而我个人不太喜欢SpringSecurity,认证授权并不是一个很复杂的需求,使用SpringSecurity的感觉就好像大炮打苍蝇,而且是先建造了整条的火炮生产线让你去操作,里面各种设计模式、各种灵活的扩展点炫的让人眼花缭乱,花了好一阵功夫终于组装了一门歪歪扭扭的大炮,然而你的目的终归是打一只苍蝇。

而Shiro就好像一个老式苍蝇拍,虽然看起来有些过时,但上手就能使用,稍微有些动手能力也能改装成电蚊拍之类的。自己手写一些逻辑处理认证和授权也不是很复杂,就好像你直接上手去拍苍蝇,虽然脏一点但终归能解决问题。

一些必备的前置知识

学习Shiro,你必须了解信息安全中的一些相关概念和基础原理。比如登录为什么需要散列算法,RBAC权限管理模型等,以及如何在Web上整合这些知识,最好手动写过若干包含复杂权限管理逻辑的应用系统,并深切感受到一个权限管理框架的必要性,否则学Shiro可能一头雾水的。

适用场景

Shiro适用于那些权限管理十分复杂的应用,比如有N多菜单、子菜单的大型管理系统,要供一个大型企业中,许多不同岗位的人员使用。

Shiro不适用于过于简单的应用,比如一个单用户的博客系统。Shiro也不适用于非RBAC模型的管理系统或过于复杂的魔改RBAC模型的系统,比如那些使用DAC、MAC、ABAC的系统。当然,RBAC基本可以解决80%的需求,其它模型适用于那些对安全性有特殊要求的机密系统,安全模块需要安全领域的人来研发。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。