ASP.NET标识 - 令牌始终有效吗? (如果是,他们如何安全?)

时间:2016-01-09 18:29:48

标签: c# asp.net authentication asp.net-identity

背景

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

我设法发现自己​​处于调试数据库完全损坏的情况,因此我删除并使用Migrations重新创建它。 作为Seed()方法的一部分,数据库将填充一个用户,该用户具有与上一个用户相同的凭据,只是一个不同的ID和安全戳。

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

此外,如果我在当前用户上调用任何身份功能,例如HttpContext.Current.User.Identity.GetUserId();,则会返回旧用户信息。

问题:

只要令牌未过期,它总是有效吗? - 即使用户已被删除/注销?

(在进行了一些挖掘之后,我注意到将用户注销,然后使用旧令牌发送新请求仍然有效。)

如果这是设计,这怎么安全? (作为开发者撤销令牌,有什么我应该做的吗?)

1 个答案:

答案 0 :(得分:0)

通常只有在验证间隔结束后才会拒绝令牌。那时,它会检查令牌的安全标记,如果它仍然有效,那么它会自动刷新用户对数据库的声明,如果没有则会抛出未经过身份验证的响应。

如果要立即传播角色更改,则需要进行更改,以便每次发出请求时都会检查数据库。有关here的更多信息,请参阅。