通过emqx的管理界面配置ExHook的gRPC服务,配置两个gRPC服务,其中一个使用了 client.authenticate,两个使用了 message.publish,两个都启动之后,client.authenticate 的鉴权没有用,用MQTTX工具连接,报 “ Error: Connection refused: Not authorized”,只是启动有client.authenticate的服务就没有问题,请问是哪里配置有问题还是 漏了什么操作?
需要确定下每个 grpc 回调的实现是什么呢?例如:
- 实现了 client.authenticate 的服务,是如何返回认证结果的
- 实现了 message.publish 的两个服务是否意外挂载了 client.authenticate 钩子
只有两个gRPC服务, 一个挂载了 client.connect、client.connected、client.disconnected、client.authenticate、message.publish 一个只挂载了message.publish, 其中第一个的 client.authenticate 对 ClientId,以及 Password进行校验,通过 则 type = CONTINUE, bool_result = true,不通过则 type =STOP_AND_RETURN,bool_result=false
麻烦解答一下 谢谢
看着使用上是没问题的,请问使用的 EMQX 版本是多少?然后再试试开追踪日志,看是否能看到是谁拒绝了这个客户端的登陆
使用版本是5.3.1, 打log 其中 有client.authenticate的钩子服务中没有进去,只有pulblish 的grpc服务报:OnProviderUnloaded 没有实现;
emqx日志中有:
{“time”:1703755879326000,“level”:“info”,“msg”:“terminate”,“mfa”:“emqx_connection:terminate/2(673)”,“reason”:“{shutdown,not_authorized}”,“pid”:“<0.31765.23>”,“peername”:“218.17.254.133:27372”,“clientid”:“host”}
大佬 帮帮看看 谢谢