Oauth 2.0 如何撤销特定用户的所有jwt令牌?

Oauth 2.0 如何撤销特定用户的所有jwt令牌?,oauth-2.0,jwt,identityserver4,revoke-token,Oauth 2.0,Jwt,Identityserver4,Revoke Token,我知道访问令牌是自包含的,因此无法撤销。 据我所知,这就是访问令牌的过期时间通常较短的原因。这使得用户能够撤销刷新令牌,从而只允许用户在访问令牌到期时登录 但是,如果我理解正确,用户可以无限地更新他的令牌,而无需使用刷新令牌 可以通过添加prompt=none来启动静默身份验证请求。只要您的访问令牌仍然有效,这是可能的。这样做将返回一个新的访问令牌,这与不使用prompt=none参数直接执行的登录无法区分 如果我理解正确的话,一个曾经获得有效令牌的用户能够不断地更新这个令牌,而我不能以任何方式

我知道访问令牌是自包含的,因此无法撤销。 据我所知,这就是访问令牌的过期时间通常较短的原因。这使得用户能够撤销刷新令牌,从而只允许用户在访问令牌到期时登录

但是,如果我理解正确,用户可以无限地更新他的令牌,而无需使用刷新令牌

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

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


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

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

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

查看
Microsoft.AspNetCore.Authentication.Cookies.ITicketStore
界面和
CookieAuthenticationOptions.SessionStore
属性