这是我第一次为 GSoC 2009 写博客。 compared to 其他 17 个学生来说有点晚。 :) 我五月底有一个学校活动需要参加,所以我直到 6 月 3 日才开始...
首先,这个集成项目真的很具挑战性。因为使用 cURL 在两个系统之间进行集成是显而易见且已经被其他人做过的。我想让这个 J!Mint 更进一步。幸运的是我有一些 Magento 的经验,所以这并没有难住我。然而,为了提出一个 SSO 的解决方案,我花了很多时间学习和尝试新东西。
功能
- 跨域 SSO,也就是说我们仍然运行着两个独立的系统,一个 Joomla 网站和一个 Magento 网站。
- 一旦用户在 Joomla 网站登录,他将也能访问 Magento。 <-- 这意味着如果登录用户打开另一个标签页并浏览 Magento 网站,他必须仍然是自动登录状态。
- 用户在 Joomla 网站登录后,可以去 Magento 网站像往常一样购物!
- 这个 SSO 解决方案并不是使用 cURL 在 Joomla 网站上显示 Magento 登录内容。
困难
- 这不能仅通过 cURL 完成,就像我五月份之前所想的。
- 需要使用 iFrames。跨域问题已解决。
- 在将登录信息重定向到 Magento 登录表单时出现了安全问题。
工作
- 我对 cURL 进行了广泛搜索和学习,并尝试了使用 Flash / iFrame / 代理 / 程序漏洞 / 按需 JavaScript 进行 Ajax 跨域通信。在尝试了不同的技术并考虑了利弊后,我提出了一个使用 iFrame 和 Magento 网站上的简单代理的“无漏洞”解决方案。
我正在努力开发,希望能在7月1日发布SSO插件的Beta版本。
按照计划,7月15日之前应该可以完成将Magento的后端模板集成到Joomla的模板中。
下面是表格,说明了这个SSO插件支持哪些类型的用户。
|
|
SSO权限至 |
|||
Joomla |
Magento |
||||
用户类型 |
前端 |
后端 |
前端 |
后端 |
|
1 |
客户 |
- |
- |
是 |
- |
2 |
前端员工 |
是 |
- |
- |
是 |
3 |
后端员工 |
是 |
是 |
- |
是 |
以下流程图展示了客户类型的用户登录机制。其他用户类型的登录过程应该遵循相同的流程,略有修改。
我基本上在Joomla网站上使用了两个iframe
1. 一个iframe用于将凭证发布到Magento登录表单。(3) & (4)
2. 第二个iframe (5) & (6) 用于验证登录过程是否成功。这个iframe在Magento上打开代理。这个代理通过尝试打开Magento上仅限登录用户访问的固定链接来检查当前用户是否已登录。如果用户已登录,则这个代理将重定向到Joomla上的一个页面,告知Joomla用户的状态。由于代理已经重定向回Joomla网站的一个页面,iframe可以被Joomla访问,且没有违反跨域规则。没有任何破解。如果代理没有重定向回Joomla网站,这个iframe不能被Joomla访问 --> 表示这个用户未登录。
演示
Joomla网站: http://www.hateit.net/login/
Magento网站: http://www.iamtotti.com/server/shop/
演示登录在Joomla网站上提供。
兼容性
- 在FF 3、IE 7(保护模式关闭)、Opera 9.2、Chrome 2和Safari 4上进行了测试。
发布
- 这甚至还不是alpha版本,只是一个在Joomla上快速且简陋的模块用于测试。我正在努力将其制作成Ajax插件。
期待听到您的评论 :)
安