0

我正在实现 oauth2 客户端凭据流。当调用 Auth 服务器获取令牌时...我返回一个 jwt 令牌,其中还包括范围(例如读取:订单和写入:订单)以及作为受众的 api 标识符(../serv/api/v1/orders)。当我使用 then 令牌时,我将它作为 Bearer 令牌传递到身份验证标头中。当我检查令牌是否有效时,我会检查过期日期。如果调用的 API 与受众相同,并且调用的端点是否包含在我的令牌中的范围。如果服务器端我删除了范围(例如,我删除了 write:order 范围),则前一个令牌还包含写入范围。实际上我唯一要做的就是等待令牌失败,当我得到一个新令牌时,我将没有写入范围。

如何在到期前使​​之前的令牌失效?我应该在令牌验证期间检查范围服务器端吗?在这种情况下,我认为将范围注册到令牌中是没有用的。

感谢帮助。

4

1 回答 1

1

如果您需要在到期日期之前使令牌失效,那么您必须跟踪授权服务器中已颁发的令牌,标记应该失效的令牌,然后通过向授权服务器发出请求让 API 验证令牌。

正如您所指出的,在这样的设置中,令牌中的范围没有太多用途。我建议使用不透明令牌而不是 JWT 作为您的访问令牌。然后让您的 API 执行令牌自省 - 这是 OAuth 中的标准化操作。授权服务器将返回与您的令牌对应的范围,如果令牌已失效,则返回 404。

于 2021-03-29T10:26:12.613 回答