不再添加新功能 >>

我已经实现了我们预期要做的所有功能,并且还实现了一些一开始未决定的其他功能,例如单点登录。更多关于 JConnect 功能的详细信息可以在这里找到。JConnect 功能列表

工作原理

在这个部分,我想向您介绍一些功能(内部机制)以及它们是如何实现的。这次我想谈谈认证和从外部应用程序的单点登录。

单点登录与认证

将单点登录和认证集成到 JConnect 对我来说是一项艰巨的任务。因为尽管我选择了集成 Elgg;JConnect 应该以更通用的方式设计,并且能够与任何应用程序一起使用。

所以我首先选择了一个 OpenID 框架来实现这一点。使用它,我将 Joomla 转换为 OpenID 身份提供者,而 Elgg 成为了 OpenID 客户端。它有效。但在一些服务器上有时会失败,并且它需要很多处理时间。

然后我意识到 OpenID 不是这个问题的最佳解决方案,并且它进行了一些对 JConnect 没有意义的处理。所以我阅读了关于 OpenID 的工作原理,并构建了一个定制化和最小化的 OpenID 版本,它将非常适合 JConnect。

  • 在这个系统中,用户成功登录 Joomla 后(我们使用 Joomla 的正常登录过程),它将基于 Joomla 和 ExApp 共享的 密钥 生成一个公共令牌和一个私有令牌。
  • 当 ExApp 获取到公共令牌时,它将基于 密钥 生成私有令牌,并通过 fopen() 打开一个 HTML 页面,同时发送这个私有令牌。
  • 然后在那个页面(Joomla)上,它将检查私有令牌是否有效,如果有效,则打印用户详细信息为 JSON。然后使该私有密钥无效。
  • 然后在ExApp中获取用户详细信息的JSON,并进行本地登录过程。

好的,已经认证了,单点登录在哪里?

  • 在这里....我们使用上述系统同时进行认证和单点登录。
  • 一旦用户在这个过程中提供登录详细信息,Joomla!将会登录该用户。
  • 然后用户可以访问Joomla网站,他会看到自己已经登录。
  • 这种情况的反面也是成立的。
  • 如果用户已经登录到Joomla!,那么在上述过程中不会要求用户提供登录详细信息,而只会发送公钥。
  • 所以用户可以不输入用户名密码就登录到Elgg!

下载和其他信息

http://jconnect.googlecode.com

反馈和后续

我非常希望听到您的反馈,如果有任何问题,我也非常希望了解。无论如何,在接下来的博客文章中,我想展示一些关于JConnect的其他的内部和开发者版本

谢谢!