JWT是什么和业务场景的解决方案和spring中的应用

1.jwt令牌是什么
https://blog.csdn.net/qq_21956483/article/details/78720216

https://blog.csdn.net/weixin_41153791/article/details/82291144
jwt是一个有数据且不会被修改的的token
token的好处,可以通过token辨识你这个用户。
jwt的好处是,他携带了一些简单信息,如用户数据,客户端,服务器数据。当调用api服务时,可以携带jwt令牌进行接口的调用,无需再去认证服务器认证。高效。简单。同时带来一个坏处,如果你的jwt中包含大量信息时,会带来网络流量的开销。也可以作为单点登陆的绝佳武器。

在这里插入图片描述
xxx.yyyy.zzzz是jwt的格式,第一部分是header(用的什么加密方式),第二部分是数据,第三部分是签名,校验。
因为他是有校验过程的,所以不担心被修改

2.业务场景中的解决方案
现在需要在各个服务器之间需要相互调用接口,采用普通的token,第一繁琐(各种保存token,各种管理token,各种校验token),挺麻烦的。所以采用jwt令牌,简单高效!
原理:认证服务器保存密钥,其他服务器保存公钥,当其他服务器去认证服务器获取token时,返回一个密钥加了密的jwt令牌。A服务器认证通过后,得到jwt令牌,携带jwt令牌访问B服务器的资源服务器时候,b服务器通过公钥校验jwt令牌即可(任何对令牌的操作都在客户端)。

3.JWT非对称加密在spring oauhth2中的使用。

认证服务器

在这里插入图片描述
认证服务器这里做了两件事情:第一记录了客户端信息,第二声明了tokenStore的方式,
我使用的maven是在start.spring.io 网站中springboot初始化工具中选的web,cloud oauth,security!记住 spring oauth版本各个版本是有差别的,比如上图客户端密码设置模式,你必须要进行加密,有些版本就不用)
1.首先生成一个tokenstore
在这里插入图片描述
2.要使用keytool(java带的工具在Bin里面)生成一个密钥对
1.keytool -genkey -alias mykey -keyalg RSA -keystore C:/file/mykeystore.keystore -keysize 1024 -validity 36500
(生成的文件是mykeystore.keystore)
查看公钥方法(openssl需要去下载):
2.keytool -list -rfc --keystore C:/file/mykeystore.keystore | openssl x509 -inform pem -pubkey
(直接把公钥复制到secret文件中,从begin开始,end接受)

资源服务器(这里的资源服务器是放在另外一台机器上,不是和认证服务器同一个)

在这里插入图片描述
当其他客户端调用资源服务器(比如A服务器调用B服务器的资源时),B服务器检测有没有token,jwt是否被修改等操作,不用再去认证服务器再去检测了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值