我已使用此方法撤消令牌。但访问令牌和刷新令牌再次可重用。如何撤销访问和刷新令牌?
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);
}
答案 0 :(得分:1)
只能以这种方式撤销引用和刷新令牌。除非您在消费者中构建其他逻辑,否则JWT在其到期时间内有效。
答案 1 :(得分:0)
我公司提供管理投资银行资产的软件,使用以下分离:
API证书
用户会话
撤销程序
我写过的博客上的This database screenshot可能会帮助您设计撤销流程:
通常,IT管理员希望在撤消刷新令牌时使用上下文,例如“应用程序ID”,“用户ID”和“已发布时间”
因此,如果您要提供撤销用户界面,您可能需要提供上述字段
答案 2 :(得分:0)
刷新令牌仅用于桌面/移动应用或服务器端网络应用。
对于真正的浏览器应用(单页应用),您无法使用刷新令牌。您仍然可以将API凭据时间与用户会话时间分开。
我的博客上有一些关于会话的说明,以防他们提供帮助:
Single page apps and token renewal (通过会话cookie)
我没有覆盖服务器端网络应用,但基本上他们在身份验证Cookie中带有刷新令牌