Identity Server 4 принудительный выход пользователей из системы - PullRequest
0 голосов
/ 07 февраля 2019

Я установил приложение IdentityServer4 с версией .net core 1.1.У меня есть требование, когда пользователь Admin может деактивировать пользователей в системе.После деактивации эти пользователи не смогут использовать систему.Они должны быть принудительно активированы SignOut со всех браузеров и устройств.

Примечание. Приложение настроено на использование oAuth и OpenId.

Как лучше всего справиться с этим сценарием?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Лучшим вариантом для ваших требований является переключение на эталонные токены с проверкой на стороне сервера, как описано в документах .Это не базовый протокол OpenId Connect, но он обеспечивает контроль над токеном на стороне сервера.

0 голосов
/ 07 февраля 2019

Идентификатор OpenId Asp.net

Если вы используете идентификацию Asp.net, как вы отметили.Вы можете зайти в базу данных и изменить имя пользователя SecurityStamp на AspNetUsers.Это приведет к тому, что пользователь выйдет из системы при следующей проверке.По умолчанию я считаю, что он проверяется каждые тридцать минут, но это то, что вы можете настроить самостоятельно.

Чтобы заблокировать их, вы можете установить LockoutEnd на какое-то время в отдаленном будущем.Заблокированные пользователи не смогут войти в систему, пока не истечет время.Этот столбец также находится в таблице AspNetUsers.

Oauth2

Помните, что блокировка пользователя, вероятно, не приведет к возникновению каких-либо токенов доступа или обновлений, которые могут иметьбыл предоставлен клиентам, которым пользователь предоставил доступ.Что касается Oauth, то все будет немного сложнее.

Токены доступа, предоставленные клиентам для этого пользователя, будут продолжать работать до тех пор, пока не истечет срок их действия, если только вы не проверяете, что пользователь заблокирован, даже если ваш API-интерфейс проверяет токен доступа.Поэтому, если вы хотите сделать это, то вам придется добавить это в проверку вашего приложения / API.

Обновить токены, которые, я считаю, хранятся в таблице PersistedGrants на сервере идентификации.Это не то, что я вырыл во многом, это просто намек.Старые токены обновления, вероятно, все еще будут работать, но я думаю, что вы могли бы что-то добавить на сервер идентификации, чтобы этот пользователь не был заблокирован перед возвратом токена доступа.

...