我试图了解隐式流程的工作原理。
假设前端应用程序是Angular,后端是ASP.NET WEB API。如上述屏幕快照所述,在过程结束时,我的角度应用程序获取了一个JWT,它存储在浏览器的本地存储中。令牌将与每个请求一起发送到API。
由于无法信任任何JavaScript应用程序,因此后端应用程序应验证令牌。我的问题是知道我的API将如何做到这一点?API是否需要对提供者进行自己的调用以验证令牌是否有效?
感谢您的帮助
这是JWT模式以与语言无关的方式进行的一般回答。后端验证来自前端的传入JWT的典型方法是首先检查校验和。每个JWT都有一个校验和字段,它是使用仅服务器拥有的密钥根据JWT的内容计算出来的一种哈希。第一步,服务器可以计算校验和并与JWT中的值进行比较。如果不匹配,则服务器将立即以其内容被篡改为由拒绝JWT。
服务器可能要采取的第二步是检查传入JWT的Claims部分。声明部分可能如下所示:
{
sub: "some_user",
exp: "2020-09-10 00:00:00",
...
}
上面的关键声明是exp
,它是到期日期的缩写。这是服务器颁发的JWT不再有效的时间。服务器将拒绝过期的传入JWT。
服务器可能还会执行其他检查。例如,它可能会进入黑名单缓存,以查找已手动失效的JWT。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句