Spring Security 和Apache Shiro你需要具备哪些条件

 更新时间:2020年07月06日 14:52:13   作者:spring security  
这篇文章主要介绍了Spring Security 和Apache Shiro你需要具备哪些条件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

前言

web应用达到生产需要就必须有安全控制。java web领域经常提及的两大开源框架主要有两种选择
Spring Security和Apache Shiro 。所以学习这两种框架也是java开发者提高水平的必经之路。从今天开始连续一段时间内,研究一下Spring Security。

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 SecurityApache Shiro的一些异同。以及学习它们的一些前置条件。如果你不满足这些条件学习起来可能比较吃力。所以本文的作用是为你学习预热,做一些准备工作,避免新入门的同学陷入迷途。也希望大家多多支持,多多关注。

到此这篇关于Spring Security 和Apache Shiro你需要具备哪些条件的文章就介绍到这了,更多相关Spring Security 和Apache Shiro内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • spring boot 防止重复提交实现方法详解

    spring boot 防止重复提交实现方法详解

    这篇文章主要介绍了spring boot 防止重复提交实现方法,结合实例形式详细分析了spring boot 防止重复提交具体配置、实现方法及操作注意事项,需要的朋友可以参考下
    2019-11-11
  • Core Java 简单谈谈HashSet(推荐)

    Core Java 简单谈谈HashSet(推荐)

    下面小编就为大家带来一篇Core Java 简单谈谈HashSet(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • java设计模式之简单工厂模式

    java设计模式之简单工厂模式

    这篇文章主要为大家详细介绍了java设计模式之简单工厂模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • jedispool连redis高并发卡死的问题

    jedispool连redis高并发卡死的问题

    本篇文章主要介绍了jedispool连redis高并发卡死的问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Sharding-JDBC自动实现MySQL读写分离的示例代码

    Sharding-JDBC自动实现MySQL读写分离的示例代码

    本文主要介绍了Sharding-JDBC自动实现MySQL读写分离,优点在于数据源完全有Sharding-JDBC托管,写操作自动执行master库,读操作自动执行slave库,感兴趣的可以了解一下
    2021-11-11
  • java技巧:反射判断field类型的操作

    java技巧:反射判断field类型的操作

    这篇文章主要介绍了java技巧:反射判断field类型的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • Java虚拟机JVM性能优化(二):编译器

    Java虚拟机JVM性能优化(二):编译器

    这篇文章主要介绍了Java虚拟机JVM性能优化(二):编译器,本文先是讲解了不同种类的编译器,并对客户端编译,服务器端编译器和多层编译的运行性能进行了对比,然后给出了几种常见的JVM优化方法,需要的朋友可以参考下
    2014-09-09
  • Java正则表达式处理特殊字符转义的方法

    Java正则表达式处理特殊字符转义的方法

    由于正则表达式定了一些特殊字符,而有时候需要对这些特殊字符进行匹配的话就需要进行转义了,下面这篇文章主要给大家介绍了Java正则表达式处理特殊字符转义的方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-01-01
  • Java入门案列之猜拳小游戏

    Java入门案列之猜拳小游戏

    这篇文章主要为大家详细介绍了Java入门案列之猜拳小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • SpringBoot + SpringSecurity 短信验证码登录功能实现

    SpringBoot + SpringSecurity 短信验证码登录功能实现

    这篇文章主要介绍了SpringBoot + SpringSecurity 短信验证码登录功能实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06

最新评论