Reactive routes incorrect json serialization
### Describe the bug

Reactive routes resources returning invalid json when using `@RolesAllowed` annotation. Without the annotation its working fine.

Its working fine using Quarkus 2.3 version

### Expected behavior

API should return below JSON response

```javascript
[
	{
		"message": "Hello!"
	},
	{
		"message": "Hola!"
	},
	{
		"message": "Bonjour!"
	},
	{
		"message": "Ciao!"
	}
]
```

### Actual behavior

Instead its returning

```javascript
{"message":"Hello!"}{"message":"Hola!"}{"message":"Bonjour!"}{"message":"Ciao!"}
```

### How to Reproduce?

Reproducer: https://github.com/MM87037/reactive-routes

Steps:

1. Run `mvn clean verify` to see the failure

### Output of `uname -a` or `ver`

_No response_

### Output of `java -version`

OpenJDK Runtime Environment Temurin-17+35 (build 17+35)
OpenJDK 64-Bit Server VM Temurin-17+35 (build 17+35, mixed mode, sharing)

### GraalVM version (if different from Java)

_No response_

### Quarkus version or git rev

2.4.0

### Build tool (ie. output of `mvnw --version` or `gradlew --version`)

Apache Maven 3.8.1

### Additional information

_No response_
diff --git a/extensions/security/runtime/src/main/java/io/quarkus/security/runtime/interceptor/SecurityHandler.java b/extensions/security/runtime/src/main/java/io/quarkus/security/runtime/interceptor/SecurityHandler.java
index 209d37d1ab4..7d2474d0730 100644
--- a/extensions/security/runtime/src/main/java/io/quarkus/security/runtime/interceptor/SecurityHandler.java
+++ b/extensions/security/runtime/src/main/java/io/quarkus/security/runtime/interceptor/SecurityHandler.java
@@ -41,7 +41,9 @@ public Object handle(InvocationContext ic) throws Exception {
                     }).subscribeAsCompletionStage();
         } else if (Multi.class.isAssignableFrom(returnType)) {
             return constrainer.nonBlockingCheck(ic.getMethod(), ic.getParameters())
-                    .onItem().transformToMulti(new MultiContinuation(ic));
+                    // Do not use transformToMulti as we want to preserve the type of multi produced by the user method.
+                    // This is required for Reactive Routes to handle custom Multi serialization.
+                    .toMulti().plug(x -> new MultiContinuation(ic).apply(x));
         } else {
             constrainer.check(ic.getMethod(), ic.getParameters());
             return ic.proceed();
['extensions/security/runtime/src/main/java/io/quarkus/security/runtime/interceptor/SecurityHandler.java']