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内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot集成Spring Security的方法

    至今Java能够如此的火爆Spring做出了很大的贡献,它的出现让Java程序的编写更为简单灵活,而Spring如今也形成了自己的生态圈,今天咱们探讨的是Spring旗下的一个款认证工具:SpringSecurity,如今认证框架主流"shiro"和"SpringSecurity",由于和Spring的无缝衔接,使用SpringSecurity的企业也越来越多. 1.Spring Security介绍 Spring security,是一个强大的和高度可定制的身份验

  • Spring Security中的Servlet过滤器体系代码分析

    1. 前言 我在Spring Security 实战干货:内置 Filter 全解析对Spring Security的内置过滤器进行了罗列,但是Spring Security真正的过滤器体系才是我们了解它是如何进行"认证"."授权"."防止利用漏洞"的关键. 2. Servlet Filter体系 这里我们以Servlet Web为讨论目标,Reactive Web暂不讨论.我们先来看下最基础的Servlet体系,在Servlet体系中客户端发起

  • Apache Shiro 使用手册(三) Shiro授权

    如,判断一个用户有查看页面的权限,编辑数据的权限,拥有某一按钮的权限,以及是否拥有打印的权限等等. 一.授权的三要素 授权有着三个核心元素:权限.角色和用户. 权限 权限是Apache Shiro安全机制最核心的元素.它在应用程序中明确声明了被允许的行为和表现.一个格式良好好的权限声明可以清晰表达出用户对该资源拥有的权限. 大多数的资源会支持典型的CRUD操作(create,read,update,delete),但是任何操作建立在特定的资源上才是有意义的.因此,权限声明的根本思想就是建立在资源

  • SpringSecurity动态加载用户角色权限实现登录及鉴权功能

    很多人觉得Spring Security实现登录验证很难,我最开始学习的时候也这样觉得.因为我好久都没看懂我该怎么样将自己写的用于接收用户名密码的Controller与Spring Security结合使用,这是一个先入为主的误区.后来我搞懂了:根本不用你自己去写Controller. 你只需要告诉Spring Security用户信息.角色信息.权限信息.登录页是什么?登陆成功页是什么?或者其他有关登录的一切信息.具体的登录验证逻辑它来帮你实现. 一.动态数据登录验证的基础知识 在本号之前的文

  • Apache shiro的简单介绍与使用教程(与spring整合使用)

    apache shiro框架简介 Apache Shiro是一个强大而灵活的开源安全框架,它能够干净利落地处理身份认证,授权,企业会话管理和加密.现在,使用Apache Shiro的人越来越多,因为它相当简单,相比比Spring Security,Shiro可能没有Spring Security那么多强大的功能,但是在实际工作时可能并不需要那么复杂的东西,所以使用简单的Shiro就足够了. 以下是你可以用 Apache Shiro所做的事情: Shiro的4大核心部分--身份验证,授权,会话管理

  • SpringBoot集成Spring Security用JWT令牌实现登录和鉴权的方法

    最近在做项目的过程中 需要用JWT做登录和鉴权 查了很多资料 都不甚详细 有的是需要在application.yml里进行jwt的配置 但我在导包后并没有相应的配置项 因而并不适用 在踩过很多坑之后 稍微整理了一下 做个笔记 一.概念 1.什么是JWT Json Web Token (JWT)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519) 该token被设计为紧凑且安全的 特别适用于分布式站点的单点登录(SSO)场景 随着JWT的出现 使得校验方式更加简单便

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

    前言 web应用达到生产需要就必须有安全控制.java web领域经常提及的两大开源框架主要有两种选择 Spring Security和Apache Shiro .所以学习这两种框架也是java开发者提高水平的必经之路.从今天开始连续一段时间内,研究一下Spring Security. Spring Security 和Apache Shiro 相对于Apache Shiro,Spring Security提供了更多的诸如LDAP.OAuth2.0.ACL.Kerberos.SAML.SSO.O

  • Spring Security和Shiro的相同点与不同点整理

    Spring Security和Shiro的区别 相同点 1.认证功能 2.授权功能 3.加密功能 4.会话管理 5.缓存支持 6.rememberMe功能 ... 不同点 1.Spring Security 基于Spring 开发,项目若使用 Spring 作为基础,配合 Spring Security 做权限更加方便,而 Shiro 需要和 Spring 进行整合开发: 2.Spring Security 功能比 Shiro 更加丰富些,例如安全维护方面: 3.Spring Security

  • 让Apache Shiro保护你的应用

    在尝试保护你的应用时,你是否有过挫败感?是否觉得现有的Java安全解决方案难以使用,只会让你更糊涂?本文介绍的Apache Shiro,是一个不同寻常的Java安全框架,为保护应用提供了简单而强大的方法.本文还解释了Apache Shiro的项目目标.架构理念以及如何使用Shiro为应用安全保驾护航. 什么是Apache Shiro?Apache Shiro(发音为"shee-roh",日语"堡垒(Castle)"的意思)是一个强大易用的Java安全框架,提供了认证

  • Spring 应用中集成 Apache Shiro的方法

    这一篇文章涵盖了将 Shiro 集成到基于 Spring 的应用程序的方法. Shiro 的 Java Bean兼容性使它非常适合通过 Spring XML 或其他基于 Spring 的配置机制进行配置.Shiro 的应用程序需要一个应用程序单例安全管理器 ( SecuriyManager) 实例.注意,这并不一定是静态的单例,但是应用程序应该只使用一个实例,不管它是否是静态的单例. 1.独立的应用程序 以下是在 Spring 应用程序中启用应用程序单例安全管理器的最简单方法: <!-- 定义连

  • shiro与spring security用自定义异常处理401错误

    目录 shiro与spring security自定义异常处理401 背景 解决方案 SpringBoot整合Shiro自定义filter报错 No SecurityManager accessible to the calling code... 产生原因 解决办法 小结一下 shiro与spring security自定义异常处理401 背景 现在是前后端分离的时代,后端必然要统一处理返回结果,比如定义一个返回对象 public class ResponseData<T> { /** *

  • Spring Security 安全框架应用原理解析

    Spring Security 简介 背景分析 企业中数据是最重要的资源,对于这些数据而言,有些可以直接匿名访问,有些只能登录以后才能访问,还有一些你登录成功以后,权限不够也不能访问.总之这些规则都是保护系统资源不被破坏的一种手段.几乎每个系统中都需要这样的措施对数据(资源)进行保护.我们通常会通过软件技术对这样业务进行具体的设计和实现.早期没有统一的标准,每个系统都有自己独立的设计实现,但是对于这个业务又是一个共性,后续市场上就基于共享做了具体的落地实现,例如Spring Security,A

  • Spring Boot如何使用Spring Security进行安全控制

    我们在编写Web应用时,经常需要对页面做一些安全控制,比如:对于没有访问权限的用户需要转到登录表单页面.要实现访问控制的方法多种多样,可以通过Aop.拦截器实现,也可以通过框架实现(如:Apache Shiro.spring Security). 本文将具体介绍在Spring Boot中如何使用Spring Security进行安全控制. 准备工作 首先,构建一个简单的Web工程,以用于后续添加安全控制,也可以用之前Chapter3-1-2做为基础工程.若对如何使用Spring Boot构建We

  • Spring security实现权限管理示例

    Spring security实现权限管理示例,具体如下: 1.配置文件 1.POM.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.o

随机推荐