我正在整合Rails和我公司的SSO系统。我的服务器上安装并启用了SiteMinder Apache模块。Rails会话和SiteMinder/SSO
Rails应用程序检查before_filter中的请求对象以确定用户是否已通过SSO进行身份验证。在找到所需的变量后,我的应用程序会将从SSO返回的用户标识与其内部的用户帐户进行匹配,然后对该用户进行身份验证(使用ActiveRecord会话存储进行平稳身份验证)。
我的问题是这样的:成功登录后使用这种方法,在几个页面值得点击后,我突然丢失我的Rails会话,并因此我的应用程序重新认证(我回到了主页)。
这不是CSRF保护的结果,因为它:
- 同时出现在我的应用程序的测试和生产环境(和它在默认情况下,测试环境关闭),并
- 无论请求类型如何,看起来都是随机的:AJAX,GET和POST请求都导致了这种行为。
即使我禁用是基于其SSO ID自动登录的用户,只是打在我的应用程序的旧登录页面(通过SSO认证后)的代码,我注意到,每隔一段时间一个出现我浏览器cookie中的新会话ID值。
因此,当我打开我的Apache SSO模块时会话正在重置。否则,一切都很好,很棒。是什么赋予了?
我监视我的Rails会话cookie的内容,在Firefox,而多次击中页面。 Cookie **的内容确实发生了变化,因此此时我想知道是什么原因导致Rails决定重置Cookie。不同的起源IP?如果请求看起来“被篡改”(虽然我不认为SSO模块正在篡改我的Rails会话cookie的_contents_)? 谢谢你的建议。我已经将这个问题提交给SiteMinder人员,并且没有骰子。 – 2012-03-29 14:41:51