Merge pull request #8987 from zmstone/0916-merge-v4320-to-v449
0916 merge v4320 to v449
This commit is contained in:
commit
9e1d70e0cb
|
@ -18,6 +18,7 @@
|
||||||
|
|
||||||
-include_lib("emqx/include/emqx.hrl").
|
-include_lib("emqx/include/emqx.hrl").
|
||||||
-include_lib("emqx/include/logger.hrl").
|
-include_lib("emqx/include/logger.hrl").
|
||||||
|
-include_lib("snabbkaffe/include/snabbkaffe.hrl").
|
||||||
|
|
||||||
-logger_header("[JWT]").
|
-logger_header("[JWT]").
|
||||||
|
|
||||||
|
@ -76,6 +77,7 @@ check_acl(_ClientInfo,
|
||||||
_Topic,
|
_Topic,
|
||||||
_NoMatchAction,
|
_NoMatchAction,
|
||||||
_AclEnv) ->
|
_AclEnv) ->
|
||||||
|
?tp(debug, no_jwt_claim, #{}),
|
||||||
ignore.
|
ignore.
|
||||||
|
|
||||||
is_expired(Exp) when is_binary(Exp) ->
|
is_expired(Exp) when is_binary(Exp) ->
|
||||||
|
|
|
@ -31,7 +31,8 @@ init_per_testcase(TestCase, Config) ->
|
||||||
emqx_ct_helpers:start_apps([emqx_auth_jwt], fun set_special_configs/1),
|
emqx_ct_helpers:start_apps([emqx_auth_jwt], fun set_special_configs/1),
|
||||||
Config.
|
Config.
|
||||||
|
|
||||||
end_per_testcase(_Case, _Config) ->
|
end_per_testcase(TestCase, Config) ->
|
||||||
|
try ?MODULE:TestCase('end', Config) catch _:_ -> ok end,
|
||||||
emqx_ct_helpers:stop_apps([emqx_auth_jwt]).
|
emqx_ct_helpers:stop_apps([emqx_auth_jwt]).
|
||||||
|
|
||||||
set_special_configs(emqx) ->
|
set_special_configs(emqx) ->
|
||||||
|
@ -377,6 +378,44 @@ t_check_jwt_acl_no_acl_claim(_Config) ->
|
||||||
|
|
||||||
ok = emqtt:disconnect(C).
|
ok = emqtt:disconnect(C).
|
||||||
|
|
||||||
|
t_check_jwt_acl_no_jwt_claims_helper(_ClientInfo, _LastAuthResult) ->
|
||||||
|
{stop, #{auth_result => success, anonymous => false}}.
|
||||||
|
t_check_jwt_acl_no_jwt_claims(init, _Config) ->
|
||||||
|
ok;
|
||||||
|
t_check_jwt_acl_no_jwt_claims('end', _Config) ->
|
||||||
|
ok = emqx_hooks:del(
|
||||||
|
'client.authenticate',
|
||||||
|
{?MODULE, t_check_jwt_acl_no_jwt_claims_helper, []}
|
||||||
|
).
|
||||||
|
t_check_jwt_acl_no_jwt_claims(_Config) ->
|
||||||
|
%% bypass the jwt authentication checking
|
||||||
|
ok = emqx_hooks:add(
|
||||||
|
'client.authenticate',
|
||||||
|
{?MODULE, t_check_jwt_acl_no_jwt_claims_helper, []},
|
||||||
|
_Priority = 99999
|
||||||
|
),
|
||||||
|
|
||||||
|
{ok, C} = emqtt:start_link(
|
||||||
|
[{clean_start, true},
|
||||||
|
{proto_ver, v5},
|
||||||
|
{client_id, <<"client1">>},
|
||||||
|
{username, <<"client1">>},
|
||||||
|
{password, <<"password">>}]),
|
||||||
|
{ok, _} = emqtt:connect(C),
|
||||||
|
|
||||||
|
ok = snabbkaffe:start_trace(),
|
||||||
|
|
||||||
|
?assertMatch(
|
||||||
|
{ok, #{}, [?RC_NOT_AUTHORIZED]},
|
||||||
|
emqtt:subscribe(C, <<"a/b">>, 0)),
|
||||||
|
|
||||||
|
{ok, _} = ?block_until(#{?snk_kind := no_jwt_claim}, 1000),
|
||||||
|
Trace = snabbkaffe:collect_trace(),
|
||||||
|
?assertEqual(1, length(?of_kind(no_jwt_claim, Trace))),
|
||||||
|
|
||||||
|
snabbkaffe:stop(),
|
||||||
|
ok = emqtt:disconnect(C).
|
||||||
|
|
||||||
t_check_jwt_acl_expire(init, _Config) ->
|
t_check_jwt_acl_expire(init, _Config) ->
|
||||||
application:set_env(emqx_auth_jwt, verify_claims, [{sub, <<"value">>}]).
|
application:set_env(emqx_auth_jwt, verify_claims, [{sub, <<"value">>}]).
|
||||||
t_check_jwt_acl_expire(_Config) ->
|
t_check_jwt_acl_expire(_Config) ->
|
||||||
|
|
|
@ -467,9 +467,9 @@ list_listeners(Node) when Node =:= node() ->
|
||||||
end, esockd:listeners()),
|
end, esockd:listeners()),
|
||||||
Http = lists:map(fun({Protocol, Opts}) ->
|
Http = lists:map(fun({Protocol, Opts}) ->
|
||||||
#{protocol => Protocol,
|
#{protocol => Protocol,
|
||||||
listen_on => proplists:get_value(port, Opts),
|
listen_on => format_http_bind(Opts),
|
||||||
acceptors => maps:get(num_acceptors,
|
acceptors => maps:get( num_acceptors
|
||||||
proplists:get_value(transport_options, Opts, #{}), 0),
|
, proplists:get_value(transport_options, Opts, #{}), 0),
|
||||||
max_conns => proplists:get_value(max_connections, Opts),
|
max_conns => proplists:get_value(max_connections, Opts),
|
||||||
current_conns => proplists:get_value(all_connections, Opts),
|
current_conns => proplists:get_value(all_connections, Opts),
|
||||||
shutdown_count => []}
|
shutdown_count => []}
|
||||||
|
@ -535,7 +535,7 @@ delete_banned(Who) ->
|
||||||
|
|
||||||
|
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
%% Telemtry API
|
%% Telemetry API
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
|
|
||||||
-ifndef(EMQX_ENTERPRISE).
|
-ifndef(EMQX_ENTERPRISE).
|
||||||
|
@ -577,7 +577,7 @@ item(route, {Topic, Node}) ->
|
||||||
#{topic => Topic, node => Node}.
|
#{topic => Topic, node => Node}.
|
||||||
|
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
%% Internel Functions.
|
%% Internal Functions.
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
|
|
||||||
rpc_call(Node, Fun, Args) ->
|
rpc_call(Node, Fun, Args) ->
|
||||||
|
@ -610,3 +610,10 @@ has_any_ok(Results) ->
|
||||||
true -> ok;
|
true -> ok;
|
||||||
false -> lists:last(Results)
|
false -> lists:last(Results)
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
format_http_bind(Opts) ->
|
||||||
|
Port = proplists:get_value(port, Opts),
|
||||||
|
case proplists:get_value(ip, Opts) of
|
||||||
|
undefined -> Port;
|
||||||
|
IP -> {IP, Port}
|
||||||
|
end.
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
|
|
||||||
-ifndef(EMQX_ENTERPRISE).
|
-ifndef(EMQX_ENTERPRISE).
|
||||||
|
|
||||||
-define(EMQX_RELEASE, {opensource, "4.4.9-alpha.3"}).
|
-define(EMQX_RELEASE, {opensource, "4.4.9"}).
|
||||||
|
|
||||||
-else.
|
-else.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue