C# Identity Server 4强制注销用户

C# Identity Server 4强制注销用户,c#,asp.net-identity,identityserver4,C#,Asp.net Identity,Identityserver4,我已使用.net core 1.1版本安装了IdentityServer 4应用程序。我有一个要求,管理员用户可以停用系统中的用户。停用后,这些用户应无法使用系统。应该强制他们从所有浏览器和设备注销 注意:应用程序配置为使用oAuth和OpenId 处理这种情况的最佳方法是什么 OpenId Asp.net标识 如果您正在使用已标记的Asp.net标识。您可以进入数据库并更改AspNetUsers上的用户安全戳。这将导致用户在下次验证时注销系统。默认情况下,我相信它每30分钟验证一次,但这是您可

我已使用.net core 1.1版本安装了IdentityServer 4应用程序。我有一个要求,管理员用户可以停用系统中的用户。停用后,这些用户应无法使用系统。应该强制他们从所有浏览器和设备注销

注意:应用程序配置为使用oAuth和OpenId


处理这种情况的最佳方法是什么

OpenId Asp.net标识

如果您正在使用已标记的Asp.net标识。您可以进入数据库并更改AspNetUsers上的用户安全戳。这将导致用户在下次验证时注销系统。默认情况下,我相信它每30分钟验证一次,但这是您可以自行配置的

要将它们锁定在外,可以将LockoutEnd设置为遥远的将来的某个时间。锁定的用户在时间到期之前将无法登录。此列也位于AspNetUsers表的上

Oauth2

请记住,锁定用户可能不会影响可能已授予用户访问权限的客户端的任何访问令牌或刷新令牌。至于Oauth,事情会更复杂一些

为该用户授予客户端的访问令牌将继续工作,直到过期为止,除非您正在测试该用户是否已被锁定,即使您的api正在验证访问令牌。因此,如果您想这样做,那么您必须将其添加到应用程序/API的验证中


我认为刷新令牌存储在identity server的PersistedGrants表中。这不是我深究过的东西,只是一个暗示。旧的刷新令牌可能仍然有效,但我认为您可以在identity server中添加一些内容,以确保该用户在返回访问令牌之前未被锁定。

满足您要求的最佳选项是切换到具有服务器端验证的引用令牌,如中所述。它不是基本的OpenId连接协议,但它提供了对令牌有效性的服务器端控制。

我想这里记录了您需要什么?:@Arwin对于版本1,这里记录了:刷新令牌默认设置为一次性使用,导致“旧”刷新令牌在发出新刷新令牌时失效。和引用令牌一样,它们也可以是。所以用户只能安装一次应用程序?(默认情况下)否我的意思是刷新令牌仅对一次使用有效。使用刷新令牌时(为了请求访问令牌),将返回两个令牌,即访问令牌和新的刷新令牌。因此,您永远不能使用刷新令牌两次。