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

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

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

JWT是什么和业务场景的解决方案和spring中的应用
xxx.yyyy.zzzz是jwt的格式,第一部分是header(用的什么加密方式),第二部分是数据,第三部分是签名,校验。
因为他是有校验过程的,所以不担心被修改

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

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

认证服务器

JWT是什么和业务场景的解决方案和spring中的应用
认证服务器这里做了两件事情:第一记录了客户端信息,第二声明了tokenStore的方式,
我使用的maven是在start.spring.io 网站中springboot初始化工具中选的web,cloud oauth,security!记住 spring oauth版本各个版本是有差别的,比如上图客户端密码设置模式,你必须要进行加密,有些版本就不用)
1.首先生成一个tokenstore
JWT是什么和业务场景的解决方案和spring中的应用
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接受)

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

JWT是什么和业务场景的解决方案和spring中的应用
当其他客户端调用资源服务器(比如A服务器调用B服务器的资源时),B服务器检测有没有token,jwt是否被修改等操作,不用再去认证服务器再去检测了