Erweiterte Einstellungen

Die folgenden Parameter können in der Konfiguration geändert werden.

jsregistry.browsing.enabled

Dieser Parameter aktiviert bzw. deaktiviert die HTML basierte Suche in der JS-Registry (/resources/jsregistry/root). Standardmäßig ist die Funktion aktiviert (true).

security.ssl.trustAny

Dieser Parameter aktiviert die Unterstützung für selbst signierte Zertifikate bei HTTPS-Verbindungen. Standardmäßig ist die Funktion deaktiviert (false).

security.login.redirect.trusted.hosts

Komma-separierte Liste von akzeptierten Hostnamen. Diese Liste definiert, welche Ziele zur Weiterleitung (Redirect) akzeptiert werden, wenn map.apps am Ende des Login-Prozesses den Browser zur nächsten Seite weiterleitet. Dies stellt sicher, dass Angreifer den Nutzer nicht unter Vorlage einer entsprechenden URL auf eine bösartige Seite lenken können.

Wenn eine Applikation den Nutzer zum Login auf map.apps umleitet und die Applikation unter einem anderen Hostnamen als map.apps aufgerufen wird, müssen hier die entsprechenden Hostnamen hinzugefügt werden. Dies ist z.B. häufig bei der Nutzung von Entwicklungsprojekten der Fall.

Sie können Wildcards verwenden, um z.B. Redirects auf alle Rechner einer Domäne zu erlauben.

Beispiel: *.gishost.org
Standard: localhost

security.embedding.allowed.origins

Komma-separierte Liste von Quellen, die map.apps in einem iFrame einbetten dürfen. Ist die einbettende Seite nicht erlaubt, wird den Responses der Anfrage der X-Frame-Options: DENY Header hinzugefügt.

Beispiel: security.embedding.allowed.origins=https://my‑example.com:8080,https://demos.de
Standard: <leer>

security.responseHeaders.common

Liste von HTTP Headern gemäß der Antwort-Header Syntax. Die Header werden an jede Antwort des map.apps Backend-Service geschrieben. Die Konfiguration sollte nur bei besonderen Sicherheitsanforderungen verändert werden.

Standardmäßig werden folgende Header ergänzt:

  • X-Content-Type-Options:nosniff: Definiert, dass der Browser Serverantworten nur auf Basis des Content-Type Headers interpretieren darf (MDN ).

  • Strict-Transport-Security:max-age=604800: Wirkt nur wenn map.apps via HTTPS verwendet wird. Definiert, dass der Browser sich merken soll, dass der Host für 7 Tage (604800 Sekunden) nicht mehr per HTTP angefragt werden darf (MDN ).

Beispiel: security.responseHeaders.common=X-Content-Type-Options:nosniff,Strict-Transport-Security:max-age=604800

Standard: X-Content-Type-Options:nosniff,Strict-Transport-Security:max-age=604800

security.responseHeaders.manager

Liste von HTTP Headern gemäß der Antwort-Header Syntax. Die Header werden beim Ausliefern der map.apps manager HTML Seiten, wie /manager oder /account/login/, ergänzt. Die Konfiguration sollte nur bei besonderen Sicherheitsanforderungen verändert werden.

Standardmäßig werden folgende Header ergänzt:

  • Referrer-Policy:same-origin : Definiert, dass der Browser einen Referrer Header nur zu den Seiten senden soll, die zum gleichen Ursprung, wie die Ausgangsseite gehören. (MDN ).

  • Content-Security-Policy: Definiert Sicherheitsrestriktionen (MDN ).

Beispiel: security.responseHeaders.manager=Referrer-Policy:same-origin, Content-Security-Policy:default-src 'self'

Standard: Referrer-Policy:same-origin, Content-Security-Policy:default-src 'self'; script-src 'self' https://demos.conterra.de https://api.github.com; connect-src 'self' https: http:; img-src 'self' data: https:; worker-src 'self' blob:; style-src 'self' 'unsafe-inline'; base-uri 'self'; form-action 'self'

security.responseHeaders.apps

Liste von HTTP Headern gemäß der Antwort-Header Syntax. Die Header werden beim Ausliefern der map.apps App HTML Seiten, wie /resources/apps/<app>/index.html, ergänzt. Die Konfiguration sollte nur bei besonderen Sicherheitsanforderungen verändert werden.

