JavaScript应用程序应该如何验证IdentityServer4发出的访问令牌?

JavaScript应用程序应该如何验证IdentityServer4发出的访问令牌?,identityserver4,Identityserver4,例如,假设我想确定用户是否仍然“登录”。。。他们的代币还没有过期 当我第一次获得访问令牌时,我将我的JWT访问令牌存储在localStorage中。我知道仅仅检查localStorage来查看access_令牌是否存在是不够的。我读过关于内省结束点的文章,但这似乎是针对API的,而不是JS客户端的。使用客户端库进行JWT验证的最佳方法是什么?我不喜欢这样,因为我可能需要切换到引用令牌。我想为此给服务器端打个电话 使用JavaScript客户端验证access_令牌的正确方法是什么 更新: 经过进

例如,假设我想确定用户是否仍然“登录”。。。他们的代币还没有过期

当我第一次获得访问令牌时,我将我的JWT访问令牌存储在localStorage中。我知道仅仅检查localStorage来查看access_令牌是否存在是不够的。我读过关于内省结束点的文章,但这似乎是针对API的,而不是JS客户端的。使用客户端库进行JWT验证的最佳方法是什么?我不喜欢这样,因为我可能需要切换到引用令牌。我想为此给服务器端打个电话

使用JavaScript客户端验证access_令牌的正确方法是什么

更新:
经过进一步调查,并根据leastprivilege的建议,我将使用,因此我不必担心这一点。

大多数jwt代币都带有到期日期字段作为到期时间(但取决于服务器)。您可以使用一个库,比如在将JWT令牌保存到本地存储之前对其进行解码,然后将到期时间与令牌一起保存在库中,这样您就可以检查本地存储和到期时间,如果当前日期大于到期时间,您将丢弃以前的令牌并获得一个新的令牌。

大多数jwt令牌都带有一个到期日期字段作为到期时间(但这取决于服务器)。您可以使用一个库,比如在将JWT令牌保存到本地存储之前对其进行解码,然后将到期时间与令牌一起保存在库中,这样您就可以检查本地存储和到期时间,如果当前日期大于到期时间,您将放弃以前的令牌并获得一个新令牌。

此库可能对您有用:。有些文档可用。

此库可能对您有用:。有些文档是可用的。

客户端应用程序不应该“解码”访问令牌。确切的格式是发布者和API之间的实现细节


请求访问令牌时,令牌响应包含一个“expires_in”参数,该参数告诉客户端令牌有效的秒数

客户端应用程序不应“解码”访问令牌。确切的格式是发布者和API之间的实现细节


请求访问令牌时,令牌响应包含一个“expires_in”参数,该参数告诉客户端令牌有效的秒数

因此,如果我正在使用JavaScript构建UI,并且需要在每次加载视图之前确定是否需要新的令牌(因此需要将用户重定向到登录页面)我可以检查“expires\u in”吗?还是最好有某种前端处理程序,在从API返回401时将用户重定向到登录页面?当然,这肯定是一种常见的情况。使用一个像这样的库,它可以为您进行终身监控,并在后台处理更新。另请参阅仅供参考-在我决定使用OIDC Js客户端之前,我一直在为一个客户端应用程序执行此示例。因此,如果我正在使用JavaScript构建UI,并且需要在每次加载视图之前确定是否需要新的令牌(因此需要将用户重定向到登录页面)我可以检查“expires\u in”吗?还是最好有某种前端处理程序,在从API返回401时将用户重定向到登录页面?当然,这肯定是一种常见的情况。使用一个像这样的库,它可以为您进行终身监控,并在后台处理更新。另请参阅仅供参考-在我决定使用OIDC Js客户端之前,我一直在为一个客户端应用程序执行此示例。