5.2.0版本客户端认证功能异常

使用emqx客户端认证功能中的http服务方式认证,配置了ajar包中的接口地址,接口中实现了正确的认证逻辑.当ajar包启动时,也会连接mqtt服务器创建一个mqtt订阅客户端,这时ajar包有时候会提示
org.eclipse.paho.client.mqttv3.MqttSecurityException: 无权连接
此问题会导致ajar包无法正常连接mqtt,若出现此问题,再次重启ajar问题不一定复现(即认证成功,正确创建订阅客户端),有没有完美的解决方案,请告知!

您好。可以开启日志debug模式,收集无权连接时的相关日志并上传吗?谢谢。

日志.zip (4.1 KB)

此日志包含成功连接时日志和异常时日志,两次日志之间未作其他改动,只是重启jar包

您好。从日志看,认证使用的http server无法连接,导致认证失败,报了not authorized的错误。您可以再检查一下认证的配置,可以在http数据桥接里测试http server是否可以连接。谢谢。
resource not connected",reason => not_connected

2023-10-12T11:20:23.721000+08:00 [debug] msg: mqtt_packet_received, mfa: emqx_channel:handle_in/2, line: 336, peername: 192.168.2.107:59547, clientid: EmqClientPublish_4b2dijsf2ukb, packet: CONNECT(Q0, R0, D0, ClientId=EmqClientPublish_4b2dijsf2ukb, ProtoName=MQIsdp, ProtoVsn=3, CleanStart=true, KeepAlive=10, Username=undefined, Password=), tag: MQTT
2023-10-12T11:20:23.721000+08:00 [debug] msg: http_response, mfa: emqx_authn_http:authenticate/2, line: 214, peername: 192.168.2.107:59547, clientid: EmqClientPublish_4b2dijsf2ukb, provider: emqx_authn_http, request: #{base_url => <<“http://192.168.2.107:8099/mqtt/auth”>>,body => <<“{"username":"","password":"[password]"}”>>,headers => [{<<“accept”>>,<<“application/json”>>},{<<“cache-control”>>,<<“no-cache”>>},{<<“connection”>>,<<“keep-alive”>>},{<<“content-type”>>,<<“application/json”>>},{<<“keep-alive”>>,<<“timeout=3000, max=10000”>>}],method => post,path_query => “/mqtt/auth”}, resource: <<“emqx_authn_http:1”>>, response: #{error => {resource_error,#{msg => “resource not connected”,reason => not_connected}}}, tag: AUTHN
2023-10-12T11:20:23.721000+08:00 [debug] msg: authenticator_result, mfa: emqx_authentication:authenticate_with_provider/2, line: 694, peername: 192.168.2.107:59547, clientid: EmqClientPublish_4b2dijsf2ukb, authenticator: <<“password_based:http”>>, result: ignore, tag: AUTHN
2023-10-12T11:20:23.721000+08:00 [debug] msg: authentication_result, mfa: emqx_authentication:authenticate/2, line: 241, peername: 192.168.2.107:59547, clientid: EmqClientPublish_4b2dijsf2ukb, reason: chain_result, result: {ok,{error,not_authorized}}, tag: AUTHN

认证得server就是当前jar包的一部分…我已经是先启动jar之后的5秒之后再连接mqtt,这个时候mqtt认证我的server…

感觉是mqtt发现server 这个机制比较慢

您好。您可以修改HTTP Server认证的配置。将Connection Timeout和Request Timeout都设为1试试。