Spring Security 和 Apache Shiro
点击蓝色“程序猿DD”关注我
回复“资源”获取独家整理的学习资料!
前言
web应用达到生产需要就必须有安全控制。java web领域经常提及的两大开源框架主要有两种选择 Spring Security和Apache Shiro 。所以学习这两种框架也是java开发者提高水平的必经之路。从今天开始连续一段时间内,研究一下Spring Security。如果想学习的同学可以关注一下公众号:Felordcn
或者通过https://felord.cn
来及时获取相关的干货。
Spring Security 和Apache Shiro
相对于Apache Shiro,Spring Security提供了更多的诸如LDAP
、OAuth2.0
、ACL
、Kerberos
、SAML
、SSO
、OpenID
等诸多的安全认证、鉴权协议,可以按需引用。对认证/鉴权更加灵活,粒度更细。可以结合你自己的业务场景进行更加合理的定制化开发。在最新的Spring Security 5.x中更是提供了响应式应用(reactive application)提供了安全控制支持。从语言上来讲,支持使用kotlin、groovy进行开发。
Spring Security因为是利用了Spring IOC 和AOP的特性而无法脱离Spring独立存在。而Apache Shiro可以独立存在。但是Java Web领域Spring可以说是事实上的J2EE规范。使用Java技术栈很少能脱离Spring。也因为功能强大Spring Security被认为非常重,这是不对的。认真学习之后会发现其实也就是那么回事。两种框架都是非常优秀的安全框架,根据实际需要做技术选型。如果你要学习这两种安全框架就必须熟悉一下一些相对专业的概念。
认证/鉴权
这两个概念英文分别为authentication
/authorization
。是不是特别容易混淆。无论你选择Apache Shiro 或者 Spring Security 都需要熟悉这两个概念。其实简单来说认证(authentication)就是为了证明你是谁
,比如你输入账号密码证明你是用户名为Felordcn
的用户。而授权(authorization)是通过认证后的用户所绑定的角色等凭证来证明你可以做什么
。打一个现实中的例子。十一长假大家远行都要乘坐交通工具,现在坐车实名制,也就是说你坐车需要两件东西:身份证
和车票
。身份证是为了证明你确实是你,这就是 authentication
;而车票是为了证明你张三确实买了票可以上车,这就是 authorization
。这个例子从另一方面也证明了。如果只有认证没有授权,认证就没有意义。如果没有认证,授权就无法赋予真正的可信任的用户。两者是同时存在的。
过滤器链
对于servlet web应用来说,想要通用的安全控制最好莫过于使用Servlet Filter
。 过滤器责任链(关于责任链可以通过https://www.felord.cn/chainpattern.html 来了解)来组成一系列的过滤策略,不同的条件的请求进入不同的过滤器进行各自的处理逻辑。我们可以对这些Filter
进行排列组合以满足我们的实际业务需要。
RBAC模型
RBAC 是基于角色的访问控制(Role-Based Access Control )的简称。在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。当你拥有某个角色以后,你自然继承了该角色的所有功能。对你的一些操作限制不需要直接与你进行沟通,只需要操作你拥有的角色。比如你在公司既是一个java程序员又是一个前端程序员,那么你不但要当sqlboy还要当页面仔。如果有一天经理说了前端负责测试工作,好了你又承担了测试任务。
其他一些概念
比如其它一些常见的安全策略、攻击方式。比如 反向代理、网关、壁垒机这种偏运维的知识;CSRF(Cross-site request forgery)跨站请求伪造 、XSS(跨站脚本攻击)也需要了解一些。对于一些上面提到的什么OAuth2.0之类的协议也最好研究一下。当然这些不是必须的。
总结
本文粗略的简述了Spring Security 和Apache Shiro的一些异同。以及学习它们的一些前置条件。如果你不满足这些条件学习起来可能比较吃力。所以本文的作用是为你学习预热,做一些准备工作,避免新入门的同学陷入迷途。也希望大家多多支持,多多关注。
-END-
欢迎留言区互动
在实现安全控制的时候,对于Spring Security和Apache Shiro的选择,你更偏向哪个呢?为什么?
留言交流不过瘾
关注我,回复“加群”加入各种主题讨论群
Spring Security 和 Apache Shiro相关推荐
- 鉴权/认证框架Spring Security和Apache Shiro比较
参考: https://www.cnblogs.com/minxiang-luo/p/12492905.html https://www.javadevjournal.com/spring-boot/ ...
- 初识Spring Security
最近来写下Spring Security 文章目录 初识Spring Security 什么是Spring Security 常用安全框架 如何学习Spring Security 本文小结 初识Spr ...
- Spring Security(1) 入门体验
一.前言 Spring Security 和 Apache Shiro 都是安全框架,为Java应用程序提供身份认证和授权. 二者区别 Spring Security:重量级安全框架 Apache S ...
- Apache Shiro和Spring Security的详细对比
参考资料: 1)Apache Shiro Apache Shiro:http://shiro.apache.org/ 在Web项目中应用 Apache Shiro:http://www.ibm.com ...
- 比较一下 Spring Security 和 Shiro 各自的优缺点
比较一下 Spring Security 和 Shiro ? 一.安全框架 安全框架,简单说是对访问权限进行控制,应用的安全性包括用户认证(Authentication)和用户授权(Authoriza ...
- Spring 整合 Apache Shiro 实现各等级的权限管理
Spring 整合 Apache Shiro 实现各等级的权限管理 2015-10-25 JAVA, SECURITY, SHIRO, SPRING Background 前几个月在做一个常规的权限隔 ...
- 在Spring MVC中使用Apache Shiro安全框架
我们在这里将对一个集成了Spring MVC+Hibernate+Apache Shiro的项目进行了一个简单说明.这个项目将展示如何在Spring MVC 中使用Apache Shiro来构建我们的 ...
- Apache shiro介绍
原文链接Application Security With Apache Shiro(翻译) 前面自己自己配合谷歌翻译,后面大部分谷歌翻译. 当你尝试保护你的程序时候你会被困扰吗?你会觉得现有的jav ...
- 让 Apache Shiro 保护你的应用
让 Apache Shiro 保护你的应用 作者:Les Hazlewood 译者:胡伟红 查看英文原文: Application Security With Apache Shiro 在尝试保护你的 ...
最新文章
- OpenGL ES 的例子
- php把数组函数封装,PHP删除Array数组里指定的key(完整版,已封装成函数,附测试代码)...
- 对网上花店系统进行软件测试,网上花店系统
- 开发日记-20190513 关键词 汇编语言(六)
- 数据结构 python的书推荐-java数据结构书一般推荐看什么好?
- 第一次运行OSG入门程序失败记和搞定的情况
- android studio 第一个程序显示radle d 'https://services.gradle.org/distributions/gradle-5.4.1-all.zip'.
- C++工作笔记-使用namespace构建常量头文件
- dj电商-架构与布局
- UE4之ACharacter移动人物并显示动画效果
- java继承小程序_Java小程序---接口中抽象方法的实现(解决了JAVA语言不能多继承的问题)...
- 超级搜索术 总结篇2
- 什么是互联网外包公司
- txt 文本文件替换快捷键
- excel表格打印每页都有表头_Excel怎么能让每一页都打印上相同的顶端和底端标题?...
- c#调用新浪微博开放平台接口
- ps2021中文版完美逆袭
- java后台将数据导出到Excel表格
- python——颜文字emoji
- 蓝桥杯java B组历年省赛真题汇总及题目详解