JavaScript应用程序应该如何验证IdentityServer4发出的access_token?

时间:2017-04-10 13:58:55

标签: identityserver4

例如,假设我想确定某个用户是否仍然已登录" ... AKA他们的令牌尚未过期。

当我第一次发出access_token时,我将我的JWT access_token存储在localStorage中。我知道仅仅检查localStorage以查看access_token是否存在是不够的。我读到了关于内省终点的内容,但这似乎适用于API - 而不是JS客户端。使用客户端库进行JWT验证的最佳方法是什么?我不喜欢这样,因为我可能需要切换到引用令牌。我想打电话给服务器端。

使用JavaScript客户端验证access_token的正确方法是什么?

更新: 经过进一步调查并得到最少特权的建议,我将使用OIDC JavaScript client,所以我不需要担心这一点。

3 个答案:

答案 0 :(得分:2)

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

请求访问令牌时,令牌响应包含' expires_in'告诉客户端令牌有效的秒数的参数。

答案 1 :(得分:1)

大多数jwt令牌都带有到期时间的到期日期字段(取决于服务器)。您可以使用this之类的库来解码JWT令牌,然后将其保存到本地存储中,然后使用令牌保存到期时间,以便您只需检查本地存储和到期时间以及当前时间日期比到期时间更长,您丢弃之前的标记并获得一个新标记。

答案 2 :(得分:1)

此库可能对您有用:oidc-client-js。有些文档可用here