# Technische Hinweise zur Local IO Bridge in Salto Space
> Technische Hinweise und Konfigurationsdetails zur Local IO Bridge in Salto Space, für Systemadministratoren vorgesehen.


## Was ist die Local IO Bridge? {#what-is-the-local-io-bridge}

Die Local IO Bridge ist ein leichtgewichtiger Windows-Dienst, der von Salto entwickelt wurde. Er löst ein grundlegendes Verbindungsproblem: Ein Remote-Rechner greift als Client auf den Space Server zu. Der Server hat keine Möglichkeit direkt auf die USB-Geräte zuzugreifen, die mit dem Client verbunden sind.
Die Local IO Bridge läuft lokal auf dem Client-Rechner und fungiert als Relay das den Space Server mit USB-Geräten wie USB-{{< glossary_term "encoder" >}}NCodern{{< /glossary_term >}} und {{< glossary_term "ppd" >}}PPDs{{< /glossary_term >}} verbindet.

Eine Einführung in die Local IO Bridge und deren Rolle in der Space-Architektur erhalten Sie in den [Systemanforderungen](/space/user-guide/systems-admin/system-requirements).

Die Local IO Bridge stellt der Space Webapp eine lokale REST API bereit, über die die Kommunikation koordiniert wird.
Vom Browser aus wird eine Relay-Verbindung zwischen dem Space Server und dem USB-Gerät aufgebaut, über die der Space Server das Gerät direkt steuern kann.

![Local IO Bridge - Kommunikation](images/space-local-io-bridge-communication.drawio.svg "Local IO Bridge - Kommunikation")\n{.zoomable-image}

## Wann wird die IO Bridge benötigt? {#when-is-it-required}

Die Local IO Bridge wird nur auf Rechnern benötigt, an denen ein USB-Gerät physisch angeschlossen ist.

| **Szenario**                                                         |                       **Local IO Bridge erforderlich?**                      |
| -------------------------------------------------------------------- | :--------------------------------------------------------------------------: |
| Client-Rechner mit USB NCoder                                        |                                      Ja                                      |
| Client-Rechner mit USB-PPD                                           |                                      Ja                                      |
| Reine Browser-Maschine, ohne angeschlossene USB-Geräte               |                                     Nein                                     |
| Maschine mit NCoder über Ethernet-Verbindung (IP) | Nein - IP NCoder kommunizieren direkt über das Netzwerk mit dem Space Server |

## Installation {#installation}

| **Element**               | **Detail**                                                                                                                                                                                                                                                                       |
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Betriebssystem**        | Windows 10, Windows 11 oder Windows Server 2016 oder höher                                                                                                                                                                                                                       |
| **Software-Abhängigkeit** | .NET Framework 4.8.0 (wird automatisch installiert, falls nicht vorhanden)                                                                                                                                    |
| **Installer**             | Download über Space Webapp oder aus dem Ordner `..\dist`                                                                                                                                                                                                                        |
| **Installation**          | Klicken Sie doppelt auf das Installationsprogramm, um den Einrichtungsassistenten zu starten. Für unbeaufsichtigte Bereitstellungen wird auch eine stille Installation unterstützt: `setup_saltolocaliobridge.exe -quiet -InstallDir="C:\path"` |
| **Dienststart**           | Startet automatisch mit Windows und muss ausgeführt werden, bevor eine USB-Aktion durchgeführt wird                                                                                                                                                                              |

## Hinweise zu Netzwerk und Firewall {#network-and-firewall-considerations}

Die REST-API-Ports der Local IO Bridge sind an `localhost (127.0.0.1)` gebunden.
Sie sind von anderen Rechnern im Netzwerk aus nicht erreichbar

### Lokale Ports (Browser - Local IO Bridge) {#local-ports-browser-local-io-bridge}

Im Standardmodus wählt die Local IO Bridge bei jedem Start zufällig einen HTTP-Port und einen HTTPS-Port aus den folgenden zulässigen Bereichen aus:

| **Bereich** |
| :---------: |
| 50000—50009 |
| 50110—50119 |
| 50220—50229 |
| 50330—50339 |
| 50440—50449 |
| 50550—50559 |
| 50660—50669 |
| 50770—50779 |
| 50880—50889 |
| 50990—50999 |

