我在这里寻求一些建议。我在C#中使用RabbitMQ构建了一个多租户解决方案。它由一个云解决方案组成,该解决方案通过RabbitMQ将消息推送到客户端应用程序。RabbitMQ的路由是使用如下路由密钥设置的:myapp.messagestream.<customercode>
所有客户端都使用相同的用户名和密码连接到RabbitMQ。尽管客户端代码被混淆了,但获取用户名和密码仍然相对简单。有了这一点,从理论上讲,人们可以";猜测;任何其他客户id并获取流。显然,这不是我们想要的。
我想解决这个问题的方法是使用每个客户的加密密钥来加密所有消息。这样,即使您有RabbitMQ的用户名和密码,并且猜到了正确的客户id,您仍然看不到任何可用的信息。
有人能分享一下以上的见解吗?这似乎是个好主意吗?还是我完全疯了?
提前谢谢。
即使消息被加密,它也会被消费并从队列中删除。我想这不是你想允许的。
考虑创建不同的用户,并允许他们通过授权只从自己的队列中读取。您可以将其连接到LDAP。
编辑:隐藏传输中的消息总是一个好主意,但这可以通过SSL/TLS实现,无需在上添加另一层