Как выйти из всех клиентов с Identity Server? - PullRequest
0 голосов
/ 09 января 2020

Identity Server и два клиента (SSO):. Net Core MVC и Nodejs.

Когда я вхожу в систему с клиентом Nodejs, после refre sh MVC ( второй клиент) Я получил логин MVC клиента. Хорошо. Но когда я выхожу из Nodejs, он отправляет URL выхода из обратного канала клиенту MVC. Nodejs не имеет проблем с выходом из системы. Но MVC клиент - после обновления браузера sh он остается в журнале. Я прочитал это и это сообщения, но они не помогли.

Когда в MVC Startup я написал этот код:

options.Events = new OpenIdConnectEvents
{
OnTicketReceived = (e) =>
 {
  e.Properties.IsPersistent = true;
  e.Properties.ExpiresUtc = DateTimeOffset.UtcNow.AddMinutes(2);

  return Task.CompletedTask;
}
};

Через две минуты я обновляю sh browser и MVC перенаправляют на страницу входа в Idrsv. Это хорошо, но не безопасно (нужно подождать 2 минуты).

Я читал о userId кеше утверждений , но сомневаюсь - если будет много активных сессий, то кеш будет очень большим и приложение будет работать медленно.

Я могу сделать с выходом с фронтального канала, но я читал о минусах, и теперь я сомневаюсь.

Что вы предпочитаете для выхода всех клиентов из Identity Server?

1 Ответ

1 голос
/ 10 января 2020

В примерах выход из системы осуществляется с помощью фреймов на странице выхода. Если эта страница пропущена или прервана, клиенты могут не быть проинформированы. Но я не думаю, что это так.

Я бы предпочел более безопасный выход из бэкэнда, который не зависит от фреймов. Взгляните на мой ответ здесь для примера.

Теперь о клиенте. Клиенты, не являющиеся javascript, нуждаются в использовании туда-обратно для обновления повара ie. Таким образом, поток таков: пользователь выходит из клиента A. IdentityServer информирует других клиентов (обратный канал) и удаляет серверную кухню ie.

И теперь (не javascript) клиент должен принять меры. Также необходимо удалить повара ie, но это возможно только после того, как пользователь выполнит действие.

И вот здесь начинается кэширование. Кэш содержит только предупреждение от сервер. При первой же возможности удаляет повар ie, а также удаляет пользователя из кэша. Так что кеш на самом деле останется совсем маленьким. Добавьте некоторый код очистки, чтобы удалить зарегистрированных пользователей (которые никогда не возвращались) с файлами cookie, срок действия которых истек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...