跨域验证:如何?

时间:2011-09-27 12:39:16

标签: php ajax wordpress single-sign-on

在你把这个问题作为一个骗局写下来之前,我想补充说在SO上有一些关于相同主题/标题的问题,但是这个问题有点不同,因为大多数/所有问题都涉及SSL和我的问题没有。

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

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

2 个答案:

答案 0 :(得分: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用户名和密码。这是他们可能会或可能不会信任你的东西。

答案 1 :(得分:1)

您可以做的最好的事情是创建一个ajax请求,该请求传递SESSID以在您的所有站点上进行身份验证。如果您正在使用,可以使用例如JSONP