服务器如何验证JWT令牌

时间:2018-09-10 09:55:06

标签: asp.net-core .net-core

服务器如何验证JWT令牌?

它存储在哪里?

令牌在特定日期后如何过期?

在客户端,我存储令牌并将其发送给每个查询。但是服务器端发生了什么?

这可能与某些有效的条目有关

2 个答案:

答案 0 :(得分:1)

这是一个广泛的问题。不过,我会尝试回答一些具体问题。

  

服务器如何验证JWT令牌?

JWT通常经过数字签名。 令牌服务器使用对称或非对称加密对令牌进行签名。 资源服务器通过根据对称密钥或公共密钥检查签名来验证令牌。

  

它存储在哪里?

这取决于客户。 对于单页应用程序,客户端可以将令牌存储在本地或会话存储中。

  

令牌在特定日期后如何过期?

JWT总是有一个到期时间,在创建时在令牌中设置。 而且由于令牌已签名,因此没有密钥的人无法更改此时间。 验证签名后,资源服务器必须检查到期时间。

答案 1 :(得分:0)

我不是JWT专家,所以如果我写的内容有误,我很高兴得到纠正。

1)分发JWT时,服务器将使用私钥对其进行签名。私钥是最高机密,并且必须安全地存储在服务器上。然后可以使用公钥验证此签名,该公钥确认此令牌确实已由服务器签名(使用最高机密私钥)。公钥不一定是秘密的,可以广泛分发给需要验证令牌是否已由该服务器签名的任何人。

2)JWT确实不需要存储在服务器上的任何位置,因为只要收到JWT,服务器就可以验证它是有效的令牌。由于服务器也可能生成JWT,因此某些服务器将使用缓存来存储生成的有效JWT以提高性能。简而言之,JWT不需要由服务器存储。

3)JWT包含大量数据,包括到期时间(或创建时间,以及有效时间长短)。除了使用公钥验证令牌外,服务器还将丢弃已过期的有效令牌。

4)在处理您的请求之前,服务器将至少使用公钥来验证令牌是真实的,并检查到期时间。如果通过了这些测试,则服务器可能还会在处理您的请求之前对存储在JWT中的数据进行其他检查。这些检查可能包括检查您的用户ID是否有权访问您要访问的数据,检查您是否位于有权访问该数据的国家等。它可能因案例而异。

相关问题