我在一台服务器(S1)上使用symfony2制作了一个Rest API。
我在一台服务器(S2)上使用symfony2创建了一个应用程序。
S1:工作得很好。它给出用户信息的json响应,取决于给定的url。
S2: 工作得很好。用curl查询url。在http头中使用wsse来检索重要的用户信息。
我想登录我的用户(从S2)使用S1数据库。但是当我在S2, json响应用户的信息后,我不知道我需要做什么,怎么做…
应用端:——Symfony2
API端:——Symfony2——FOSUserBundle——FOSRestBundle- JMS
这是我第一次尝试做一个Rest API,所以可能我不太明白它是如何工作的。
提前感谢。
EDIT:查看更多详细信息。
- 1:用户1使用登录表单发送。
- 2: S2创建一个带有x-wsse参数的http头(Nonce/Timestamp/Username/Password…)
- 3: S2用curl 发送此报头给S1
- 4: S1检索数据,如果头部有良好的信息,发回用户的信息(json格式)或做一些动作
- 5: S2从S1中检索用户的json信息。
- 6:我可以显示页面,就像我想要的用户1
现在我的问题是,我需要为一个新的页面做同样的事情,但我不想问我的用户密码和用户名第二次,因为对他来说,他是登录。
希望更清楚。
编辑2:我的问题在一个句子中恢复。
在Symfony2中,使用wsse身份验证,我如何获得用户的令牌并在API上进行身份验证后将其发送到客户端。
: p
您需要创建一个自定义身份验证。幸运的是,这个Symfony食谱条目将向您展示如何使用WSSE:
http://symfony.com/doc/current/cookbook/security/custom_authentication_provider.html当您从S2应用程序进行身份验证时,S1应用程序返回一个令牌,对吗?
然后你需要做的就是将这个令牌存储在S1应用程序的某个地方(一个实体,redis,…)无论如何),当一个外部应用程序(比如你的S2应用程序)在提供令牌请求的同时请求资源时,你只需要检查令牌是否存在并且有效。
如果是,则可以使用Symfony的安全组件对S1上的用户进行身份验证。