单点登录,同一服务器上的多个域,轨道上的ruby

jdk*_*aly 7 cookies jsonp ruby-on-rails devise cors

如果我有一个具有多个域的服务器,那么在同一个域上实现单点登录解决方案的首选方法是什么.我目前正在使用设计,在不同的域上有几百万个cookie,并且卡住了.除了实施SSO之外,我还需要将各种cookie迁移到中央域.关于各种服务器,它们只有一个页面,要求我根据用户是否登录显示不同的状态.

我尝试过以下方法:

  1. CORS:选择一个域作为中央身份验证中心.从所有其他域进行跨域检查以查看用户是否已登录.对于迁移cookie,检测是​​否存在"current_user"对象,将其发送到客户端,发出CORS请求,签署用户并终止令牌.效果很好!但是......在建立2-3周之后,它在IE中完全失败了.即使是IE11,我注意到默认设置是禁用此行为.

  2. 试图修改会议商店

     Rails.application.config.session_store
    
    Run Code Online (Sandbox Code Playgroud)

没有运气.

我目前正在尝试以下方面:

  1. JSONP:我现在有人尝试将上面的内容转换为JSONP,而我尝试了其他一些选项:

  2. 设置自定义OAUTH提供程序.像以前一样,如果此人登录,它将成为"中心域",使用用户可以发出请求的令牌返回请求的域.https://github.com/songkick/oauth2-provider

  3. 看着这个,但它看起来过时了?https://github.com/rubycas/rubycas-client.我也觉得这可能是一个解决方案,如果我从一开始就推出这个,但考虑到我们进入项目的程度,我不清楚我如何转移现有的cookie.此外还不清楚这是否需要两个应用程序让我启动并运行(一个用于客户端,一个用于auth服务器)

当我经历这些可能性时,如果有人有任何经验做我正在做的事情,请告诉我并为我节省大量工作:)

Nic*_*ick 2

除非这是一个玩具应用程序,否则最好的方法可能是设置一个 oauth 提供程序。

为此,我们使用Doorkeeper和 Devise,效果非常好。如果您还不熟悉该策略,那么花一点时间阅读文档并在 YouTube 上观看一两场演讲是值得的,但一旦您了解了核心概念,设置起来实际上非常简单这颗宝石的帮助。

http://railscasts.com/episodes/353-oauth-with-doorkeeper上有一个快速视频