【发布时间】:2015-01-02 18:34:10
【问题描述】:
我们在带有SimpleAuthorizationServerProvider 的 Web Api 项目中使用 ASP.NET Identity,我们使用 OAuth-tokens 来授权来自客户端的每个请求。 (令牌具有和过期时间跨度,我们不使用刷新令牌。)
当用户更改密码时,我想使他们可能拥有的令牌无效,可能在其他设备上。有没有办法明确地做到这一点?我进行了实验,发现现有令牌在更改密码后可以正常工作,应该避免这种情况。
我考虑过将密码哈希或部分哈希放入 OAuth 令牌中作为声明,并在派生的 AuthorizeAttribute 过滤器的 OnAuthorization 方法中对其进行验证。
这是解决问题的正确方法吗?
【问题讨论】:
-
OAuth 的一部分不是独立于密码更改吗?为什么不在他们更改密码时从您的身份验证服务器中删除令牌,然后如果他们尝试在其他设备上使用它,它将无法工作。
-
“为什么不直接从身份验证服务器中删除令牌”:ASP.NET Identity 可以做到这一点吗?我认为令牌是自包含的,因此它们可以在任何 Web 服务器实例上使用,因此我们没有身份验证服务器。
-
如果这是真的,那么听起来我需要重新了解“ASP.NET 身份”已经有一段时间了。对不起。
标签: asp.net-web-api oauth asp.net-identity