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

问题描述 投票:7回答:1

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

我尝试了以下操作:

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

  2. 尝试修改会话存储在

  3.  Rails.application.config.session_store
    

    没有运气。

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

  1. JSONP:我现在有人尝试将上述内容转换为JSONP,而我尝试了其他选择:

  2. 设置自定义OAUTH提供程序。像以前一样,如果此人已登录,它将是“中央域”,并返回带有令牌的用户可以从中请求的域。 https://github.com/songkick/oauth2-provider

  3. 看着这个,但看起来已经过时了吗? https://github.com/rubycas/rubycas-client。如果我从一开始就将其推出,我也会感到这可能是一个解决方案,但是鉴于我们对项目有多深入,所以我不清楚如何转移现有的Cookie。同样也不清楚这是否需要两个应用程序来启动和运行(一个用于客户端,一个用于身份验证服务器)

  4. [当我经历所有这些可能性时,如果有人在做我正在做的事情上有任何经验,请务必通知我,并为我节省很多工作:)

如果我有一台具有多个域的服务器,那么在同一域上实现单点登录解决方案的首选方法是什么。我目前正在使用devise,在...

ruby-on-rails cookies devise cross-domain jsonp
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.