繁体   English   中英

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

[英]How to revoke the access and refresh token in Oauth2.0?

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

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);
}

只能以这种方式撤销引用和刷新令牌。 JWT 在它们的 exp 时间之前一直有效,除非您在消费者中构建额外的逻辑。

我公司提供管理投资银行资产的软件,采用如下分离方式:

API 凭证

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

用户会话

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

撤销程序

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

  • 因此,如果您提供用于撤销的 UI,您可能需要提供诸如上述的字段

刷新令牌仅用于桌面/移动应用程序或服务器端 Web 应用程序。

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

我的博客上有一些关于会话的笔记,以防万一它们有帮助:

  • OAuth 令牌更新消息

  • 我没有涵盖服务器端 Web 应用程序,但基本上它们在身份验证 cookie 中携带刷新令牌

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM