拒绝访问用户在RabbitMQ中应该有权访问的队列

blmhpbnm  于 2023-08-05  发布在  RabbitMQ
关注(0)|答案(1)|浏览(152)

在我们的堆栈中,我们有一个Keycloak,它为我们的系统生成JWT令牌。我们配置了Keycloak,将每个用户所需的RabbitMQ访问权限添加到JWT的scope部分(每个用户属于一个客户组,每个客户都有一个单独的vhost):

"scope": "email profile rabbitmq.write:customer1/*/* rabbitmq.read:customer1/*/*"

字符串
问题是,当我们尝试从前端(使用stomp)连接到RMQ时,我们在RMQ日志中看到以下错误:

2023-08-02 12:26:51.471470+00:00 [erro] <0.7933.0> STOMP error frame sent:
2023-08-02 12:26:51.471470+00:00 [erro] <0.7933.0> Message: access_refused
2023-08-02 12:26:51.471470+00:00 [erro] <0.7933.0> Detail: "ACCESS_REFUSED - access to queue 'stomp-subscription-0wa7v-Ameof5juowM_5T1g' in vhost 'customer1' refused for user '14485fee-4180-454e-8137-befaec745577'"


我不明白为什么该用户没有访问该队列的权限。在JWT令牌中提到用户可以访问该vhost中的所有队列和交换,为什么现在我的访问被拒绝?
顺便说一句,我们使用oauth_2后端插件。

nnvyjq4y

nnvyjq4y1#

经过更多的调查,我发现,由于STOMP在RMQ中的实现方式,除了readwrite之外,用户还需要rabbitmq.configure访问权限,在给予用户configure访问权限后,我能够访问RMQ上的数据。

相关问题