服务器如何验证JWT令牌

问题描述 投票:0回答:2

服务器如何验证JWT令牌?

它存放在哪里?

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

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

它可以用一些有用的条目

asp.net-core .net-core
2个回答
1
投票

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

服务器如何验证JWT令牌?

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

它存放在哪里?

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

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

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


0
投票

我不是JWT专家,所以如果我写的一些内容是错的,我很乐意纠正。

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

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

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

4)在处理您的请求之前,服务器将至少使用公钥来验证令牌是否为真,并检查到期时间。如果它通过了那些测试,服务器可能还会在处理您的请求之前对存储在JWT中的数据进行额外检查。这些检查可能包括检查您的用户ID是否有权访问您尝试访问的数据,检查您是否位于可以访问数据的国家/地区,等等。它可以根据具体情况疯狂地改变。

© www.soinside.com 2019 - 2024. All rights reserved.