跳至主内容
版本:4.3

已验证的用户 ID

在某些场景下,消费者能够获知发布消息的用户身份是很有用的。

为了实现这一点,RabbitMQ 会在 user-id 消息属性被设置时对其进行验证。换句话说,如果发布者设置了该属性,其值必须与连接所使用的用户名一致。

如果未设置 user-id 属性,则发布者的身份将保持私有,且不会进行任何验证。

示例(Java 版)

AMQP.BasicProperties properties = new AMQP.BasicProperties();
properties.setUserId("guest");
channel.basicPublish("amq.fanout", "", properties, "test".getBytes());

此消息仅在用户为 "guest" 时才能成功发布。

额外的身份验证层

如果安全性是首要考量,您可能应该将此功能与 启用 TLS 的连接结合使用,并可能通过服务器执行客户端对等证书链验证。

特殊情况:模拟者标签 (Impersonator Tag)

有时允许应用程序伪造 user-id 可能很有用。为了允许这样做,可以为发布用户设置 impersonator 标签。默认情况下,没有任何用户设置此标签。特别是,administrator 标签并不包含此权限。

联合交互

联合插件 (federation plugin) 可以从设置了 user-id 属性的上游交付消息。默认情况下,它会清除此属性(因为它无法判断上游代理是否可信)。如果设置了上游的 trust-user-id 属性,那么它将从上游代理透传 user-id 属性,并假设该属性已在上游完成验证。

© . This site is unofficial and not affiliated with VMware.