ASP.NET标识-令牌总是有效的吗?(如果是,它们的安全性如何?)

本文关键字:安全性 如果 标识 NET 令牌 ASP 有效 | 更新日期: 2023-09-27 18:29:34

背景:

我有一个移动应用程序,为后端web API存储用户asp.net身份令牌(加密)。

我发现自己的调试数据库完全损坏了,所以我删除了它,并使用Migrations重新创建了它。作为Seed()方法的一部分,数据库由一个用户填充,该用户与最后一个用户具有相同的凭据,只是具有不同的ID和安全戳。

我发现,如果我使用现在已删除的用户的令牌向API发送任何HTTP请求,而不将新用户登录,则web API仍然授予我身份验证。

此外,如果我对当前用户调用任何Identity函数,例如HttpContext.Current.User.Identity.GetUserId();,则会返回旧用户信息。

问题:

只要代币没有过期,它会一直有效吗?-即使用户已被删除/注销?

(经过更多的挖掘,我注意到将用户注销,然后使用旧令牌发送新请求仍然有效)。

如果这是故意的,怎么安全?(作为开发者,我应该做些什么来撤销代币吗?)

ASP.NET标识-令牌总是有效的吗?(如果是,它们的安全性如何?)

通常,只有在验证间隔已过时,令牌才会被拒绝。届时,它将检查令牌的安全戳,如果它仍然有效,则会自动刷新数据库中的用户声明,如果不是,则会抛出未经身份验证的响应。

如果您想立即传播角色更改,则需要进行更改,以便在每次发出请求时都检查数据库。点击此处查看更多信息。