我们的spring引导web应用程序使用CAS身份验证。我们正在进行安全扫描,其中一个测试用例发出了一个带有无效CAS票证的登录。测试用例是:"/Logon?blockbanner=true&ticket=ST-3582-f3sADdmKlq“
由于此票证无效,CAS发出了警告(见下文),其结果是Http 500,而安全小组在上面失败了。
我试图在spring安全配置中捕获此字符串:
.regexMatchers(".+blockbanner=true.+").denyAll()但是,如果我们正常登录并返回有效的票证,我们就无法进入应用程序!
有没有办法捕捉和处理来自CAS的警告,以便我们能够产生更好的Http错误,如Http 401等?谢谢!
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)发布于 2020-04-20 12:09:47
所以,我找到了解决办法。我加了一句:
filter.setExceptionOnValidationFailure(false);
这样,CAS在获得无效票证时不会生成警告。因此,它返回了通过安全扫描测试的Http 403,而不是Http 500。
Saml11TicketValidationFilter filter = new Saml11TicketValidationFilter();
beanFactory.autowireBean(filter);
filter.setIgnoreInitConfiguration(true);
filter.setRedirectAfterValidation(true);
filter.setArtifactParameterName("ticket");
filter.setServerName(serverName);
filter.setExceptionOnValidationFailure(false);https://stackoverflow.com/questions/61275576
复制相似问题