ActiveMQ:用Stomp结合Django身份验证
我正在做一个关于电力监测的项目,想把实时的电力数据只发送给授权的用户。有些用户选择在他们的房子里安装电力传感器,其他用户则在查看这些传感器的数据。每个传感器会把数据发送到一个Twisted后端,目标是让这个后端把数据转发到浏览器里的JavaScript。
我现在用来转发数据的方案是一个Orbited服务器和一个MorbidQ实例(MorbidQ是一个Stomp服务器)。我系统中的每栋建筑(这里有个例子)都有自己的更新频道。Twisted后端通过MorbidQ频道广播数据给所有在观看的人,但任何人都可以观看。我的博客上有一篇关于从传感器到网站的数据流的文章。
对于很多建筑,我只希望少数用户能够看到特定建筑的实时数据。如果可能的话,我想使用Django Auth,或者如果不行的话,找个替代方案。
怎样才能最简单地根据用户来保护这些频道呢?我可以使用Django Auth吗?我应该用RabbitMQ或ActiveMQ代替MorbidQ吗?我可以采取哪些措施来确保这个方案的安全性?
在编程方面,我对C++和Python最有信心。
谢谢!
2 个回答
重新提一下以前的讨论:据我所知,MorbidQ不适合用在生产环境中。ActiveMQ要强大得多,处理用户认证的方式也更好。我在2010年写过一篇关于静态用户认证的文章,链接在这里这,但ActiveMQ可以传递一个动态的用户列表来进行认证,这个列表可以来自应用程序所连接的任何后端。如果有LDAP可用,那就更好了。
如果你使用morbidq的restq扩展功能,每当用户尝试连接时,它就会向你的应用发送一个HTTP回调。你可以在这里查看详细信息:http://www.morbidq.com/trac/wiki/RestQ。然后,你的django应用可以在经过一些身份验证程序后,简单地返回“是”或“否”来回应这个连接尝试。