分享会跨越护栏上不同的子域应用(Sharing session across rails apps

2019-09-01 14:24发布

我想实现的多个电源轨(V3.2)的单点登录解决方案的应用程序托管在example.com的不同的子域

一个应用程序用作身份提供者,使用设计为AUTH,并且在users.example.com坐在其他应用依靠身份提供者进行认证,使用色器件+ omniauth,具有的结构域[app1.example.com,app2.example .com和example.com]。 该博客文章引起不少我的执行: http://blog.joshsoftware.com/2010/12/16/multiple-applications-with-devise-omniauth-and-single-sign-on/

我有它工作正常,但问题依然存在,这些会议不共享等以后我登录的身份提供者,我仍然必须从每个其他应用程序的调用来验证,我需要这是无缝的用户。

我试图使用相同的秘密凭证在secret_token.rb,相同的会话密钥在session_store.rb和:域=>:所有(也试过“.example.com的”和‘example.com’作为值)。 仍然没有运气。

做上述,我看到一个session.inspect,关于身份提供者登录后的会话变量“warden.user.user.key”是稀少。 当我马上去上app1.example.com的应用程序,该session.inspect显示了相同的session_id和_csrf_token但“warden.user.user.key”变量现在下落不明。

我觉得我失去了一些东西傻..任何想法可能是什么?

Answer 1:

我认为这是有关获取一个cookie跨子域会回答你的工作的另一个SO问题:

https://stackoverflow.com/a/10403338/2573896

另外,我可以想像,当使用具有达利分布式缓存集群和Memcached的作为你的会话存储会以及工作:

http://awesomerails.wordpress.com/2011/08/23/rails-3-memcached-session-store/

对于应用程序的目的,第一个解决方案更有意义,但。



文章来源: Sharing session across rails apps on different subdomains