Embedded Office-Datenübernahmeplugin in modernen Browsern verfügbar machen

Embedded Office läuft als Microservice im enaio® Service Manager. Im Frontend nutzt Embedded Office die Editoren von ONLYOFFICE. Die Datenübernahme-Plugins im ONLYOFFICE sind wiederum Teil des Microservices. Schematischer Aufbau:

Ab Chrome 115 wird aus Sicherheitsgründen verhindert, dass Tabs/IFrames interagieren, welche von einer Domain über eine zweite Domain wiederum die erste einbinden wollen, was genau das EO-Szenario von oben ist.

Da das enaio-Gateway bisher keine WebSockets unterstützt (Stand enaio 11.0), kann unser Microservice leider nicht als Vermittler zu ONLYOFFICE genutzt werden, da für so dynamische Online-Anwendungen wie ONLYOFFICE/Embedded Office WebSockets dringend benötigt werden und Embedded Office hinter dem enaio-Gateway liegt. Die Alternative SSO ist im enaio-Gateway aktuell ebenfalls unrealistisch, da dieser derzeit auch http/2 nicht unterstützt.

Um dem zu entgehen, ist es möglich, ONLYOFFICE und das enaio-Gateway (und damit in Verlängerung den Service-Manager mit Embedded Office) hinter eine gemeinsame URL zu bringen. Dazu kann ein WebSocket- und NTLM-Fähiger Proxy wie z. B. Caddy dienen:

Im Client sieht dies dann URL- bzw. Domain-technisch so aus und funktioniert mit modernen Browser-/Chrome-Versionen:


Das Open-Source-Tool Caddy kann (hier beispielhaft inklusive des NTLM-Plugin) hier bezogen werden: https://caddyserver.com/api/download?os=windows&arch=amd64&p=github.com%2Fcaddyserver%2Fntlm-transport&idempotency=37127088544998

Caddy ist eine einfache EXE-Datei, welche direkt auf dem/einem der enaio-Server betrieben werden kann:

Screenshot

Konfiguriert wird dieser in diesem Fall mit einer einfachen Textdatei „Caddyfile“. Hier der beispielhafte Inhalt:

:80 {
    
  route /onlyoffice/* {
    uri strip_prefix /onlyoffice
    reverse_proxy http://10.10.10.20:8088 {
        header_up X-Forwarded-Host {http.request.host}/onlyoffice
        header_up X-Forwarded-Proto http
    }
  }
  reverse_proxy {
    transport http_ntlm {
    }
    to http://10.10.10.10:81
  }
}
  • Im Beispiel läuft ONLYOFFICE auf Port 8080 auf dem Server mit der IP 10.10.10.20.
  • Das enaio-Gateway ist am Server 10.10.10.10 auf Port 81 konfiguriert (damit Caddy wahlweise auch auf diesem Server laufen kann).
  • Caddy lauscht auf Port 80 und fasst dort beide Upstreams zusammen.

Selbstverständlich könnte Caddy auch die TLS-Terminierung oder viele andere Proxy-Aufgaben übernehmen.

Wenn der Caddy-Proxy als Windows-Service konfiguriert werden soll, hat es hier eine Anleitung auf Basis der in Windows mitgelieferten sc.exe: