身份服务器4 + asp.net核心:在浏览器的多个选项卡上注销

时间:2017-06-30 11:00:22

标签: asp.net-core identityserver4

目前,我正在使用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);

谢谢,

1 个答案:

答案 0 :(得分:2)

您不能撤销JWT:一旦发布,它们在到期之前有效。因此,如果您使用Identity Server发布JWT访问令牌,那么您所要求的内容是不可能的,只要某些具有JWT(并且它没有过期),那么它可用于访问您的资源。

相反,您可以更改为使用Reference Tokens,它不是自包含的,并且在每次使用时都会导致接收资源(例如您的API)使用IdSvr进行验证。其中一个影响是你可以撤销访问令牌,这意味着如果其他标签认为他们有访问令牌并不重要,因为当他们尝试使用它时,IdSvr会知道他们不再有效。如果你沿着这条路走下去,你现在需要保留你的访问权限,并且每个受保护的客户呼叫将涉及它与你的IdSvr进行反向通信。