2

我在一台服务器(S1)上用 symfony2 制作了一个 Rest API。

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

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

S2: 效果很好。用 curl 询问 url。在 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检索数据,如果header有好的信息,发回用户信息(json)或者做一些动作
  • 5:S2从S1获取用户的jsons信息。
  • 6:我可以向用户 1 显示我想要的页面

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

希望它更清楚。

编辑 2:我的问题用一句话概括。

在 Symfony2 中,通过 wsse 身份验证,我如何获取用户的令牌并在 API 身份验证后将其发送到客户端。

:p

4

2 回答 2

0

您需要创建自定义身份验证。对你来说幸运的是,这个 Symfony 食谱条目将向你展示如何使用 WSSE 来做到这一点:

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

于 2014-06-15T06:23:36.720 回答
0

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

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

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

于 2014-06-15T08:42:04.760 回答