一文搞懂什么是java权限框架

本文对比了Java中的Shiro、SpringSecurity和OAuth2三种权限框架,讨论了它们的特性、优缺点以及在SSM、SpringBoot和SpringCloud中的适用场景,还介绍了Token、JWT和无状态Token的概念以及CSRF的含义和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java一共分为三种权限框架: 

1.shiro

shiro是一个功能强大且易于使用的Java安全框架,它执行身份验证、授权、加密和会话管理,是可以挂在外面实现松耦合,不支持分布式项目,简单来说就是一个认证和授权的框架。

shiro有三大核心架构:

(1).Subject 主体

(2).SecurityManager 安全管理器

(3).Realm 领域

2.spring security

Spring Security在架构上将认证与授权分离,并提供了扩展点。它是一个轻量级的安全框架,它确保基于Spring的应用程序提供身份验证和授权支持。它与Spring MVC有很好的集成 ,并配备了流行的安全算法实现捆绑在一起。,一般来说web应用的安全性包括用户认证和用户授权两个部分

SpringSecurity特点:

  • shiro能实现的,Spring Security 基本都能实现;
  • 依赖于Spring体系;
  • 背景强大,因为是Spring全家桶的亲儿子。
  • 集成上更加契合,在使用上,比shiro略负责

3.auth2

OAuth2是OAuth的一个版本。OAuth2框架能让第三方应用以有限的权限访问HTTP服务,可以通过构建资源拥有者与HTTP服务间的许可交互机制,让第三方应用代表资源拥有者访问服务,或者通过授予权限给第三方应用,让其代表自己访问服务。作为授权框架,关注如何让一个系统组件获取对另一个系统组件的访问权限。

shiro和spring secutity的区别:

1.spring security 基于spring开发,项目若使用spring作为基础,配合spring security做权限更加方便 ,而shiro需要和spring整合开发

2.spring security功能比shiro更加丰富些,例如安全维护方面

3.spring security 社区资源相对比shiro更加丰富

4.shiro的配置和使用比较简单,spring security上手复杂些

5.shiro依赖性低,不需要任何框架和容器,可以独立运行。而spring security依赖于spring容器

6.shiro不仅仅可以使用在web中,它可以工作在任何应用环境中。在集群会话时shiro最重要的一个好处就是它的会话时独立于容器的

总的来说就是ssm项目就用shiro框架,springboot和springcloud就用spring security框架!

什么是Token?

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。token其实说的更通俗点可以叫暗号,在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同的数据操作。

基于Token的身份验证的过程如下:

1、用户通过用户名和密码发送请求。

2、程序验证。

3、程序返回一个签名的token 给客户端。

4、客户端储存token,并且每次用于每次发送请求。

5、服务端验证token并返回数据。

什么是JWT

jwt的全称就是 json web token ,看到全称是不是就知道了jwt里面包含token

是一个开发标准(rfc7519),它定义了一种紧凑的,自包含的方式,用于在各方之间以JSON对象安全地传输信息。此信息可以验证和信任,因为它是数字签名的。jwt可以使用秘密(使用HMAC算法)或者使用RSA或ECDSA的公钥/私钥对进行签名。

通俗来讲,就是通过JSON形式作为Web应用中的令牌,用于在各方之间安全地将信息作为JSON对象传输。在数据传输过程中还可以完成数据加密,签名等相关处理

jwt的结构:

1.标头(Header)

2.有效载荷(Payload)

3.签名(Signature)

jwt和token的区别:

token 需要查库验证 token 是否有效,而 JWT 不用查库或者少查库,直接在服务端进行校验,并且不用查库。因为用户的信息及加密信息在第二部分 payload和第三部分签证中已经生成,只要在服务端进行校验就行,并且校验也是 JWT 自己实现的

注意!!!

token就是一张令牌登录后发给你,想要查询和进行其他操作还得带其他的权限

jwt就是超级token直接带了所有权限不需要去访问数据库

简单来说:区别主要体现在接受的信息是否需要进入数据库查询信息。

什么是无状态token?

Token无状态,也就是说,Token不会记录客户端之间的状态,也不会存储客户端相关信息,只会记录用户的身份,以保客户端发送的请求是合法的。

csrf是什么?

跨站请求攻击,简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。

使用token验证就可以很好的解决csrf

好啦就到这里谢谢大家的观看!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值