|
JWT简介:JSON Web Token(JWT)是一个开放式标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间以JSON对象安全传输信息。这些信息可以通过数字签名进行验证和信任。可以使用秘密(使用HMAC算法)或使用RSA的公钥/私钥对对JWT进行签名。
JSON Web Tokens有用的一些场景:
身份验证:这是使用JWT最常见的情况。一旦用户登录,每个后续请求都将包含JWT,允许用户访问该令牌允许的路由,服务和资源。单点登录是当今广泛使用JWT的一项功能,因为它的开销很小,并且能够轻松地跨不同域使用。
信息交换:JSON Web Tokens是在各方之间安全传输信息的好方法。因为JWT可以签名 - 例如使用公钥/私钥对,所以可以确定发件人是他们自称的人。此外,由于使用标头和有效载荷计算签名,因此您还可以验证内容是否未被篡改。
官网:https://jwt.io/
在线解析 JWT 信息:https://down.itsvse.com/tools/jwt.html
在线解析jwt参数 http://jwt.calebb.net/
下面的我对JWT的理解,如果错误,请大家多多指教
首先,这玩意吧,不建议大家在mvc网站中使用,大家可以在webapi中使用,这玩意的定位就是api,并不是替代网站的session的!
asp.net webapi使用教程:https://www.cnblogs.com/lwhkdash/p/6686999.html 我就不重复造轮子了,看着这篇文章写的还可以。
JWT的构成
JWT由Header、Payload、Signature三部分构成,之间用点号风格,构成xx.yy.zz的形式。
请注意,对于已签名的令牌,此信息尽管受到篡改保护,但任何人都可以阅读。除非加密,否则不要将敏感信息放在JWT的有效内容或标题元素中。
例如:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
{
alg: "HS256",
typ: "JWT"
}.
{
sub: "1234567890",
name: "John Doe",
iat: 1516239022
}.
[signature]
我们通俗点讲,就是任何人都可以解密这段token,但是,无法验证这段信息的真实性,只有,生成这段token的服务器才能验证真实性,所以,不要把敏感信息存放在里面。
这里面有个问题,就是用户修改密码了或则禁止用户登录了,jwt怎么解决令牌的有效性呢?
我自己的想法就是在Payload部分,加一个类似guid的字符串,然后存在缓存里面,在验证用户身份的时候,不光验证jwt,还要验证jwt里面的Payload信息,我们可以通过控制缓存来控制有效性。
|
上一篇:C#开源框架(转载)下一篇:You are using safe update mode and you tried to update a t
|