Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Tomcat和浏览器到Openfire的认证方案_Javascript_Tomcat_Authentication_Cookies_Xmpp - Fatal编程技术网

Javascript Tomcat和浏览器到Openfire的认证方案

Javascript Tomcat和浏览器到Openfire的认证方案,javascript,tomcat,authentication,cookies,xmpp,Javascript,Tomcat,Authentication,Cookies,Xmpp,我们正在开发一个web应用程序,它使用strophe.js与openfire服务器进行XMPP聊天。web应用程序托管在tomcat上,tomcat和openfire都驻留在同一台服务器上。Strophe.js使用BOSH(本质上是http长轮询)作为客户端和openfire之间的通信机制 我们的tomcat实例使用数据库中的users表对表单进行身份验证。我们已将openfire实例配置为从同一个表中读取。这样,移动应用程序就可以使用用户的凭据直接连接到聊天服务器 我们还将apache作为反向

我们正在开发一个web应用程序,它使用strophe.js与openfire服务器进行XMPP聊天。web应用程序托管在tomcat上,tomcat和openfire都驻留在同一台服务器上。Strophe.js使用BOSH(本质上是http长轮询)作为客户端和openfire之间的通信机制

我们的tomcat实例使用数据库中的users表对表单进行身份验证。我们已将openfire实例配置为从同一个表中读取。这样,移动应用程序就可以使用用户的凭据直接连接到聊天服务器

我们还将apache作为反向代理运行。这可能是解决当前问题的TMI,但更多信息不会有什么坏处。url方案如下所示:

http://myserver/web 我们的网络界面。去http://myserver:8080/

http://myserver/chat 转发到strophe.js连接的openfire BOSH url。去http://myserver:7070/http-绑定明火波什端点

我试图解决的问题是如何从浏览器登录到我们的openfire服务器。例如,如果用户转到login.jsp站点并输入其凭据,服务器将把该用户转发到index.jsp。js连接将尝试连接到聊天服务器/聊天室,但此时,javascript代码不再提供用户名和密码

我需要弄清楚如何在进行身份验证后,使用openfire服务器在web浏览器中安全地对用户进行身份验证。我四处寻找了一些例子,但是没有太多的信息,或者更确切地说,我不知道要寻找什么

一些可能的解决办法

一,。我尝试的第一个策略是在openfire中创建一个AuthProvider实现,该实现可以将浏览器的cookie作为密码,使用该cookie向tomcat发出HTTP请求,如果成功,则认为该用户已通过身份验证。这在一开始是有效的,但在部署时,我发现我需要配置tomcat以允许document.cookie填充JSSessionID。在阅读了一些关于这方面的内容后,从安全角度来看,似乎不建议使用cookie。杰夫·阿特伍德(Jeff Atwood)发表了一篇文章,讨论了javascript可访问cookie所带来的安全问题。虽然我并不完全反对使用cookies,但还有更好的方法吗

二,。我还想到了一个尚未实现的解决方案,即提供一个REST端点来创建令牌,用户可以在登录后获取这些令牌,并将其用作openfire服务器的密码。看起来好一点,但我需要创建一个新表,管理它们的过期时间,等等

如果有人解决了这个问题,请告诉我。我们将不胜感激