Authentication 后端应用程序如何验证JavaScript框架应用程序发送的JWT令牌?

Authentication 后端应用程序如何验证JavaScript框架应用程序发送的JWT令牌?,authentication,oauth-2.0,Authentication,Oauth 2.0,我在试着理解它是如何工作的 比如说,前端应用程序是有角度的,后端是ASP.NET WEB API。在上面的屏幕截图中描述的过程的最后,我的angular应用程序得到一个JWT,它存储在浏览器的本地存储中。令牌将与每个请求一起发送到API 因为没有JavaScript应用程序是可信的,所以后端应用程序应该验证令牌。我的问题是知道我的API将如何做到这一点?API是否需要自己调用提供者来验证令牌是否有效 感谢您的帮助这是JWT模式以一种语言不可知的方式给出的一般答案。后端验证来自前端的传入JWT的

我在试着理解它是如何工作的

比如说,前端应用程序是有角度的,后端是ASP.NET WEB API。在上面的屏幕截图中描述的过程的最后,我的angular应用程序得到一个JWT,它存储在浏览器的本地存储中。令牌将与每个请求一起发送到API

因为没有JavaScript应用程序是可信的,所以后端应用程序应该验证令牌。我的问题是知道我的API将如何做到这一点?API是否需要自己调用提供者来验证令牌是否有效


感谢您的帮助

这是JWT模式以一种语言不可知的方式给出的一般答案。后端验证来自前端的传入JWT的典型方法是首先检查校验和。每个JWT都有一个校验和字段,这是一种基于JWT内容计算的哈希,使用的密钥只有服务器有。作为第一步,服务器可以计算校验和并与JWT中的值进行比较。如果不匹配,服务器将立即拒绝JWT,理由是其内容已被篡改

服务器可能采取的第二步是检查传入JWT的声明部分。索赔部分可能如下所示:

{
    sub: "some_user",
    exp: "2020-09-10 00:00:00",
    ...
}
上面的关键声明是
exp
,它是过期日期的缩写。这是服务器发出的JWT不再有效的时间。服务器将拒绝过期的传入JWT


服务器还可能执行其他检查。例如,它可能会命中黑名单缓存,查找已手动失效的JWT。

您的意思是API不会尝试调用IDP来检查自身吗?请原谅,请问是哪种API,以及IDP代表什么?很抱歉,太神秘了。所谓API,我指的是ASP.NET核心Web API,我们的后端。我所说的IDP是指与我们签约的身份提供者。当我调试代码时,我可以看到它为每个请求调用IDP。这就是为什么我想了解是否有必要返回IDP,或者ASP.NET Core web api(使用正确的nuget软件包)可以使用发送的令牌对用户进行身份验证。@Richard77如果您已经有一些IDP微服务在发布JWT令牌,那么这个微服务就是需要验证这些令牌的。