目前,我正在使用ID4,asp.net核心和角度2.当我们在浏览器上打开许多标签时,一切都运行良好但我遇到一个问题。然后,我们在一个选项卡上注销,但其他选项卡仍然保留令牌并成功调用API。我们可以强制或验证令牌并返回所有选项卡上的登录页面吗?
我在服务器上退出的代码
await _signInManager.SignOutAsync();
HttpContext.User = new ClaimsPrincipal(new ClaimsIdentity());
var logout = await _interaction.GetLogoutContextAsync(model.LogoutId);
return Redirect(logout?.PostLogoutRedirectUri);
谢谢,
答案 0 :(得分:2)
您不能撤销JWT:一旦发布,它们在到期之前有效。因此,如果您使用Identity Server发布JWT访问令牌,那么您所要求的内容是不可能的,只要某些具有JWT(并且它没有过期),那么它可用于访问您的资源。
相反,您可以更改为使用Reference Tokens
,它不是自包含的,并且在每次使用时都会导致接收资源(例如您的API)使用IdSvr进行验证。其中一个影响是你可以撤销访问令牌,这意味着如果其他标签认为他们有访问令牌并不重要,因为当他们尝试使用它时,IdSvr会知道他们不再有效。如果你沿着这条路走下去,你现在需要保留你的访问权限,并且每个受保护的客户呼叫将涉及它与你的IdSvr进行反向通信。