首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Boot安全升级中断CAS

Spring Boot安全升级中断CAS
EN

Stack Overflow用户
提问于 2017-03-30 12:51:50
回答 4查看 2.9K关注 0票数 2

我试图让Spring + Security与CAS一起工作,但遇到了一些麻烦。经过一段时间的研究,我发现了一个好例子项目 https://github.com/jgribonvald/demo-spring-security-cas --它非常好,我只需要更改CAS URL就可以了,它开始完美地工作了。

它使用spring 1.2.1.RELEASE,我希望将它升级到最新版本(1.5.2.RELEASE)。为了做到这一点,我不得不做一些修改(修复编译错误,因为有些类在新版本中被删除)。

当编译错误被修复时,我用旧版本测试了它,它仍然有效,但是最新版本失败了。它引发错误,即casServerUrlPrefix在SingleSignOutFilter中为空。

代码语言:javascript
复制
@Bean
public SingleSignOutFilter singleSignOutFilter() {
    SingleSignOutFilter singleSignOutFilter = new SingleSignOutFilter();
    singleSignOutFilter.setCasServerUrlPrefix(env.getRequiredProperty(CAS_URL_PREFIX));
//      singleSignOutFilter.setIgnoreInitConfiguration(true);
    return singleSignOutFilter;
}

异常

代码语言:javascript
复制
java.lang.IllegalArgumentException: casServerUrlPrefix cannot be null.
    at org.jasig.cas.client.util.CommonUtils.assertNotNull(CommonUtils.java:86)
    at org.jasig.cas.client.session.SingleSignOutHandler.init(SingleSignOutHandler.java:140)
    at org.jasig.cas.client.session.SingleSignOutFilter.init(SingleSignOutFilter.java:55)
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:109)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4572)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5215)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

尽管设置了casServerUrlPrefix,而且它适用于较早的版本。因此,我的问题是,在升级spring安全性时,这是否是常见的错误/错误,以及应该如何修复它?

编辑:

我试着做一些更小的升级,它适用于spring 1.2.8.RELEASE,但是1.3.0.RELEASE失败了。我还试图在升级spring引导时将spring安全版本更改得更低,但这并没有帮助。

然后,我创建了自己的SingleSignOutFilter来编写硬代码casServerUrlPrefix,并消除了这个错误,我可以看到,casServerUrlPrefix确实已经设置好了。不幸的是,这并没有解决问题,我仍然不能使用我的web应用程序,但现在它只是不抛出异常日志。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-04-06 14:40:10

所以我终于解决了这个问题。

SecurityConfiguration类中,必须从SingleSignOutFilterCasAuthenticationEntryPoint中删除@Bean注释。这似乎是主要问题,很难找到。

另外,必须对application.properties进行更改

  • app.service.security值从../j_spring_cas_security_check替换为../login/cas
  • spring.view.prefix替换为spring.mvc.view.prefix
  • 也可以替换suffix

这就是全部。

票数 1
EN

Stack Overflow用户

发布于 2017-10-06 19:39:46

按照https://github.com/grails-plugins/grails-spring-security-cas/commit/347217482b16be85d775016d10b6b4ccc2f5825f,如果您还将属性ignoreInitConfiguration设置为true,那么它应该会修复问题,或者至少对我是这样做的。

代码语言:javascript
复制
<bean id="singleLogoutFilter" class="org.jasig.cas.client.session.SingleSignOutFilter">
    <property name="casServerUrlPrefix" value="${cas.casServerUrlPrefix}"/>
    <property name="ignoreInitConfiguration" value="true" />
</bean>
票数 1
EN

Stack Overflow用户

发布于 2018-01-09 02:49:19

代码语言:javascript
复制
    @Bean
    open fun singleSignOutFilter(): SingleSignOutFilter {
        val singleSignOutFilter = SingleSignOutFilter()
        singleSignOutFilter.setIgnoreInitConfiguration(true)
        singleSignOutFilter.setCasServerUrlPrefix(CAS_URL_PREFIX)
        return singleSignOutFilter
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43118431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档