Standardmäßig werden folgende Header ergänzt:

  • Referrer-Policy:same-origin: Definiert, dass der Browser einen Referrer Header nur zu den Seiten senden soll, die zum gleichen Ursprung, wie die Ausgangsseite gehören. (MDN ).

  • Content-Security-Policy: Definiert Sicherheitsrestriktionen (MDN ).

Beispiel: security.responseHeaders.manager=Referrer-Policy:same-origin, Content-Security-Policy:default-src 'self'

Standard: Referrer-Policy:same-origin,Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-eval' https: http:; worker-src 'self' blob:; connect-src 'self' https: http:; img-src 'self' data: blob: https: http:; style-src 'self' 'unsafe-inline'; base-uri 'self'; form-action 'self'

Antwort-Header Syntax

Um eine Liste von Antwortheadern zu definieren, verwenden Sie folgende Syntax: <header-name>:<header-value>,<header-name>:<header-value>. Dabei gilt

  • <header-name> ist der Name eines HTTP Header. Dieser muss mit einem Großbuchstaben beginnen.

  • <header-value> ist der Wert eines HTTP Header.

Nutzerspezifische Bereitstellung von Bundles und Widgets

Nachfolgendes gilt nur für Apps, die im Dateisystem - also bei Verzicht auf den map.apps Manager - abgelegt sind. Außerdem ist eine Verknüpfung von map.apps mit security.manager oder map.apps Usermanagement erforderlich.

Führen Sie folgende Schritte durch, um Funktionalität in Form von Bundles und Widgets rollenbasiert freizugeben.

Konfigurieren Sie zunächst eine App mit dem map.apps Manager und exportieren diese. Die entpackte App wird danach im map.apps-Installationsverzeichnis unter folgendem Pfad abgelegt: {map.apps dir}\js\apps\YourApp. Der Unterordner apps/ muss ggf. vorher im Dateisystem erstellt werden und die Datei app.json in app.jsp umbenannt werden.

Es ist möglich, eine security.manager-Bibliothek zu verwenden, um spezielle Konfigurationen innerhalb einer App-Konfigurations-Datei ein- bzw. auszufiltern. Dieses Vorgehen verwendet die security.manager Tag Library und erfordert die Definition einer JSP-Datei (app.jsp) anstelle einer JSON-Datei (app.json). Bis auf eine spezielle Kopfzeile ist der Inhalt der Dateien jedoch identisch. Sobald die JSP-Datei vom Server angefragt wird, wird sie in eine JSON-Datei ohne zusätzliche Kopfzeile transformiert.

Innerhalb der JSP-Datei können spezielle Tags definiert werden, die bestimmte Inhalte anhand der Rolle des Nutzers ein- bzw. ausblenden.

Beispiel
 <s:isInRole role="myRole">"selection"</s:isInRole>

In diesem Beispiel wird die Zeichenkette selection nur dann innerhalb der Datei hinzugefügt, wenn der Nutzer die Rolle myRole besitzt. Dieser tag kann an jeder beliebigen Stelle in der Datei verwendet werden (zum Beispiel um verschiedene Komponenten aus der allowedBundles-Definition oder Werkzeuge aus der Werkzeugliste aus- bzw. einzuschließen).

Beispiel einer app.jsp Datei
 <%@ page contentType="application/json; charset=UTF-8" pageEncoding="UTF-8" language="java" session="false" isThreadSafe="true" isELIgnored="true"%><%@ taglib uri="https://www.conterra.de/security/tags" prefix="s"%>{
   "load": {
     "allowedBundles": [
       "system",
       "map",
       "themes",
       "templates",
       "templatelayout",
       "windowmanager",
       "coordinatetransformer",
       "resultcenter",
       "contentviewer",
       <s:isInRole role="sM_Administrator">"selection",</s:isInRole>
       "infoviewer",
       "toolset",
       "toolrules",
       "authentication"
     ]
   },
   "bundles": {
     ...
   }
 }

Um den Inhalt einer JSP-Datei in eine app.json Datei umzuwandeln, ist es notwendig die Datei innerhalb der Konfiguration zu referenzieren und die App in die Liste der protectedAnonymousResources aufzunehmen.

 ...
 security.application.jspMappings=.......,/js/apps/{YourApp}/app.json

 security.application.protectedAnonymousResources=/js/sample/,/js/sample/*.html,**/appauthorization/app.json,**/{YourApp}/app.json
 ...