【问题标题】:Previous token is revoked when token endpoint is called even before token expiry甚至在令牌到期之前调用令牌端点时,先前的令牌也会被撤销
【发布时间】:2023-01-30 21:06:01
【问题描述】:

从应用程序调用的 API 管理器令牌端点。获取令牌并调用 API。在令牌 1 过期之前的下一次令牌调用,撤销令牌 1 并生成一个新令牌。它不应该在没有新令牌的情况下发送令牌 1 吗?

第二次令牌调用撤销了第一个令牌并生成了一个新令牌。即使它生成了一个新令牌,令牌 1 也应该处于活动状态,因为令牌没有过期。

【问题讨论】:

    标签: jwt wso2 token wso2-api-manager wso2-identity-server


    【解决方案1】:

    这是 JWT 令牌的设计,在给定的时间,对于给定的客户端 ID 秘密对,总会有一个活动令牌。

    这就是为什么每当您请求新令牌时,令牌 1 都会被撤销。如果您使用不透明令牌,则情况不同,并且无论令牌调用次数如何,都会在该令牌的生命周期内发送相同的令牌。

    JWT 和不透明之间的这种区别是因为 JWT 令牌的大小很大(有额外的声明),与保留整个令牌的不透明令牌相比,只有 JTI 值保留在数据库中。因此,KM 无法两次生成相同的 JWT,这就是为什么即使先前的令牌有效,KM 也不会发送相同的令牌。不透明令牌不存在此问题。

    【讨论】:

    • 如何禁用它?
    • 如何在 41 中创建不透明令牌?
    • 由于这是设计,因此没有其他方法可以禁用它。
    • API Manager 已停止使用 4.x 系列中的不透明令牌,因为他们减少了 GW 到 KM 的调用,这是一个显着的性能提升。如果你想创建一个不透明的令牌应用程序,它会有点棘手。您首先需要创建一个不透明类型的服务提供者,您可以为该类型分配应用程序。
    【解决方案2】:

    当您在 API Manager 中使用 JWT 令牌时,这是预期的行为。

    1. 如果您从令牌 api 请求令牌,它始终会提供一个新令牌并且不会提供活动令牌。

    2. 当您在最新的 API Manager 4.1.0 中请求新令牌时,令牌会被撤销。

      更新:

      您可以将以下配置添加到 API 管理器以禁用令牌撤销。

      [oauth.access_token]
      invoke_token_revocation_event_on_renewal = false
      

    【讨论】:

    • 使用最新的 APIM (APIM 4.1.0),之前的令牌被撤销。
    • @Pubuci 它正在撤销。我使用 apimanager 41
    • 感谢您的提醒!看起来行为已经改变了。
    • 如何禁用它?
    猜你喜欢
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 2022-07-05
    • 2018-04-23
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多