注销后,验证Introspection端点中的access_token返回活动状态

时间:2018-01-08 19:41:55

标签: identityserver4

我在验证令牌是否处于活动状态时遇到问题,当我调用instrospection的端点时,即使离开应用程序,它也会返回active。

只有在access_token生存期到期后才返回false。

以下步骤。

我登录的应用程序生成了access_token,refresh_token等。

通过endsession端点执行应用程序注销

当执行instrospection端点传递先前检索的access_token时,系统返回它是活动的

问题。

离开应用程序时不应该使此access_token无效?只有在access_token的到期时间之后才返回活动。

由于

1 个答案:

答案 0 :(得分:3)

为什么会出现问题?在我看来,它按设计工作,但不如预期。

首先,您必须了解访问令牌是什么:

  

访问令牌包含有关客户端和用户的信息(如果   当下)。它是一个自包含代码,可以被解码   仅限服务器且具有一定的生命周期。

任何人都可以使用此访问令牌访问您的资源。如果它来自您的应用程序或来自其他地方并不重要。这就是访问令牌应该是短暂的原因。如果它落入坏人之手,那么它可能会在短时间内被滥用。如果检测到此标记,您还可以添加安全措施以使令牌无效。

其次,身份服务器应该如何知道您关闭了应用?当然,您已注销,但这并未更改访问令牌。令牌是自包含的,无法更新!它一直存在,直到它过期。

这正是你所看到的:

当你调用instrospection的端点时,它会返回active为true,直到access_token到期。

- 更新 -

如果您想保持控制权,请考虑使用reference tokens代替JWT代币。

  

使用引用令牌时 - IdentityServer将存储内容   数据存储中的令牌,仅发出唯一标识符   将此令牌返回给客户端。接收此引用的API   然后必须打开与IdentityServer的反向通道通信   验证令牌。

使用Revocation Endpoint,您可以撤消参考令牌。