点击蓝色“程序猿DD”关注我

回复“资源”获取独家整理的学习资料!

前言

web应用达到生产需要就必须有安全控制。java web领域经常提及的两大开源框架主要有两种选择 Spring Security和Apache Shiro 。所以学习这两种框架也是java开发者提高水平的必经之路。从今天开始连续一段时间内,研究一下Spring Security。如果想学习的同学可以关注一下公众号:Felordcn 或者通过https://felord.cn来及时获取相关的干货。

Spring Security 和Apache Shiro

相对于Apache Shiro,Spring Security提供了更多的诸如LDAPOAuth2.0ACLKerberosSAMLSSOOpenID等诸多的安全认证、鉴权协议,可以按需引用。对认证/鉴权更加灵活,粒度更细。可以结合你自己的业务场景进行更加合理的定制化开发。在最新的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相关推荐

  1. 鉴权/认证框架Spring Security和Apache Shiro比较

    参考: https://www.cnblogs.com/minxiang-luo/p/12492905.html https://www.javadevjournal.com/spring-boot/ ...

  2. 初识Spring Security

    最近来写下Spring Security 文章目录 初识Spring Security 什么是Spring Security 常用安全框架 如何学习Spring Security 本文小结 初识Spr ...

  3. Spring Security(1) 入门体验

    一.前言 Spring Security 和 Apache Shiro 都是安全框架,为Java应用程序提供身份认证和授权. 二者区别 Spring Security:重量级安全框架 Apache S ...

  4. Apache Shiro和Spring Security的详细对比

    参考资料: 1)Apache Shiro Apache Shiro:http://shiro.apache.org/ 在Web项目中应用 Apache Shiro:http://www.ibm.com ...

  5. 比较一下 Spring Security 和 Shiro 各自的优缺点

    比较一下 Spring Security 和 Shiro ? 一.安全框架 安全框架,简单说是对访问权限进行控制,应用的安全性包括用户认证(Authentication)和用户授权(Authoriza ...

  6. Spring 整合 Apache Shiro 实现各等级的权限管理

    Spring 整合 Apache Shiro 实现各等级的权限管理 2015-10-25 JAVA, SECURITY, SHIRO, SPRING Background 前几个月在做一个常规的权限隔 ...

  7. 在Spring MVC中使用Apache Shiro安全框架

    我们在这里将对一个集成了Spring MVC+Hibernate+Apache Shiro的项目进行了一个简单说明.这个项目将展示如何在Spring MVC 中使用Apache Shiro来构建我们的 ...

  8. Apache shiro介绍

    原文链接Application Security With Apache Shiro(翻译) 前面自己自己配合谷歌翻译,后面大部分谷歌翻译. 当你尝试保护你的程序时候你会被困扰吗?你会觉得现有的jav ...

  9. 让 Apache Shiro 保护你的应用

    让 Apache Shiro 保护你的应用 作者:Les Hazlewood 译者:胡伟红 查看英文原文: Application Security With Apache Shiro 在尝试保护你的 ...

最新文章

  1. OpenGL ES 的例子
  2. php把数组函数封装,PHP删除Array数组里指定的key(完整版,已封装成函数,附测试代码)...
  3. 对网上花店系统进行软件测试,网上花店系统
  4. 开发日记-20190513 关键词 汇编语言(六)
  5. 数据结构 python的书推荐-java数据结构书一般推荐看什么好?
  6. 第一次运行OSG入门程序失败记和搞定的情况
  7. android studio 第一个程序显示radle d 'https://services.gradle.org/distributions/gradle-5.4.1-all.zip'.
  8. C++工作笔记-使用namespace构建常量头文件
  9. dj电商-架构与布局
  10. UE4之ACharacter移动人物并显示动画效果
  11. java继承小程序_Java小程序---接口中抽象方法的实现(解决了JAVA语言不能多继承的问题)...
  12. 超级搜索术 总结篇2
  13. 什么是互联网外包公司
  14. txt 文本文件替换快捷键
  15. excel表格打印每页都有表头_Excel怎么能让每一页都打印上相同的顶端和底端标题?...
  16. c#调用新浪微博开放平台接口
  17. ps2021中文版完美逆袭
  18. java后台将数据导出到Excel表格
  19. python——颜文字emoji
  20. 蓝桥杯java B组历年省赛真题汇总及题目详解

热门文章

  1. linux libuv 交叉编译 高性能事件驱动库
  2. linux 查看 全部网卡 虚拟网卡 物理网卡
  3. linux uts namespace 提供了主机名和域名的隔离 docker中被用到
  4. linux socket 缓冲区默认大小
  5. gdb调试fork+exec创建的子进程的方法
  6. 详细解说 STL 排序(Sort)
  7. Android环境的构建
  8. Java设计模式---外观模式
  9. 将两个数组河滨_两名3岁男孩在河滨公园玩耍迷了路 幸亏被好心人“捡”到
  10. 共享库报错问题及解决方案