如果我有一个包含多个域的服务器,那么在同一个域上实施单点登录解决方案的首选方法是什么。我目前正在使用设计,在不同的域上有几百万个cookie,并且卡住了。除了实施SSO之外,我还需要将各种cookie迁移到中央域。关于各种服务器,它们只有一个页面,要求我根据用户是否登录显示不同的状态。
我尝试了以下内容:
CORS:选择一个域作为中央身份验证中心。从所有其他域进行跨域检查以查看用户是否已登录。对于迁移cookie,检测是否存在" current_user"对象,将其发送到客户端,发出CORS请求,签署用户并终止令牌。效果很好!但是......在建立2-3周之后,它在IE中完全失败了。即使是IE11,我注意到默认设置也会禁用此行为。
尝试修改
的会话商店 Rails.application.config.session_store
我目前正在尝试以下内容:
JSONP:我现在正试图将上述内容转换为JSONP,而我尝试了其他一些选择:
设置自定义OAUTH提供程序。像以前一样,它将成为"中心域名"如果此人已登录,则返回所请求的域,其中包含用户可以发出请求的令牌。 https://github.com/songkick/oauth2-provider
看着这个,但它看起来已经过时了? https://github.com/rubycas/rubycas-client。如果我从一开始就把它推出来,我也觉得这可能是一个解决方案,但考虑到我们进入项目的程度,我不清楚我如何转移现有的cookie 。此外,我不清楚这是否需要两个应用程序才能启动并运行(一个用于客户端,一个用于auth服务器)
当我经历这些可能性时,如果有人有任何经验做我正在做的事情,请通知我并为我节省大量工作:)
答案 0 :(得分:1)
除非这是一个玩具应用程序,否则最好的办法可能是建立一个oauth提供者。
我们将Doorkeeper与Devise用于此,并且效果很好。如果您还不熟悉策略,那么花一点时间来阅读文档并在youtube上观看一两个话题是值得的,但是一旦理解了核心概念,它实际上很容易设置在这个宝石的帮助下。
上有一段快速视频