PLANTA secure Neu ab S 39.5.22
Informationen
PLANTA Secure-Komponenten
Überblick
Informationen
- Um eine TCP-Verbindung in HTTP zu packen, wird das BOSH-Protokoll verwendet. Es hält sowohl Latenz als auch Mehraufwand gering, und das Grundprinzip eines Verbindungsmanagers ist genau was wir brauchen. Seine Entwicklung und weite Verbreitung ist sehr XMPP-zentrisch, dennoch ist es in der Lage, beliebige Nutzlasten zu befördern.
- Für eine detaillierte Beschreibung des Protokolls an sich, siehe http://www.xmpp.org/extensions/xep-0124.html. Die Einführung durch PLANTA beschränkt sich auf einen einzigen Stream, Protokoll Version 1.6, wodurch der Support für Legacy-Gegenstücke oder gar Abfrage-Clients weg fällt. Bestätigungen finden keine Anwendung, können aber eingeführt werden, sollte dies die Verlässlichkeit erhöhen. Bisher gibt es auch keine Neusendungen; wenn die Verbindung unterbrochen ist und HTTP-Anfragen fehlschlagen, wird die PLANTA-Sitzung beendet wie bei normalen TCP-Verbindungen.
Installationsanweisungen
Informationen
- Der Server-Adapter ist so zu konfigurieren, wie im entsprechenden Abschnitt weiter unten beschrieben, und muss in einem Server-Container bereitgestellt werden. Es wird eine direkte TCP-Verbindung zu einem bestehenden PLANTA-Server benötigt, und für einmalige Anmeldungen über Proxy zudem Authentifizierung, S 39.5.20 oder später mit einer kleinen Konfigurationsänderung.
- Nachdem die Anwendungskonfiguration so eingestellt wurde, wie im entsprechenden Abschnitt weiter unten beschrieben, kann der Client-Adapter ohne Weiteres verwendet werden. Ein vorhandener PLANTA-Client muss verfügbar sein.
- Im Unternehmen übliche Authentifizierungsmechanismen, wie z.B. Smartcards, können über entsprechende Plugins angesprochen werden. Bei Interesse wenden Sie sich bitte an Ihren zuständigen PLANTA-Consultant.
PLANTA-Server
Informationen
- Die Konfiguration des PLANTA-Servers muss nicht geändert werden, es sei denn eine einfache Anmeldung über Proxy-Authentifizierung ist gewünscht.
- In der Konfigurationsdatei
config/globals.conf
muss dem Authentifizierungsmethoden-Befehl der Zusatz 'proxy' beigefügt werden, um Proxy-Vorauthentifizierung zu genehmigen. Dies sorgt dafür, dass den eingehenden Verbindungen vertraut wird und die angegebene Benutzer-ID ohne weitere Prüfung angemeldet wird.
- Somit besteht dasselbe Risiko wie bei der OS-Benutzer-Anmeldung, mit dem Unterschied, dass die Partei, der blind vertraut wird, der Server-Adapter und nicht der Client ist. Die Verbindung zum Server-Adapter muss daher verschlüsselt werden und die Authentifizierung bei diesem Szenario muss sicher sein!
- Im Python-Modul ppms.proxy_auth gibt es eine Vordefinierte proxy_auth_resolve_username(proxy_user)-Methode, die vom Server aufgerufen wird. Es soll die PLANTA-Benutzer-ID zurückgeben, um sich im System anzumelden. Die Standardimplementierung gibt die Proxy-Benutzer-ID weiter.
Server-Adapter
Informationen
- Der Server-Adapter kommt als Java-Servlet, konfigurierbar in Bezug auf
- Deployment: über das Standard-WEB-INF/web.xml,
- Backend: über die selbst-dokumentierende WEB-INF/classes/config.properties
- Logging: über WEB-INF/classes/logback.xml.
Details
- Voraussetzung für sicheres Einrichten ist ein vorhandener Anwendungsserver, in dem das Servlet bereitgestellt werden kann. Die Umgebung muss das JAVA-Servlet-API Version 3.0 oder später unterstützen und Java- Version 1.8 oder später. Um Sicherheitsanforderungen zu erfüllen, muss diese Anwendungsserver-Instanz so konfiguriert werden, dass nur vertrauenswürdige Anfragen vom Reverse-Proxy erlaubt sind, d.h. HTTPS mit wechselseitiger Authentifizierung. Hier wird exemplarisch dargestellt, wie Let's Encrypt-Zertifikate im Tomcat-Server hinterlegt werden.
- Die TCP-Verbindung zwischen Server-Adapter und PLANTA-Server ist standardmäßig nicht verschlüsselt. SSL kann durch Ausführen folgender Schritte aktiviert werden:
- Ersetzen von keystore.jks und truststore.jks im Web-Archiv
- Ausführen von planta_ssl als Backend-Protokoll und
- Konfiguration des entsprechenden Passworts in config.properties
- Eine verschlüsselte PLANTA-Server-Instanz verpackt über STunnel ist erforderlich.
Reverse-Proxy
Informationen
- Das BOSH-Protokoll funktioniert nicht mit HTTP-Pipelining und ist im Client-Adapter deaktiviert. Somit darf das Reverse-Proxy kein HTTP-Pipelining zur Weiterleitung von Anfragen an den Server-Adapter verwenden.
- Fortbestehende Verbindungen ab HTTP 1.1 / zur Verringerung der Latenz und verbesserten Durchlauf sollte keepalive aktiviert sein, insbesondere bei Verbindungen mit SSL-Verschlüsselung.
Details
- Der Wert für bosh.session.max_wait in der config.properties des Servlets muss kleiner sein als das "request timeout" oder "read timeout" des Reverse Proxy; andernfalls kann es bei Long-Polling Requests zu Abbrüchen mit einem "504 gateway timeout error" kommen.
- Dies kann auch umgekehrt erreicht werden - wenn eine geringere Maximal-Request-Zeitüberschreitung gewünscht ist, sollte max_wait knapp unter diesem Wert liegen um Schwierigkeiten bei der Abrufanforderungen zu vermeiden.
- Wenn Proxy-Authentifizierung im Server-Adapter aktiviert ist, kann der Name eines HTTP-Kopfes, der die Benutzer-ID enthält, konfiguriert werden. Der Wert dieses Feldes wird unverändert an den PLANTA-Server weitergegeben. Die Weiterbearbeitung findet im Customizing statt. Siehe den Abschnitt "PLANTA-Server" für weitere Informationen.
Hier ist ein Auszug einer nginx-Beispielkonfiguration für eine funktionierende Reverse-Proxy-Einrichtung
http {
server {
location /planta {
# servlet location as defined during deployment
proxy_pass http://servletcontainer.example.com:8080/PlantaServerAdapter/;
# read timeout needs to be be set >= the value of
# bosh.session.max_wait in the servlet's config.properties, which
# defaults to 900
proxy_read_timeout 900s;
# persistent connections as per http keepalive improve both latency
# and throughput, esp. with SSL connections
proxy_http_version 1.1;
proxy_set_header Connection "";
# just push some dummy value as proxy-authenticated user
proxy_set_header iv-user nobody;
}
}
}
Client-Adapter
Informationen
- Der Client-Adapter ist eine .NET-Clientanwendung, die über die selbst-dokumentierende Anwendungskonfiguration PlantaClientAdapter.exe.config konfiguriert werden kann.
- Der Client-Adapter gibt alle Befehlszeilenargumente an den Client weiter. Ein potentieller Serverparameter wird entfernt, da der Client-Adapter seinen eigenen Host und Port bereitstellt und somit effektiv die Clientverbindung zu sich selbst umleitet.