针对Symfony2项目中使用的实时服务器进行身份验证

时间:2012-07-19 04:53:38

标签: api node.js authentication symfony socket.io

我最近使用不同的精心挑选的技术开始了一个新项目,我的项目建立如下:

这种方法是以API为中心的,这意味着我正在构建一个网站和一个与使用Symfony2编写的API进行通信的iOS应用程序。我成功地设法编写了我的API,它完全正常工作。 要访问API提供的服务,主要参与者(网站用户 iOS应用程序用户开发人员)可以进行身份​​验证他们有几种方式:

  • 客户可以通过网站界面通过登录/密码对获得访问权限,该界面通过AJAX直接与API通信,以验证提供的凭据并设置会话。因此,当某人登录我们的网站时,他们也会自动访问API。

  • 开发人员可以使用基于HTTP-Basic的{​​{1}}通过API对自己进行身份验证,这也将生成会话并授予他们访问权限的权限。

  • 此外,开发人员和客户可以通过 Facebook Connect 功能使用他们的Facebook帐户访问网站和API。这将删除每个参与者必须在我们的网站上创建帐户的步骤。

基本上,凭据是通过SSL或使用HTTP-Basic功能提供的。

既然我的身份验证系统正常运行并且我的客户端能够访问该网站,我希望他们在登录时能够连接到实时服务器。就像在Facebook或Google+中一样,如果你想要真实的话 - 时间服务器管理聊天和推送信息。

在这种情况下,我使用Facebook Login和强大的Node.js库来管理与实时相关的所有内容。 当然,实时服务需要一些凭据来验证用户,因为他通过会话对Symfony安全系统进行了身份验证,但未针对实时服务器进行身份验证。

我一直在考虑的解决方案是在我的API(Symfony端)中使用socket.io并将所有活动会话存储在MySQL或PostgreSQL等数据库中。这样做,我就能够向我的实时服务器发送symfony生成的会话ID,并检查数据库是否提供了会话ID。如果他是,我会让用户访问我的实时服务器提供的服务,并将他的会话与身份相关联。 但我真的不知道这是否是一个很好的解决方案,我希望在这方面有一些更有经验的建议,以及如何处理这个问题。

注意:由于某些原因,我无法实现PdoSessionStorage,即使它可以是使用单点登录方法解决此问题的解决方案。

0 个答案:

没有答案