CAS - как обойти генерацию ST, если вы уже вошли в систему

Мне интересно, можно ли обойти генерацию сервисных билетов, если пользователь уже вошел в сервисное приложение.

Дело:

  • Пользователь имеет несколько вкладок браузера, открытых для одного и того же сервиса. (Например, после запуска браузера). Каждая вкладка содержит окно входа в систему.
  • На первой вкладке он предоставит логин и пароль, а сервер CAS проверит его подлинность и сгенерирует TGT и ST. ST правильно проверен, и пользователь может видеть содержание приложения.
  • Другие вкладки все еще показывают окно входа в систему CAS.
  • Когда пользователь обновляет содержимое вкладки, CAS сгенерирует новый ST и перенаправит на приложение-службу.
  • Каждый раз, когда пользователь использует URL входа в систему единого входа, генерируется новый ST.
  • Если у пользователя более 10 вкладок браузера, генерация ST - пустая трата источников.

Вопрос:

  • Есть ли способ проверить, если пользователь уже вошел в систему, и, если он есть, обойти генерацию ST и перенаправить непосредственно на службу?

У нас были некоторые проблемы с бесконечным циклом после входа в систему, но только для одного пользователя и только за один день. Цикл вызвал проблему БД с архивным журналом из-за слишком большого количества обновлений TGT. Вероятно, мы решили проблему, используя реестр билетов в памяти, а не предрассудки в базе данных. Но если есть возможность избежать генерации ST, когда пользователь уже вошел в приложение, это было бы отличным решением.

Единственное, что я нашел, - это подавление сбоев входа в систему, но это для другого случая.

1 ответ

Это проблема с приложением. После того, как пользователь войдет в систему и установит сеанс, вы должны удерживать этот сеанс и не перенаправлять поток обратно в CAS каждый раз. Большинство клиентов делают это автоматически. Перенаправление, только если пользователь вышел из системы или сеанс приложения находится в списке или истекло время ожидания.

Другие вопросы по тегам