【问题标题】:Revoke refresh_token on change password更改密码时撤销刷新令牌
【发布时间】:2021-07-03 17:07:39
【问题描述】:

我们有一个基于 Asp.Net 构建的 Web 应用程序,然后我们有一个使用 .net 核心构建的 IdentityServer4 应用程序。

我们有作为 IdentityServer4 客户端登录的移动应用程序,它的授权存储在 SQL 数据库中。

我遇到的问题是,当我作为管理员从 Web 应用程序更改/重置密码时,移动应用程序仍然可以访问,因为 refresh_token 仍然有效,因为我们为此设置了滑动到期。我想要的是在管理员为任何用户重置密码时撤销 refresh_token,我在 asp.net 应用程序中找不到这样做的方法,我使用了下面的文档,但这对我没有用,因为我相信这将是只有当我们想撤销登录用户的授权时才有帮助。

https://identitymodel.readthedocs.io/en/latest/client/revocation.html

PS:我们在 identityServer 项目中确实有撤销功能,但那是不同的项目,我们希望在 asp.net Web 应用程序中进行类似的撤销。

谢谢。

【问题讨论】:

  • 你是如何存储令牌的?您可以查看此链接以撤销令牌 link
  • 我使用了相同的链接,但这对我没有用,而且我将令牌存储在 SQL 表中。

标签: c# asp.net asp.net-core asp.net-identity identityserver4


【解决方案1】:

这个方法怎么样?这在 SigningOut 事件中调用。您在更改密码时注销用户并撤销令牌。

.AddCookie("cookie", options =>
    {
        options.Cookie.Name = "mvccode";

        options.Events.OnSigningOut = async e =>
        {
            // revoke refresh token on sign-out
            await e.HttpContext.RevokeUserRefreshTokenAsync();
        };
    })

文档链接 - here

【讨论】:

  • 我正在更改管理员用户的密码,所以我想撤销授权,以便管理员更改密码的用户必须再次登录并使用新令牌。
  • 您的应用程序是 SPA 吗?您是通过 IdentityServer 端点更改密码还是在控制器中编写了自定义代码来这样做?
猜你喜欢
  • 2019-06-01
  • 2021-09-24
  • 2019-04-12
  • 2021-07-05
  • 2015-12-13
  • 2021-12-02
  • 2018-11-14
  • 2020-10-19
  • 2017-06-15
相关资源
最近更新 更多