在localhost上运行的webapp中的openid和facebook身份验证

时间:2012-02-13 22:22:48

标签: javascript ajax servlets openid oauth-2.0

我的java / javascript Web应用程序正在开发中,我有一个javascript应用程序,它与我的数据库(我维护自己的用户ID)进行通信,使用ajax POST命令到运行在localhost上的servlet容器,在vmware机器中。我希望能够在此开发设置上使用Google,Yahoo和Facebook身份验证登录,但在研究Facebook的OAuth 2.0方法时,看起来您的Web应用程序必须提供指向Facebook站点的链接,并提供重定向链接身份验证完成后返回到您自己的站点。此方法无效,因为Facebook无法重定向到本地主机地址并访问我的机器,而该机器没有Web存在。

我对OpenID和Google / Yahoo身份验证有同样的问题吗?

安迪

2 个答案:

答案 0 :(得分:0)

您可以在本地计算机上添加DNS条目,以便mysite.com解析为本地计算机。 通过这样做,您将能够从本地计算机登录进行测试。

在Windows中,您可以通过编辑文件来执行此操作: C:\Windows\System32\drivers\etc\hosts

添加新行:

127.0.0.1 mysite.com

关于OpenID,我不确定是否会接受来自localhost网址的登录信息,但是在主机文件中添加条目并拥有正确的域后,它肯定会起作用(即使它仅在您的计算机上解析)

诀窍在于,登录后,Facebook或Google会使用以下内容对您的应用程序做出响应:将用户重定向到mysite.com进行身份验证。然后,您的浏览器会将mysite.com解析为您的计算机,并且一切正常。

答案 1 :(得分:0)

Facebook OAuth适用于localhost应用。这是因为Facebook将浏览器重定向到您在oauth中提供的redirect_uri,您的浏览器知道http://localhost在哪里(我实际上在apache和windows vhosts中使用了虚拟主机,不知道你是否可以在你的应用程序设置中输入localhost作为网站网址。完美运作

然而,根据我的经验,Google Oauth不适用于本地版本。不知何故,该网站需要可以从谷歌本身(而不仅仅是浏览器)访问,这是为了工作,它没有,所以它没有(我不记得确切的细节,对不起)

不了解其他人