2011-09-27 80 views
1

在你把这个问题写成傻瓜之前,我想补充一点,在SO上有几个题目相同的问题,但这个问题有点不同,因为大多数/所有问题都涉及到SSL,而我的问题没有。跨域验证:如何?

www.mysite.com是我的网站,它是使用wordpress cms构建的。我应该在我的网站上构建一个用户管理功能(我猜wordpress在默认情况下会提供此功能/需要一些插件)。当用户登录到www.mysite.com,我应该对www.thirdpartysite.com该用户进行身份验证。这在某种程度上有点类似于说OpenID,但只有它不提供/支持除基于Web的认证以外的任何其他认证方案。

那么,我在这里几乎陷入这个问题?在这里继续的最佳方式是什么?我是否告诉www.thirdpartysite.com他们需要公开API进行身份验证?或者我可以在这里使用AJAX,并有一段代码在www.thirdpartysite.com的后台进行身份验证 - 我不确定是否有可能。

回答

1

你能做的最好的事情就是创建一个Ajax请求其通过SESSID对所有的网站进行身份验证。这是可能的,如果你使用,例如JSONP

+0

这里的问题是,我拥有www.mysite.com,我没有www.thirdpartysite.com - 我如何通过SESSID来验证他们的网站? – Jay

2

我不会在这里使用AJAX,我会用cURL

做与有效和无效的凭据www.thirdpartysite.com测试,以找到一种方法来编程确定登录成功与否。您可能会发现状态码不同,或者在登录成功时重定向页面。

一旦你有一种方法来确定成功和失败的登录,创建一个www.mysite.com登录表单。当用户尝试登录时,在www.mysite.com上处理该帖子的php代码中,向www.thirdpartysite.com发送相应的帖子(例如,使用cURL)。如果登录www.thirdpartysite.com成功,则将用户视为已认证,创建会话和cookie等。如果登录www.thirdpartysite.com失败,则向用户显示错误。

有迹象表明,发挥作用以这种方式作为www.mysite.com会有专门登录到www.mysite.com用户访问www.thirdpartysite.com用户名和密码的安全考虑。这是他们可能或可能不信任你的东西。

+0

“如果登录www.thirdpartysite.com成功,然后将用户视为已认证,请创建会话和cookie” - 在www.mysite.com上创建会话,同时保留www.thirdpartysite.com的cookies,以供将来查询?你是这个意思吗? – Jay

+0

取决于www.mysite.com与www.thirdpartysite.com的集成程度。如果您仅使用www.thirdpartysite.com进行身份验证,则不需要存储任何Cookie。如果您向www.thirdpartysite.com提出其他请求,则是的,您需要在会话中存储Cookie。 –