我想设置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文件?
发布到流仅需要消息实际主题的权限,在本例中为
test
。似乎发生的情况是,您还尝试使用需要不同权限的该用户创建流(您在第二个代码段中添加)。在这两个片段中,您的 YAML 中都有拼写错误,pulbish
代替了 publish
,subcribe
代替了 subscribe
。
如果您希望同一用户能够创建流并发布到它,请尝试以下操作:
users:
- user: test
password: testtest
permissions:
subscribe: ["_INBOX.>"]
publish: ["$JS.API.STREAM.CREATE.test", "test"]