【问题标题】:Identity server 4 + asp.net core: logout on multiple tabs of browserIdentity server 4 + asp.net core:在浏览器的多个选项卡上注销
【发布时间】:2017-06-30 11:00:22
【问题描述】:

目前,我正在使用 ID4、asp.net core 和 angular 2。一切正常,但是当我们在浏览器上打开许多选项卡时,我遇到了一个问题。然后,我们在一个选项卡上注销,但其他选项卡仍然保留令牌并成功调用 API。我们可以强制或验证令牌并返回所有选项卡上的登录页面吗?

我在服务器上登出的代码

    await _signInManager.SignOutAsync();

    HttpContext.User = new ClaimsPrincipal(new ClaimsIdentity());

    var logout = await _interaction.GetLogoutContextAsync(model.LogoutId);

    return Redirect(logout?.PostLogoutRedirectUri);

谢谢,

【问题讨论】:

  • 请分享您的退出代码(至少在服务器端)

标签: asp.net-core identityserver4


【解决方案1】:

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

您可以改为使用Reference Tokens,它不是自包含的,每次使用都会导致接收资源(例如您的 API)使用 IdSvr 对其进行验证。这样做的影响之一是您可以撤销您的访问令牌,这意味着其他选项卡是否认为他们拥有访问令牌并不重要,因为当他们尝试使用它时,IdSvr 将知道它们不再有效。如果您走这条路,您现在需要保留您的访问令牌,并且对您的客户端的每个受保护调用都将涉及它与您的 IdSvr 进行反向通道通信。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-05
    • 2019-09-21
    • 2020-10-06
    • 1970-01-01
    • 2014-03-08
    • 2020-07-10
    • 2021-01-22
    • 2019-02-15
    相关资源
    最近更新 更多