Ruby on rails 单一登录、同一服务器上的多个域、ruby on rails

Ruby on rails 单一登录、同一服务器上的多个域、ruby on rails,ruby-on-rails,cookies,devise,cross-domain,jsonp,Ruby On Rails,Cookies,Devise,Cross Domain,Jsonp,如果我有一台具有多个域的服务器,那么在同一个域上实现单一登录解决方案的首选方法是什么。我目前正在使用Desive,在不同的域上有几百万个cookie,我被卡住了。除了实现SSO,我还需要将各种cookie迁移到中心域。关于各种服务器,它们只有一个页面,需要我根据用户是否登录显示不同的状态 我尝试了以下方法: CORS:选择一个域作为中心身份验证中心。从所有其他域进行跨域检查,以查看用户是否已登录。对于迁移cookie,检测是否存在“current_user”对象,将其发送到客户端,发出CORS请

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

我尝试了以下方法:

  • CORS:选择一个域作为中心身份验证中心。从所有其他域进行跨域检查,以查看用户是否已登录。对于迁移cookie,检测是否存在“current_user”对象,将其发送到客户端,发出CORS请求,登录用户并杀死令牌。很好!但是在构建2-3周后,它在IE中完全失败。即使是IE11,我也注意到默认设置是禁用此行为

  • 尝试在中修补会话存储

     Rails.application.config.session_store
    
  • 没有运气

    我目前正在进行以下试验:

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

  • 设置自定义OAUTH提供程序。与之前一样,如果用户登录,它将成为“中心域”,并使用令牌返回到请求的域,用户可以从该令牌发出请求

  • 看看这个,但它看起来过时了。我还觉得,如果我一开始就推出,这可能是一个解决方案,但考虑到我们在项目中的投入程度,我不清楚如何转移现有的cookies。另外,还不清楚这是否需要两个应用程序才能启动和运行(一个用于客户端,一个用于身份验证服务器)


  • 在我讨论这些可能性时,如果有人对我正在做的事情有任何经验,请务必通知我并为我节省大量工作:)

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

    我们为此使用Desive,效果非常好。如果你还不熟悉这个策略,那么花一点时间阅读文档并在youtube上观看一两场演讲是值得的,但一旦你理解了核心概念,在这个gem的帮助下建立起来其实非常简单

    oAuth上有一个快速的视频运行,这可能是“正确”的方法。我建议你把精力集中在那里。