fix(authn/http): log meaningful error message if http header is missing

This commit is contained in:
zmstone 2024-05-14 10:22:07 +02:00
parent 7faf73e0f4
commit 93232d4253
2 changed files with 21 additions and 7 deletions

View File

@ -678,16 +678,28 @@ do_authenticate(
{stop, Result}
catch
Class:Reason:Stacktrace ->
?TRACE_AUTHN(warning, "authenticator_error", #{
?TRACE_AUTHN(
warning,
"authenticator_error",
maybe_add_stacktrace(
Class,
#{
exception => Class,
reason => Reason,
stacktrace => Stacktrace,
authenticator => ID
}),
},
Stacktrace
)
),
emqx_metrics_worker:inc(authn_metrics, MetricsID, nomatch),
do_authenticate(ChainName, More, Credential)
end.
maybe_add_stacktrace('throw', Data, _Stacktrace) ->
Data;
maybe_add_stacktrace(_, Data, Stacktrace) ->
Data#{stacktrace => Stacktrace}.
authenticate_with_provider(#authenticator{id = ID, provider = Provider, state = State}, Credential) ->
AuthnResult = Provider:authenticate(Credential, State),
?TRACE_AUTHN("authenticator_result", #{

View File

@ -189,7 +189,9 @@ qs([{K, V} | More], Acc) ->
serialize_body(<<"application/json">>, Body) ->
emqx_utils_json:encode(Body);
serialize_body(<<"application/x-www-form-urlencoded">>, Body) ->
qs(maps:to_list(Body)).
qs(maps:to_list(Body));
serialize_body(undefined, _) ->
throw("missing_content_type_header").
handle_response(Headers, Body) ->
ContentType = proplists:get_value(<<"content-type">>, Headers),