在Symfony2中使用Rest API设置令牌客户端

时间:2014-06-15 04:21:15

标签: api rest symfony curl wsse

我在一台服务器(S1)上使用symfony2创建了一个Rest API。

我在一台服务器(S2)上使用symfony2创建了一个应用程序。

S1: 效果很好。它给出了用户信息的json响应,取决于给定的url。

S2: 效果很好。用卷曲问网址。在http标头中使用wsse来检索重要用户的信息。

我希望使用S1数据库登录我的用户(来自S2)。 但是当我在S2时,在json响应用户的信息后,我不知道我需要做什么以及如何做...

申请方: - Symfony2

API方面: - Symfony2 - FOSUserBundle - FOSRestBundle - JMS

这是我第一次尝试制作Rest API,所以也许我不太清楚它是如何工作的。

提前感谢。

编辑:了解详情。

  • 1:用户1使用登录表单并发送。
  • 2:S2使用x-wsse参数创建一个http标头(Nonce / Timestamp / Username / Password ...)
  • 3:S2使用curl
  • 将此标头发送到S1
  • 4:S1检索数据,如果标题有良好的信息,请发回用户的信息(在json中)或进行一些操作
  • 5:S2从S1中检索用户的jsons信息。
  • 6:我可以像我想要的那样显示页面用户1

现在我的问题是我需要为新页面做同样的事情,但我不想再问我的用户密码和用户名,因为对他来说,他是登录的。

希望它更清楚。

编辑2:我的问题以一句话恢复。

在Symfony2中,使用wsse身份验证,如何在API上进行身份验证后获取用户令牌并将其发送到客户端。

:P

2 个答案:

答案 0 :(得分:0)

您需要创建自定义身份验证。幸运的是,这个Symfony cookbok条目将向您展示如何使用WSSE:

http://symfony.com/doc/current/cookbook/security/custom_authentication_provider.html

答案 1 :(得分:0)

当您从S2应用程序进行身份验证时,您的S1应用程序会返回一个令牌,对吗?

然后您需要做的就是将此令牌存储在S1应用程序中的某个位置(实体,redis,......随便),并且当外国应用程序(例如您的S2应用程序)在提供此请求时请求资源使用令牌,您只需检查令牌是否存在且有效。

如果是,那么您可以使用Symfony的安全组件对S1上的用户进行身份验证。