【问题标题】:implementing SSO across subdomains in joomla在 joomla 中跨子域实现 SSO
【发布时间】:2013-05-31 14:14:54
【问题描述】:

首先,我对会话 cookie、joomla 会话和登录进行了大量阅读,但我似乎没有找到解决方案,或者至少不明白它是如何工作的。

我有三个 joomla 网站,其中一个是主域,其余是子域。

我希望在登录主域时能够自动登录到子域。

到目前为止,我已经完成了以下工作,

所有三个网站都共享用户信息表(用户、组、访问级别)。 它们共享相同的秘密值。 三个网站的 cookie 域都是 .domain.com。

但是当我登录到我的主站点时,我似乎没有登录到子域。 我已尝试共享会话表,但没有成功。

我在这里错过了什么?

P.s - 我尝试过 jfusion,它可以工作,但我对这个功能不满意,因为我没有看到使用 curl 在子域中提交表单的意义。 我使用了来自 jms2win 的多站点 SSO 插件。它基本上设计用于在不同的域上工作,而不是在子域之间工作。在我的情况下它也不起作用。

谢谢。

【问题讨论】:

    标签: joomla joomla2.5 single-sign-on session-cookies


    【解决方案1】:

    共享用户和会话很容易,如果您使用数据库在站点之间共享用户和会话表,您将能够使用同一个域进行操作,但对于不同的域,有时甚至是子域,这是不可能的。为什么?因为浏览器 cookie:您只能从同一个域或顶级域读取 cookie(例如从 sub.domain.com 读取来自 domain.com 的 cookie)。

    最后,您需要采取一些变通方法来解决此限制。这就是为什么你需要使用一些外部插件(就像你提到的这些),或者使用一些类似的策略来解决 cookie 问题。

    这不是关于特别的 Joomla,而是关于浏览器的工作原理。

    【讨论】:

    • 当我在每个 joomla 实例中指定 cookie 域时,它们会同步会话 cookie。我能够用 firebug 验证这一点。它不起作用的原因是会话令牌。当您登录时,Joomla 表单会生成并检查这些会话令牌。当我登录到主站点时,它会在会话中存储一个令牌,即使从站点可以访问数据库中的相同会话,会话中的令牌和从站点表单生成的令牌也不同。因此,会话到期。解决此问题的唯一方法是使令牌同步。但我无法让它们同步。
    • 所以你在会话的sincronization 中做错了什么。如果您的站点共享 cookie(没有域问题)并且您使用了一些 Joomla 插件,或者只是为从从站点到主站点的所有用户/会话相关表创建视图,则此答案将正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 2012-09-15
    相关资源
    最近更新 更多