NATS-Python中使用request-reply时如何设置订阅和发布权限?

问题描述 投票:0回答:1

我想设置auth权限,但是使用请求-回复模式时似乎有所不同。 这是我的设置:

values.yaml

users:
  -user: test
   password: testtest
   permissions:
     subcribe: ["test"]
     pulbish: ["test"]

Python代码

nc = await nats.connect("nats://test:testtest@jetstream-nats:4222")
js = nc.jetstream()
await js.add_stream(name="test", subjects=["test"]

错误信息:

nats.errors.Error: nats: permissions violation for subscription to "_inbox.xxxxxxxxxxxx.*"
nats.errors.Error: nats: permissions violation for publish to "$js.api.stream.create.test"

如果我将 value.yaml 更改为此,它不会显示任何错误,并且仍然无法发布到流“test”。

users:
  -user: test
   password: testtest
   permissions:
     subcribe: ["_INBOX.>"]
     pulbish: ["$JS.API.STREAM.CREATE.>"]

但是如果我将 value.yaml 更改为此,则会出现相同的错误消息

users:
  -user: test
   password: testtest
   permissions:
     subcribe: ["_INBOX.>"]
     pulbish: ["$JS.API.STREAM.CREATE.test.>"]
========================================================================================
nats.errors.Error: nats: permissions violation for subscription to "_inbox.xxxxxxxxxxxx.*"
nats.errors.Error: nats: permissions violation for publish to "$js.api.stream.create.test"

我的问题是使用请求-回复时如何设置订阅和发布权限?

如果我想设置用户“testuser”只能发布到流“test”并订阅“test”,如何设置我的yaml文件?

kubernetes-helm publish-subscribe nats.io nats-jetstream
1个回答
0
投票

发布到流仅需要消息实际主题的权限,在本例中为

test
。似乎发生的情况是,您还尝试使用需要不同权限的该用户创建流(您在第二个代码段中添加)。在这两个片段中,您的 YAML 中都有拼写错误,
pulbish
代替了
publish
subcribe
代替了
subscribe

如果您希望同一用户能够创建流并发布到它,请尝试以下操作:

users:
  - user: test
    password: testtest
    permissions:
      subscribe: ["_INBOX.>"]
      publish: ["$JS.API.STREAM.CREATE.test", "test"]
© www.soinside.com 2019 - 2024. All rights reserved.