0

我知道访问令牌是独立的,因此不能被撤销。据我了解,这就是为什么访问令牌的到期时间通常很短的原因。这使人们能够撤销刷新令牌,从而仅允许用户在访问令牌的到期时间内登录。

但是,如果我理解正确,用户可以在不使用刷新令牌的情况下无限更新他的令牌。

可以通过添加来发起静默身份验证请求prompt=none。只要您的访问令牌仍然有效,这是可能的。prompt=none这样做将返回一个新的访问令牌,这与没有参数直接执行的登录没有区别。

如果我理解正确,曾经获得有效令牌的用户能够不断更新此令牌,而我无法以任何方式“撤销”他的访问权限?

我是否正确理解这一点,如果是这样,我该如何撤销用户的访问权限,直到他再次手动登录?

4

1 回答 1

0

prompt=none静默续订实际上使用用户的 IDP 身份验证 cookie 而不是他们的访问令牌。

好消息是 ASP.Net Core 允许您将保存在所述 cookie 中的数据存储在服务器端(例如,在数据库或分布式缓存中),因此您可以随时撤销所述 cookie。通过删除与该用户帐户相关的 cookie 数据,您可以有效地使他们当前的会话无效,从而可以防止任何未来的静默续订。同样,您可以删除所有持久授权(引用令牌和刷新令牌)。

查看Microsoft.AspNetCore.Authentication.Cookies.ITicketStore接口和CookieAuthenticationOptions.SessionStore属性。

于 2020-02-18T10:30:25.820 回答