Обработка org.jasig.cas.client.validation.TicketValidationException - PullRequest
0 голосов
/ 17 апреля 2020

Наше весеннее загрузочное веб-приложение использует аутентификацию CAS. Мы проходим проверку безопасности, и в одном из тестовых случаев был выполнен вход с недействительным билетом CAS. Тестовый случай был: "/ Logon? Blockbanner = true & ticket = ST-3582-f3sADdmKlq"

Поскольку этот билет недействителен, CAS выдал предупреждение (см. Ниже), и в результате Http 500, который команда безопасности нам не удалось.

Я попытался перехватить эту строку в нашей весенней конфигурации безопасности:

 .regexMatchers(".+blockbanner=true.+").denyAll()

Однако, если мы войдем в систему в обычном режиме и вернусь действительный билет, мы не сможем попасть внутрь приложение! Спасибо!

CAS предупреждение

020-04-17 11:22:26,913 WARN  o.j.c.c.v.Saml11TicketValidationFilter[AbstractTicketValidationFilter.java:189] doFilter: org.jasig.cas.client.validation.TicketValidationException: org.opensaml.SAMLException: ticket 'ST-155-g1lYXqTfB0xAOAp2RrU7-tecs_cas_sat' not recognized
org.jasig.cas.client.validation.TicketValidationException: org.opensaml.SAMLException: ticket 'ST-155-g1lYXqTfB0xAOAp2RrU7-tecs_cas_sat' not recognized
        at org.jasig.cas.client.validation.Saml11TicketValidator.parseResponseFromServer(Saml11TicketValidator.java:115)
        at org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator.validate(AbstractUrlBasedTicketValidator.java:217)
        at org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:169)

1 Ответ

0 голосов
/ 20 апреля 2020

Итак, я нашел решение для этого. Я добавил строку:

filter.setExceptionOnValidationFailure (false);

, чтобы CAS не генерировал предупреждение при получении недействительного билета. Таким образом, вместо Http 500 он вернул Http 403, который прошел проверку безопасности.

Saml11TicketValidationFilter filter = new Saml11TicketValidationFilter();
             beanFactory.autowireBean(filter);

             filter.setIgnoreInitConfiguration(true);
             filter.setRedirectAfterValidation(true);
             filter.setArtifactParameterName("ticket");
             filter.setServerName(serverName);
             filter.setExceptionOnValidationFailure(false);
...