emqx/emqx-auth-mongo

[Hooks] Failed to execute fun emqx_auth_mongo:check/3

Gengxin-Zhang opened this issue · 3 comments

i am trying to setup an emqx cluster by docker,
I've configured my EMQX docker container as follows:

EMQX_AUTH__MONGO__AUTH_QUERY__COLLECTION: 'devices'
EMQX_AUTH__MONGO__AUTH_QUERY__PASSWORD_FIELD: 'secret'
EMQX_AUTH__MONGO__AUTH_QUERY__PASSWORD_HASH: 'plain'
EMQX_AUTH__MONGO__AUTH_QUERY__SELECTOR: 'broker_username=%u'

when I use right username and password to connect emqx, i got this error:

(929bf93a4f9c@172.21.0.4)1> 2020-10-12 03:04:31.734 [error] <<"mqttx_19d22a83">>@172.21.0.1:54300 [Hooks] Failed to execute {fun emqx_auth_mongo:check/3,[#{authquery => {authquery,<<"devices">>,[<<"secret">>],plain,[{<<"broker_username">>,<<"%u">>}]},pool => emqx_auth_mongo,superquery => {superquery,<<"mqtt_user">>,<<"is_superuser">>,[{<<"username">>,<<"%u">>}]}}]}: {{badmap,undefined},[{maps,get,[<<"is_superuser">>,undefined,false],[{file,"maps.erl"},{line,187}]},{emqx_auth_mongo,is_superuser,3,[{file,"/emqx-rel/_checkouts/emqx_auth_mongo/src/emqx_auth_mongo.erl"},{line,91}]},{emqx_auth_mongo,check,3,[{file,"/emqx-rel/_checkouts/emqx_auth_mongo/src/emqx_auth_mongo.erl"},{line,64}]},{emqx_hooks,safe_execute,2,[{file,"/emqx-rel/_checkouts/emqx/src/emqx_hooks.erl"},{line,164}]},{emqx_hooks,do_run_fold,3,[{file,"/emqx-rel/_checkouts/emqx/src/emqx_hooks.erl"},{line,143}]},{emqx_access_control,authenticate,1,[{file,"/emqx-rel/_checkouts/emqx/src/emqx_access_control.erl"},{line,77}]},{emqx_channel,auth_connect,2,[{file,"/emqx-rel/_checkouts/emqx/src/emqx_channel.erl"},{line,1172}]},{emqx_misc,pipeline,3,[{file,"/emqx-rel/_checkouts/emqx/src/emqx_misc.erl"},{line,107}]}]}
(929bf93a4f9c@172.21.0.4)1> 2020-10-12 03:04:31.736 [warning] <<"mqttx_19d22a83">>@172.21.0.1:54300 [Channel] Client mqttx_19d22a83 (Username: 'test') login failed for not_authorized

Is this a bug or am i having a configuration error?
I also checked the other issues on that, but their solutions didnt work for me...

Thanks a lot!

wwhai commented

i am trying to setup an emqx cluster by docker,
I've configured my EMQX docker container as follows:

EMQX_AUTH__MONGO__AUTH_QUERY__COLLECTION: 'devices'
EMQX_AUTH__MONGO__AUTH_QUERY__PASSWORD_FIELD: 'secret'
EMQX_AUTH__MONGO__AUTH_QUERY__PASSWORD_HASH: 'plain'
EMQX_AUTH__MONGO__AUTH_QUERY__SELECTOR: 'broker_username=%u'

when I use right username and password to connect emqx, i got this error:

(929bf93a4f9c@172.21.0.4)1> 2020-10-12 03:04:31.734 [error] <<"mqttx_19d22a83">>@172.21.0.1:54300 [Hooks] Failed to execute {fun emqx_auth_mongo:check/3,[#{authquery => {authquery,<<"devices">>,[<<"secret">>],plain,[{<<"broker_username">>,<<"%u">>}]},pool => emqx_auth_mongo,superquery => {superquery,<<"mqtt_user">>,<<"is_superuser">>,[{<<"username">>,<<"%u">>}]}}]}: {{badmap,undefined},[{maps,get,[<<"is_superuser">>,undefined,false],[{file,"maps.erl"},{line,187}]},{emqx_auth_mongo,is_superuser,3,[{file,"/emqx-rel/_checkouts/emqx_auth_mongo/src/emqx_auth_mongo.erl"},{line,91}]},{emqx_auth_mongo,check,3,[{file,"/emqx-rel/_checkouts/emqx_auth_mongo/src/emqx_auth_mongo.erl"},{line,64}]},{emqx_hooks,safe_execute,2,[{file,"/emqx-rel/_checkouts/emqx/src/emqx_hooks.erl"},{line,164}]},{emqx_hooks,do_run_fold,3,[{file,"/emqx-rel/_checkouts/emqx/src/emqx_hooks.erl"},{line,143}]},{emqx_access_control,authenticate,1,[{file,"/emqx-rel/_checkouts/emqx/src/emqx_access_control.erl"},{line,77}]},{emqx_channel,auth_connect,2,[{file,"/emqx-rel/_checkouts/emqx/src/emqx_channel.erl"},{line,1172}]},{emqx_misc,pipeline,3,[{file,"/emqx-rel/_checkouts/emqx/src/emqx_misc.erl"},{line,107}]}]}
(929bf93a4f9c@172.21.0.4)1> 2020-10-12 03:04:31.736 [warning] <<"mqttx_19d22a83">>@172.21.0.1:54300 [Channel] Client mqttx_19d22a83 (Username: 'test') login failed for not_authorized

Is this a bug or am i having a configuration error?
I also checked the other issues on that, but their solutions didnt work for me...

Thanks a lot!

Did your resolved yet?

@Gengxin-Zhang I met too. Have you solved it?

It is a BUG actually. We will try to fix it in the later version.

In 4.2.3, you can disable the supuser query with:

EMQX_AUTH__MONGO__SUPER_QUERY__COLLECTION: ''