如何撤销Oauth2.0中的访问和刷新令牌?

时间:2018-02-21 09:13:08

标签: oauth-2.0 identityserver4

我已使用此方法撤消令牌。但访问令牌和刷新令牌再次可重用。如何撤销访问和刷新令牌?

public async Task<IActionResult> Revoke(string 
   refreshToken,stringaccessToken){
    var identityService = await 
    DiscoveryClient.GetAsync("http://localhost:5000");

    var revocationClient = new 
    TokenRevocationClient(identityService.RevocationEndpoint, "ro.client", 
    "secret"); 
    var response = await 
    revocationClient.RevokeRefreshTokenAsync(refreshToken); 
               var response1 = await 
    revocationClient.RevokeAccessTokenAsync(accessToken);
}

3 个答案:

答案 0 :(得分:1)

只能以这种方式撤销引用和刷新令牌。除非您在消费者中构建其他逻辑,否则JWT在其到期时间内有效。

答案 1 :(得分:0)

我公司提供管理投资银行资产的软件,使用以下分离:

API证书

  • 访问令牌用于从UI调用API
  • 他们的寿命短30分钟
  • 他们是JWT,因为它们很短暂而不需要被撤销

用户会话

  • 这些由刷新令牌
  • 表示
  • 用户界面的刷新令牌可能会持续8小时
  • 访问令牌每30分钟到期并以静默方式续订
  • 刷新令牌存储在数据库中
  • IT管理员可以通过从DB
  • 中删除刷新令牌来撤销刷新令牌
  • 这将在不超过30分钟后强制重新登录

撤销程序

我写过的博客上的

This database screenshot可能会帮助您设计撤销流程:

  • 通常,IT管理员希望在撤消刷新令牌时使用上下文,例如“应用程序ID”,“用户ID”和“已发布时间”

  • 因此,如果您要提供撤销用户界面,您可能需要提供上述字段

答案 2 :(得分:0)

刷新令牌仅用于桌面/移动应用或服务器端网络应用。

对于真正的浏览器应用(单页应用),您无法使用刷新令牌。您仍然可以将API凭据时间与用户会话时间分开。

我的博客上有一些关于会话的说明,以防他们提供帮助: