CAS - как обойти генерацию ST, если вы уже вошли в систему
Мне интересно, можно ли обойти генерацию сервисных билетов, если пользователь уже вошел в сервисное приложение.
Дело:
- Пользователь имеет несколько вкладок браузера, открытых для одного и того же сервиса. (Например, после запуска браузера). Каждая вкладка содержит окно входа в систему.
- На первой вкладке он предоставит логин и пароль, а сервер CAS проверит его подлинность и сгенерирует TGT и ST. ST правильно проверен, и пользователь может видеть содержание приложения.
- Другие вкладки все еще показывают окно входа в систему CAS.
- Когда пользователь обновляет содержимое вкладки, CAS сгенерирует новый ST и перенаправит на приложение-службу.
- Каждый раз, когда пользователь использует URL входа в систему единого входа, генерируется новый ST.
- Если у пользователя более 10 вкладок браузера, генерация ST - пустая трата источников.
Вопрос:
- Есть ли способ проверить, если пользователь уже вошел в систему, и, если он есть, обойти генерацию ST и перенаправить непосредственно на службу?
У нас были некоторые проблемы с бесконечным циклом после входа в систему, но только для одного пользователя и только за один день. Цикл вызвал проблему БД с архивным журналом из-за слишком большого количества обновлений TGT. Вероятно, мы решили проблему, используя реестр билетов в памяти, а не предрассудки в базе данных. Но если есть возможность избежать генерации ST, когда пользователь уже вошел в приложение, это было бы отличным решением.
Единственное, что я нашел, - это подавление сбоев входа в систему, но это для другого случая.
1 ответ
Это проблема с приложением. После того, как пользователь войдет в систему и установит сеанс, вы должны удерживать этот сеанс и не перенаправлять поток обратно в CAS каждый раз. Большинство клиентов делают это автоматически. Перенаправление, только если пользователь вышел из системы или сеанс приложения находится в списке или истекло время ожидания.