Просмотр исходного кода

fix(scram_auth): fix scram http auth and enable tests

Ilya Averyanov 1 год назад
Родитель
Сommit
5d0dacbbc1

+ 1 - 1
apps/emqx_auth_http/src/emqx_auth_http.app.src

@@ -1,7 +1,7 @@
 %% -*- mode: erlang -*-
 {application, emqx_auth_http, [
     {description, "EMQX External HTTP API Authentication and Authorization"},
-    {vsn, "0.4.1"},
+    {vsn, "0.4.2"},
     {registered, []},
     {mod, {emqx_auth_http_app, []}},
     {applications, [

+ 25 - 16
apps/emqx_auth_http/src/emqx_authn_scram_restapi.erl

@@ -100,22 +100,31 @@ retrieve(
         request_timeout := RequestTimeout
     } = State
 ) ->
-    Request = emqx_authn_http:generate_request(Credential#{username := Username}, State),
-    Response = emqx_resource:simple_sync_query(ResourceId, {Method, Request, RequestTimeout}),
-    ?TRACE_AUTHN_PROVIDER("scram_restapi_response", #{
-        request => emqx_authn_http:request_for_log(Credential, State),
-        response => emqx_authn_http:response_for_log(Response),
-        resource => ResourceId
-    }),
-    case Response of
-        {ok, 200, Headers, Body} ->
-            handle_response(Headers, Body);
-        {ok, _StatusCode, _Headers} ->
-            {error, bad_response};
-        {ok, _StatusCode, _Headers, _Body} ->
-            {error, bad_response};
-        {error, _Reason} = Error ->
-            Error
+    case emqx_authn_http:generate_request(Credential#{username := Username}, State) of
+        {ok, Request} ->
+            Response = emqx_resource:simple_sync_query(
+                ResourceId, {Method, Request, RequestTimeout}
+            ),
+            ?TRACE_AUTHN_PROVIDER("scram_restapi_response", #{
+                request => emqx_authn_http:request_for_log(Credential, State),
+                response => emqx_authn_http:response_for_log(Response),
+                resource => ResourceId
+            }),
+            case Response of
+                {ok, 200, Headers, Body} ->
+                    handle_response(Headers, Body);
+                {ok, _StatusCode, _Headers} ->
+                    {error, bad_response};
+                {ok, _StatusCode, _Headers, _Body} ->
+                    {error, bad_response};
+                {error, _Reason} = Error ->
+                    Error
+            end;
+        {error, Reason} ->
+            ?TRACE_AUTHN_PROVIDER("generate_request_failed", #{
+                reason => Reason
+            }),
+            {error, Reason}
     end.
 
 handle_response(Headers, Body) ->

+ 1 - 0
changes/ce/fix-14303.en.md

@@ -0,0 +1 @@
+Fix `scram:http` authentication.

+ 4 - 0
scripts/ct/run.sh

@@ -129,6 +129,10 @@ if [ -z "${PROFILE+x}" ]; then
         apps/emqx_rule_engine)
             export PROFILE='emqx-enterprise'
             ;;
+        # emqx_auth_http has scram:http support which is only available in emqx-enterprise
+        apps/emqx_auth_http)
+            export PROFILE='emqx-enterprise'
+            ;;
         apps/emqx_fdb*)
             export PROFILE='emqx-platform'
             ;;

+ 4 - 0
scripts/find-apps.sh

@@ -109,6 +109,10 @@ matrix() {
                 entries+=("$(format_app_entry "$app" 1 emqx "$runner")")
                 entries+=("$(format_app_entry "$app" 1 emqx-enterprise "$runner")")
                 ;;
+            apps/emqx_auth_http)
+                entries+=("$(format_app_entry "$app" 1 emqx "$runner")")
+                entries+=("$(format_app_entry "$app" 1 emqx-enterprise "$runner")")
+                ;;
             apps/*)
                 if [[ -f "${app}/BSL.txt" ]]; then
                     profile='emqx-enterprise'