使用Spring Security CAS扩展实现SSO时出现问题

时间:2013-10-17 11:50:43

标签: spring-security cas jasig spring-security-cas

我正在尝试使用Spring Security CAS扩展来验证我的应用程序上的用户。之前只有一个应用程序,因此不需要SSO。现在还有一个应用程序,我希望用户登录一次并使用所有应用程序,而无需再次进行身份验证(基本上是SSO)。我有很多像这样的问题 -

  • 我拥有的所有应用程序都是单个tomcat容器的一部分,并将通过相同的域提供。我检查过Tomcat SSO Valve,但似乎需要基于容器的身份验证,我不确定是否要将其用于身份验证/授权。我正在使用基于Spring安全表单的登录。我真的需要像Jasig CAS这样的东西吗?还是会有点矫枉过正?

Spring Security和CAS deployerContext配置 ​​- http://pastie.org/8408976http://pastie.org/8408967

  • 我使用Jasig服务器设置Spring Security CAS,而SSO 似乎用于登录任何应用程序以访问其他应用程序。我修改了deployerConfigContext.xml,用JPA / Hibernate替换了inMemoryServiceRegistryDaoImpl。但我总是在日志中看到以下行。虽然已经在我的数据库中创建了表(SERVICETICKET等)。当我尝试登录和退出时,这些表总是空的。

    2013-10-17 16:41:18,882 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - <Loaded 0 services.>

  • 当我尝试访问网址https://localhost/cas/services时,会返回错误“此网站有重定向循环”。我看到下面的部分在日志中重复了多次(使用不同的票号) - http://pastie.org/8408940

  • 我没有任何REST或无状态服务访问经过身份验证的资源,我是否需要代理票?

注意:我使用的是Spring Security 3.1.4.RELEASE和CAS服务器3.5.2版本。 任何指针都会有所帮助。

1 个答案:

答案 0 :(得分:0)

I set up Spring Security CAS with Jasig server and SSO seems to work
   as logging in to any of the applications suffices to access the other
   application. I've modified the deployerConfigContext.xml to replace
   the inMemoryServiceRegistryDaoImpl with JPA / Hibernate one. But I
   always see the below line in my logs. Though the tables have been
   created (SERVICETICKET and so on) in my db. These tables are always
   empty when I try logging in and out.
When I try to access URL `https://localhost/cas/services`, it returns an error "This website has a redirect loop". and I see the
  

下面的片段在日志中重复n次(有不同的   门票号码)

我找到了解决方法。这是因为CAS服务器配置中的filterProcessesUrl具有字符串“acegi”(Spring Security的旧名称),它与“spring”不匹配,因此出现问题。修改有帮助。不知道为什么旧名称在那里硬编码。此外,它没有从cas.properties中获取这个字符串,所以弄清楚它有点困难。

我希望得到其他问题的答案。