diff --git a/lib/Controller/SignalingController.php b/lib/Controller/SignalingController.php
index 2b5373ea..689356de 100644
--- a/lib/Controller/SignalingController.php
+++ b/lib/Controller/SignalingController.php
@@ -249,35 +249,6 @@ class SignalingController extends OCSController {
 		return $usersInRoom;
 	}
 
-	/**
-	 * Check if the current request is coming from an allowed backend.
-	 *
-	 * The backends are sending the custom header "Talk-Signaling-Random"
-	 * containing at least 32 bytes random data, and the header
-	 * "Talk-Signaling-Checksum", which is the SHA256-HMAC of the random data
-	 * and the body of the request, calculated with the shared secret from the
-	 * configuration.
-	 *
-	 * @param string $data
-	 * @return bool
-	 */
-	private function validateBackendRequest(string $data): bool {
-		if (!isset($_SERVER['HTTP_SPREED_SIGNALING_RANDOM'],
-			  $_SERVER['HTTP_SPREED_SIGNALING_CHECKSUM'])) {
-			return false;
-		}
-		$random = $_SERVER['HTTP_SPREED_SIGNALING_RANDOM'];
-		if (empty($random) || strlen($random) < 32) {
-			return false;
-		}
-		$checksum = $_SERVER['HTTP_SPREED_SIGNALING_CHECKSUM'];
-		if (empty($checksum)) {
-			return false;
-		}
-		$hash = hash_hmac('sha256', $random . $data, $this->config->getSignalingSecret());
-		return hash_equals($hash, strtolower($checksum));
-	}
-
 	/**
 	 * Return the body of the backend request. This can be overridden in
 	 * tests.
@@ -301,7 +272,7 @@ class SignalingController extends OCSController {
 	 */
 	public function backend(): DataResponse {
 		$json = $this->getInputStream();
-		if (!$this->validateBackendRequest($json)) {
+		if ($_SERVER['REMOTE_ADDR'] !== 'unix:' || $_SERVER['HTTP_HOST'] !== 'localhost') {
 			return new DataResponse([
 				'type' => 'error',
 				'error' => [
diff --git a/lib/Signaling/BackendNotifier.php b/lib/Signaling/BackendNotifier.php
index e28ee51f..30216048 100644
--- a/lib/Signaling/BackendNotifier.php
+++ b/lib/Signaling/BackendNotifier.php
@@ -90,31 +90,17 @@ class BackendNotifier {
 		}
 
 		// We can use any server of the available backends.
-		$signaling = $servers[random_int(0, count($servers) - 1)];
-		$signaling['server'] = rtrim($signaling['server'], '/');
-		$url = rtrim($signaling['server'], '/') . $url;
-		if (strpos($url, 'wss://') === 0) {
-			$url = 'https://' . substr($url, 6);
-		} else if (strpos($url, 'ws://') === 0) {
-			$url = 'http://' . substr($url, 5);
-		}
+		$url = 'http://localhost' . $url;
 		$body = json_encode($data);
 		$headers = [
 			'Content-Type' => 'application/json',
 		];
 
-		$random = $this->secureRandom->generate(64);
-		$hash = hash_hmac('sha256', $random . $body, $this->config->getSignalingSecret());
-		$headers['Spreed-Signaling-Random'] = $random;
-		$headers['Spreed-Signaling-Checksum'] = $hash;
-
 		$params = [
 			'headers' => $headers,
 			'body' => $body,
+			'curl' => [CURLOPT_UNIX_SOCKET_PATH => '/run/nextcloud-signaling-internal.sock'],
 		];
-		if (empty($signaling['verify'])) {
-			$params['verify'] = false;
-		}
 		$this->doRequest($url, $params);
 	}
 
