JASIG CAST - повторная проверка старого TGT TGC Cookie вызывает цикл входа - PullRequest
0 голосов
/ 07 марта 2019

У меня проблемы с использованием CAS JASIG 3.5.2.1. Я использую его в течение длительного времени, и это, кажется, новая проблема со времени моего последнего развертывания.

При первом входе в систему все в порядке:
- TICKET_GRANTING_TICKET_CREATED
- SERVICE_TICKET_CREATED

Через некоторое время очистка билета удаляет TGT, что является правильным:
- Срок действия билета истек из-за того, что с момента последнего использования время больше, чем timeToKillInMilliseconds
- Снятие билета [TGT -...

Поэтому, когда я захожу в свое приложение, меня перенаправляют на страницу входа. Даже если в моем браузере все еще есть файл cookie с информацией TGT, и он отправляет его в CAS, он отказался, поскольку был очищен, что является нормальным:
- Попытка получить билет [TGT-402 ...
- SERVICE_TICKET_NOT_CREATED

2019-03-07 09:57:58,929 DEBUG [org.springframework.webflow.mvc.view.AbstractMvcView] - <Rendering MVC [org.springframework.web.servlet.view.JstlView: name 'casLoginView'; URL [/WEB-INF/view/jsp/default/ui/casLoginView.jsp]] with model map [{flowRequestContext=[RequestControlContextImpl@6d171024 externalContext = org.springframework.webflow.mvc.servlet.MvcExternalContext@3dc20cd8, currentEvent = generated, requestScope = map[[empty]], attributes = map[[empty]], messageContext = [DefaultMessageContext@3520ba5b sourceMessages = map[[null] -> list[[empty]]]], flowExecution = [FlowExecutionImpl@524e370 flow = 'login', flowSessions = list[[FlowSessionImpl@38cfd0b3 flow = 'login', state = 'viewLoginForm', scope = map['loginTicket' -> 'LT-1505-Dnd7hs2pezvt51fj79MQnLxHfoZzew', 'service' -> http://preprod.enpc-center.fr/login, 'credentials' -> [username: null], 'warnCookieValue' -> false, 'ticketGrantingTicketId' -> 'TGT-402-ZxdMougCuYRVhFskdVBSiF7tqepwvRFx3FNtwR6Ktk3KQchM5L-preprod.sso.enpc-center.fr', 'viewScope' -> map['commandName' -> 'credentials']]]]]], flashScope=map[[empty]], currentUser=null, loginTicket=LT-1505-Dnd7hs2pezvt51fj79MQnLxHfoZzew, service=http://preprod.enpc-center.fr/login, org.springframework.validation.BindingResult.credentials=org.springframework.webflow.mvc.view.BindingModel: 0 errors, commandName=credentials, credentials=[username: null], flowExecutionKey=e1s1, warnCookieValue=false, flowExecutionUrl=/cas/login?service=%5BLjava.lang.String%3B%4077aac79c, ticketGrantingTicketId=TGT-402-ZxdMougCuYRVhFskdVBSiF7tqepwvRFx3FNtwR6Ktk3KQchM5L-preprod.sso.enpc-center.fr, viewScope=map['commandName' -> 'credentials']}]>

2019-03-07 09:57:59,437 DEBUG [org.jasig.cas.web.flow.TerminateWebSessionListener] - <Error getting service from flow state.>

java.lang.IllegalStateException: нет активного FlowSession для доступа; это FlowExecution закончилось

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

Есть ли у вас какие-либо ключи к этому странному поведению?

Заранее спасибо.

1 Ответ

0 голосов
/ 07 марта 2019

Есть ли у вас какое-либо представление об этом странном поведении?

Так работает CAS 3.5.x.Программное обеспечение не сразу проверяло действительность TGT, связанного с cookie, и выполняло это только в определенных ситуациях, когда оно хотело сделать что-то конкретное с TGT, переданным cookie.Когда TGT был удален как часть процесса очистки, в некоторых случаях CAS / браузер по-прежнему показывал, что вы успешно вошли в систему, потому что программное обеспечение проверяло только наличие файла cookie и проверяло его связь со своим TGT.Лучший способ - закрыть браузер и, как вы заметили, удалить куки.

В более новых версиях CAS эта проблема решена.

PS: Вы можете рассмотреть возможность удаления TerminateWebSessionListener или увеличения его значения времени ожидания до чего-то большего.

...