jwt学习
2019-07-12 本文已影响0人
whynotybb
jwt是如何验证的?
jwt保存在客户端,每次请求时都将其放在header中,这样服务器接收到请求后,取出jwt进行验证。
服务器应用在接受到JWT后,会首先对头部和载荷的内容用同一算法再次签名。那么服务器应用是怎么知道我们用的是哪一种算法呢?别忘了,我们在JWT的头部中已经用alg字段指明了我们的加密算法了。
如果服务器应用对头部和载荷再次以同样方法签名之后发现,自己计算出来的签名和接受到的签名不一样,那么就说明这个Token的内容被别人动过的,我们应该拒绝这个Token,返回一个HTTP 401 Unauthorized响应。
jwt如何利用payload保存数据:
获取tokenJWTCreator:
JWTCreator 内部类Builder一般header中的数据是固定的,属性有alg(加密算法)和type(“jwt”)
可以从上图看到,通过内部类Builder存储payload的claims。通过WithClaim()添加数据。
签名:
构成JWT字符串获取数据方法:
String username=JWT.decode(token).getClaims().get("username").asString();
JWTDecoder获取数据:getClaim
getClaims