【发布时间】:2011-08-16 00:41:12
【问题描述】:
我们的网络服务器使用 CAS 进行单点登录。 CAS 服务器在 https://portal.ourdomain.com 上运行 JASIG CAS 服务器,而 Web 服务器在 http://service.ourdomain.com 上运行 Rails。
Rails 服务器的会话超时设置相当低,作为单点注销备份措施和其他原因。因此,偶尔,用户会被重定向到 portal.ourdomain.com 以进行重新身份验证。通常这是无缝的,因为 portal.ourdomain.com 会立即使用更新的票证 cookie 将它们重定向回 service.ourdomain.com,除非 CAS 会话已过期。
但是,这不适用于 AJAX。 Web 浏览器不遵循 XHR 请求的重定向,即使域相同。
一个明显的解决方案是提供来自https://ourdomain.com 的所有内容,并停止子域的废话。这是一项广泛的操作,需要通过 https 提供所有服务。
另一种解决方案是定期 ping 服务器,使其永远不会超时。除了增加服务器上的负载外,拥有永不超时的页面一开始就违背了超时的目的。
这导致了第三种糟糕的解决方案:只需删除超时。
How to Overcome Cross-domain Issues for Ajax Calls to CAS-protected Resources? 是一个类似的问题,没有答案,但这个问题似乎更广泛,所以我希望我们的问题有答案。
有没有人有解决这个问题的方法?
【问题讨论】:
标签: javascript ruby-on-rails ajax cas