我已经设置了.net core 1.1版本的IdentityServer4应用程序。我要求管理员用户可以停用系统中的用户。停用后,这些用户将无法使用系统。应该从所有浏览器和设备上强制退出。
注意:应用程序已配置为使用oAuth和OpenId。
处理这种情况的最佳方法是什么?
答案 0 :(得分:0)
OpenId Asp.net身份
如果您已使用已标记的Asp.net身份。您可以进入数据库并在AspNetUsers上更改用户SecurityStamp。这将导致用户在下次验证时退出系统。默认情况下,我相信它每三十分钟就会验证一次,但这是您可以自行配置的东西。
要锁定它们,您可以将LockoutEnd设置为遥远的将来。锁定的用户将无法登录,直到时间到期。此列也位于AspNetUsers表上。
Oauth2
请记住,将用户锁定在外可能不会影响可能已授予该用户已授予访问权限的客户端的任何访问令牌或刷新令牌。因此,对于Oauth来说,情况会有些复杂。
为此用户授予客户端的访问令牌将继续工作,直到它们过期为止,除非您正在测试用户是否已被锁定,即使您的api正在验证访问令牌。因此,如果要执行此操作,则必须将其添加到应用程序/ API的验证中。
我认为刷新令牌存储在身份服务器的PersistedGrants表中。这不是我要挖掘的东西,只是一个提示。旧的刷新令牌可能仍会起作用,但是我认为您可以在身份服务器中添加一些内容,以确保在返回访问令牌之前未将该用户锁定。
答案 1 :(得分:0)
满足您需求的最佳选择是通过the docs中所述的服务器端验证切换到参考令牌。它不是基本的OpenId Connect协议,但它提供了对令牌有效性的服务器端控制。