簡體   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