背景:
最近有同事问我,使用identityserver4获取jwt后,在jwt有效期内发现这个token被泄露了,想立刻使其失效怎么办?
然后我上网看了一下,发现jwt是不能失效的,如果想失效token,可以使用reference token
1.怎么获取reference token?
下载源码:https://github.com/walt-liuzw/IdentityServer4.Samples
打开项目:
发现里面的mvc客户端支持reference token类型
使用postman获取token
{ "access_token": "d39db758f3379bab99997d4bf720101c8c2fc200d19c80082ff32a73e6834fc0", "expires_in": 3600, "token_type": "Bearer" }
2.验证token有效性
使用http://localhost:5000/connect/introspect访问
发现token是正常的,也就是active:true
3.使用revocation使token失效
然后再次验证第二步时,发现返回的结果是false,说明已经让这个token失效了
问题:使用这种方式让token失效,有个弊端,就是需要每次都去调用identityserver4,性能需要考虑,毕竟jwt可以在有效期内不用再去调用服务端