【问题标题】:Should I implement authentication for event messages in a messaging queue?我应该对消息队列中的事件消息实施身份验证吗?
【发布时间】:2017-11-12 01:08:28
【问题描述】:

"Enterprise Integration Patterns"(我在实现队列消息传递系统时一直使用这本书作为参考)中,有命令消息、文档消息、event message 等的概念。

在我的系统中,我决定将"pull model" 用于事件消息。因此,当数据库中的文档更新时,它会广播如下事件消息:

routing key: 'UserUpdated'
body: { _id: '5787f132f50f7b03002cf835' }

然后,任何感兴趣的观察者都可以通过 RPC(请求/回复)通道简单地请求文档的最新版本(在本例中为“用户”),并使用该状态执行他们需要执行的操作,以使他们自己的服务发生变化(例如,当用户更新时,另一个系统可能想知道它,然后将该用户记录缓存在 Redis 或其他东西中)。

在我的其他消息类型中(例如,像UpdateUser 这样的命令消息),我还在消息头中发送了一个授权令牌。这是有道理的,因为命令 UpdateUser 旨在调用另一个系统中的更改。

但是,在事件消息中也放置一个授权令牌是否有意义?

我的想法是,事件不一定要求对任何观察者进行更改,并且不需要仅仅为了通知系统发生的事情而“授权”(此外,两个系统已经连接到同一个系统)队列服务器,需要一些身份验证才能开始);相反,观察者只是在消息中看到一些 _id,并单独请求一个文档,然后可以根据需要对自己的服务进行更改(在对发起事件消息的服务器的文档请求中,观察者 确实提供了一个授权令牌)。有什么想法吗?

对于任何对实现细节感兴趣的人:

  • node.js(带有 amqplib)
  • RabbitMQ

【问题讨论】:

    标签: node.js rabbitmq message-queue


    【解决方案1】:

    但是,将授权令牌也放入其中是否有意义 事件消息?

    不,只要没有人可以伪造事件消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 2011-05-14
      • 2014-02-13
      • 2021-03-26
      • 1970-01-01
      • 2021-07-19
      • 2015-08-22
      相关资源
      最近更新 更多