我在验证令牌是否处于活动状态时遇到问题,当我调用instrospection的端点时,即使离开应用程序,它也会返回active。
只有在access_token生存期到期后才返回false。
以下步骤。
我登录的应用程序生成了access_token,refresh_token等。
通过endsession端点执行应用程序注销
当执行instrospection端点传递先前检索的access_token时,系统返回它是活动的
问题。
离开应用程序时不应该使此access_token无效?只有在access_token的到期时间之后才返回活动。
由于
答案 0 :(得分:3)
为什么会出现问题?在我看来,它按设计工作,但不如预期。
首先,您必须了解访问令牌是什么:
访问令牌包含有关客户端和用户的信息(如果 当下)。它是一个自包含代码,可以被解码 仅限服务器且具有一定的生命周期。
任何人都可以使用此访问令牌访问您的资源。如果它来自您的应用程序或来自其他地方并不重要。这就是访问令牌应该是短暂的原因。如果它落入坏人之手,那么它可能会在短时间内被滥用。如果检测到此标记,您还可以添加安全措施以使令牌无效。
其次,身份服务器应该如何知道您关闭了应用?当然,您已注销,但这并未更改访问令牌。令牌是自包含的,无法更新!它一直存在,直到它过期。
这正是你所看到的:
当你调用instrospection的端点时,它会返回active为true,直到access_token到期。
- 更新 -
如果您想保持控制权,请考虑使用reference tokens代替JWT代币。
使用引用令牌时 - IdentityServer将存储内容 数据存储中的令牌,仅发出唯一标识符 将此令牌返回给客户端。接收此引用的API 然后必须打开与IdentityServer的反向通道通信 验证令牌。
使用Revocation Endpoint,您可以撤消参考令牌。