【问题标题】:How to revoke refresh token in Identityserver4?如何撤销 Identityserver4 中的刷新令牌?
【发布时间】:2020-02-20 11:29:16
【问题描述】:

我需要撤销用户和客户端的刷新令牌。但我不知道该怎么做。

我可以将revoke endpoint 用于刷新令牌吗?

或者我需要编写代码。我在 Identity 中使用 EF,在启动时我有:

AddOperationalStore(options => ....) 

删除令牌似乎有两种选择:

  • IPersistentGrantStore:RemoveAllAsync(string subjectId, string clientId)
  • IRefreshTokenStore:RemoveRefreshTokensAsync(string subjectId, string clientId)

我可以使用哪一个来实现这个目的?

或者我应该按照this article 中的描述实现删除代码?

【问题讨论】:

  • 这篇文章很长,尽量具体一点。您可能希望包含您认为相关的代码部分(来自文章)。
  • 好吧,也许这个问题不相关。我想通过 subjectId 和 clientId 删除刷新令牌。我应该实现哪种方法以及如何调用它?
  • IRefreshTokenStore:RemoveRefreshTokensAsync 调用 IPersistentGrantStore:RemoveAllAsync,但我建议使用您已注册的 IRefreshTokenStore 进行调用,因为它处于更高的抽象级别

标签: identityserver4


【解决方案1】:

如果您需要撤销给定 SubjectId/ClientId 组合的所有令牌,则不能使用您在问题中列出的撤销端点。这是为了撤销一个单个令牌。

您链接的文章是关于不使用 ASP.NET Core Identity 的。那是另一回事,应该不会影响您为用户删除所有刷新令牌的愿望。

确实可以使用IRefreshTokenStore.RemoveRefreshTokensAsync 方法,您可以在其中提供SubjectId 和ClientId。这并不一定会“撤销”令牌,而是将它们全部从数据库中删除。

【讨论】:

    猜你喜欢
    • 2021-07-05
    • 2021-09-24
    • 2019-04-12
    • 2015-12-13
    • 2018-11-14
    • 2020-10-19
    • 2018-03-14
    • 2018-12-07
    • 1970-01-01
    相关资源
    最近更新 更多