Wenn eine Localhost-Firewall vorhanden ist, muss sie dem "Local IO Bridge"-Prozess ermöglichen, auf Ports innerhalb dieser Bereiche zu lauschen.

Im erweiterten Modus können feste Portnummern konfiguriert werden.
Weitere Details finden Sie unter [Konfiguration des erweiterten Modus](#advanced-mode-configuration).

### Ausgehende Verbindung (Local IO Bridge - Space Server) {#outbound-connection-local-io-bridge-space-server}

Die Local IO Bridge stellt eine ausgehende WebSocket-Verbindung zum Space Server über den TCP-Port 8102 (standardmäßig, konfigurierbar) her.
Wenn Space mit HTTPS konfiguriert ist, wird diese Verbindung mittels WSS mit dem vertrauenswürdigen, CA-signierten Zertifikat des Space Servers gesichert.

## Konfiguration im erweiterten Modus {#advanced-mode-configuration}

Standardmäßig funktioniert die Local IO Bridge sofort und ohne zusätzliche Konfiguration. Sie wählt zufällige Ports aus den zulässigen Bereichen aus und verwendet ihr eigenes, integriertes, selbst-signiertes Zertifikat für den lokalen HTTPS-Endpunkt.
In verwalteten Umgebungen möchte ein Administrator möglicherweise:

- Den HTTPS-Port auf einen bekannten Wert festlegen, um das Scannen von Ports durch den Browser zu vermeiden.
- Ein vertrauenswürdiges, CA-signiertes Zertifikat für den lokalen HTTPS-Endpunkt anstelle des integrierten selbst-signierten Zertifikats verwenden.

Beide werden konfiguriert, indem im Installationsordner der Local IO Bridge eine Datei namens `service.ini` erstellt wird.
Die Datei wird beim Start einmalig eingelesen. Der Dienst muss nach jeder Änderung neu gestartet werden.
Nur Benutzer mit Administratorrechten können diese Datei erstellen oder ändern.

{{% info-panel %}}
Wenn `service.ini` nicht existiert, behält die Local IO Bridge das Standardverhalten bei.
{{% /info-panel %}}

Port- und Zertifikatskonfiguration sind voneinander unabhängig. Sie können nur den Port, nur das Zertifikat oder beides konfigurieren.

### Port-Konfiguration {#port-configuration}

| **Schlüssel** | **Beschreibung**                                                                                                                                                                                                                                                                                   |
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `HttpsPort`   | Fester HTTPS-Port für die Local IO Bridge. Muss innerhalb der zulässigen Bereiche liegen, die im Abschnitt [Lokale Ports](#local-ports-browser-local-io-bridge) aufgeführt sind. Wenn diese Option gesetzt ist, wird der HTTP-Port nicht geöffnet. |

### Zertifikatskonfiguration {#certificate-configuration}

| **Schlüssel**                       |    **Werte**    | **Beschreibung**                                                                                                                                                                                  |
| ----------------------------------- | :-------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `HttpsCertManual`                   |    `0` / `1`    | `0` = das integrierte selbstsignierte Zertifikat verwenden (Standard).<br> `1` = ein Zertifikat aus dem Windows-Zertifikatsspeicher verwenden. |
| `HttpsCertStoreName`                |    Store name   | Zertifikatsspeicher, der in `LocalMachine` durchsucht werden soll.<br> Standard: `My`.                                                            |
| `HttpsCertIdentificationMethod`     | `0` / `1` / `2` | Methode zur Identifizierung des Zertifikats: `0` = Subject CN, `1` = Subject DN (Standard), `2` = Issuer.                                      |
| `HttpsCertIdentificationMatchValue` |      String     | Wert, der mit der ausgewählten Identifizierungsmethode abgeglichen werden soll.                                                                                                   |
| `HttpsCertSelectionStrategy`        |    `0` / `1`    | Wenn mehrere Zertifikate übereinstimmen: `0` = aktuellstes `NotBefore`-Datum (Standard), `1` = spätestes `NotAfter`-Datum.                     |

**Anforderungen an Zertifikat bei Verwendung des manuellen Modus (`HttpsCertManual=1`)**:

- Muss von einer Zertifizierungsstelle signiert sein, der der Client-Rechner vertraut.
- Darf nicht abgelaufen sein.
- Muss `IP Address=127.0.0.1` im Feld „Subject Alternative Name“ (SAN) enthalten, da die Local IO Bridge nur an localhost gebunden ist.

{{% info-panel %}}
Wenn `HttpsCertManual=1` eingestellt ist, ist die Local IO Bridge **nur über HTTPS** erreichbar. Der HTTP-Port wird nicht geöffnet.
{{% /info-panel %}}

- Beispiel:

```ini
[Https]
HttpsPort=50110
HttpsCertManual=1
HttpsCertStoreName=My
HttpsCertIdentificationMethod=0
HttpsCertIdentificationMatchValue=my-server.comtoso.com
HttpsCertSelectionStrategy=0
```

identifiziert das Zertifikat durch Abgleich des Subject CN mit
`my-server.comtoso.com` aus dem Speicher „My“, wobei bei mehreren Übereinstimmungen das Zertifikat mit dem aktuellsten „NotBefore“-Datum ausgewählt wird.

## Datenverarbeitung und Datenschutz {#data-handling-and-privacy}

Eine wichtige Eigenschaft der lokalen IO Bridge ist, dass sie niemals Zugriff auf die von ihr übermittelten Daten hat.
Die gesamte Kommunikation zwischen dem Space Server und dem USB-Gerät wird mit DTLS 1.2 Ende-zu-Ende verschlüsselt, bevor sie das Relay erreicht.
Die Local IO Bridge leitet ausschließlich verschlüsselte Bytes weiter.
Sie verfügt über keine Schlüssel zur Entschlüsselung des Inhalts und kann diesen in keiner Weise lesen, prüfen oder manipulieren.

Die Local IO Bridge ist als blindes Relais konzipiert.

![Datenverarbeitung und Datenschutz](images/space-data-handling-and-privacy.drawio.svg "Datenverarbeitung und Datenschutz")

Befehle, die zwischen dem Browser und der Local IO Bridge ausgetauscht werden, sind unkritisch (Port-Enumerierung, Relaissteuerung). Über diese Schnittstelle werden niemals Medien- oder Zugangsdaten übertragen

## Sicherheitsübersicht {#Sicherheitszusammenfassung}

| **Aspekt**           | **Detail**                                                                                                                                                                                                                                                                                                                                  |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Blindes Relais**   | Die Local IO Bridge kann Mediendaten weder lesen noch manipulieren. Diese werden zwischen dem Space Server und dem USB-Gerät Ende-zu-Ende-verschlüsselt übertragen (DTLS 1.2)                                                                                                            |
| **Lokale REST-API**  | Die einzigen Daten, die zwischen dem Browser und der Local IO Bridge übertragen werden, sind nicht sensible Steuerungsinformationen, wie Port-Enumerationen und Befehle zur Relais-Verwaltung. Auf dieser Schnittstelle sind niemals Medien- oder Zugangsdaten vorhanden.                                   |
| **HTTPS-Zertifikat** | Standardmäßig verwendet der lokale HTTPS-Endpunkt ein selbst-signiertes Zertifikat. Im erweiterten Modus kann stattdessen ein vertrauenswürdiges, CA-signiertes Zertifikat aus dem Windows-Zertifikatsspeicher verwendet werden. Dieses Zertifikat muss `IP Address=127.0.0.1` in seinem SAN-Feld enthalten |
| **WSS-Verbindung**   | Wenn Space mit HTTPS konfiguriert ist, verwendet die WebSocket-Verbindung zwischen der Local IO Bridge und dem Space Server das vertrauenswürdige, CA-signierte Zertifikat des Space Servers                                                                                                                                                |
| **Nur Localhost**    | Die Local IO Bridge bindet sich nur an `localhost (127.0.0.1)`. Seine lokalen REST-API-Ports sind von anderen Rechnern im Netzwerk nicht erreichbar.                                                                                                                                                        |

