我正在将 Rails 与我公司的 SSO 系统集成。我在我的服务器上安装并启用了 SiteMinder Apache 模块。
Rails 应用程序检查 before_filter 中的请求对象以确定用户是否已经通过 SSO 认证。在找到所需的变量后,我的应用程序会将 SSO 返回的用户 ID 与自身内部的用户帐户进行匹配,并对该用户进行身份验证(使用 ActiveRecord 会话存储进行静态身份验证)。
我的问题是:使用此方法成功登录后,在点击几页后,我突然失去了我的 Rails 会话,结果被我的应用程序重新验证(我回到主页)。
这不是 CSRF 保护的结果,因为它:
- 在我的应用程序的测试和生产环境中都发生(默认情况下它在测试环境中关闭),并且
- 无论请求类型如何,似乎都是随机发生的:AJAX、GET 和 POST 请求都导致了这种行为。
即使我禁用了根据用户的 SSO ID 自动登录用户的代码,并且只是点击了我的应用程序上的旧登录页面(在使用 SSO 进行身份验证之后),我注意到我的浏览器 cookie 中每隔一段时间就会出现一个新的会话 id 值出现。
因此,当我打开 Apache SSO 模块时,会话将被重置。否则,一切都很好。是什么赋予了?