Globale Konfiguration
Konfigurationsdateien
Folgende Konfigurationsdateien werden von map.apps verarbeitet:
-
WEB-INF/classes/default-application.properties
(NICHT EDITIEREN)
In dieser Datei befinden sich alle Konfigurationsoptionen von map.apps mit ihren Standardwerten. -
WEB-INF/classes/custom-application.properties
Wenn eine Änderung des Arbeitsverzeichnisses (data.directory.location
) nötig ist, muss die Änderung in dieser Datei erfolgen. Alle weiteren Anpassungen erfolgen in der nachfolgenden Datei. -
[data.directory.location]/application.properties
Nehmen Sie Änderungen an der Konfiguration durch das Bearbeiten dieser Datei vor.
Das Arbeitsverzeichnis (data.directory.location
) von map.apps ist in der Standardinstallation das Verzeichnis${user.home}/.mapapps
. Die Datei wird nicht automatisch erstellt, daher kann als Vorlage die DateiWEB-INF/classes/application.properties
dienen. Belassen Sie nur die Einstellungen in der Datei, die geändert wurden.
Das Format der Konfigurationsdateien muss dem Java Properties Dateiformat entsprechen.
# Die Dateien müssen UTF-8 kodiert sein, sonst können Umlaute zu Fehlern führen!
# Am sichersten ist die Kodierung von Umlauten in Unicode-Syntax z.B: ä = \u00E4 (vgl. http://0xcc.net/jsescape/)
# Kommentare erfolgen mit Raute
# die Syntax ist:
key = value
# Eine Value kann einen anderen Key referenzieren
key1 = http://${key.with.server}/test
Wenn die Einstellung Ist die Konfiguration |
Umgebungsvariablen
Sie können die Werte aller Konfigurationsparameter auch mit Umgebungsvariablen setzen.
Diese überschreiben immer die Werte, die Sie in den application.properties
setzen.
Das ist hilfreich, wenn map.apps zum Beispiel in einem Docker-Container betrieben wird.
Sie müssen die Namen der Konfigurationsparameter aus den application.properties
für die Verwendung als Umgebungsvariablen anpassen:
Ersetzen Sie alle Buchstaben des Namen durch Großbuchstaben sowie den Punkt .
durch den Unterstrich _
.
Beispiel: esri.api.arcgisPortalUrl
wird zu ESRI_API_ARCGISPORTALURL
.
Dieses Muster gilt für alle Konfigurationsparameter.
Konfigurationsparameter
In diesem Abschnitt werden die Parameter beschrieben, die am häufigsten in einer Standardinstallation verändert werden müssen.
Weitere Parameter sind in der Datei WEB-INF/classes/default-application.properties
in Kommentaren beschrieben.
data.directory.location
-
Arbeitsverzeichnis, in dem map.apps-Daten (z.B. eine HSQL-Datenbank) lokal gespeichert werden.
Für den Fall, dass der Tomcat-Server als Windows-Dienst betrieben wird, liegt das
.mapapps
Verzeichnis im Stammverzeichnis ($HOME) des Tomcat-Accounts, der den Dienst gestartet hat.Tomcat-AccountWenn kein Tomcat-Account angelegt wurde, wird der Tomcat-Server mit dem System-Account ausgeführt (nicht empfohlen). In diesem Fall wird das Verzeichnis unter folgendem Pfad angelegt:
C:/Windows/System32/config/systemprofile/.mapapps
Ein abweichendes map.apps Datenverzeichnis kann in der Datei
WEB-INF/classes/custom-application.properties
konfiguriert werden. Pfad-Trenner müssen entweder als/
oder\\
angegeben werden.Standardwert:
$\{user.home\}/.mapapps
configuration.watch.changes
-
Überwachung der Datei
${data.directory.location}/application.properties
.Bei Aktivierung können Konfigurationseinstellungen ohne Neustart der Web-Applikation geändert werden. Die Konfigurationsdatei muss beim Starten der Web-Applikation vorhanden sein, damit sie überwacht werden kann.
Standardwert:
true
client.config.defaultLocale
-
Spracheinstellung.
Die Spracheinstellung des Browsers wird erkannt und map.apps wird in der entsprechenden Sprache gestartet. map.apps unterstützt standardmäßig die Sprachen Deutsch und Englisch. Falls die Sprache im Browser weder Deutsch noch Englisch entspricht, wird der Wert dieses Parameters eingesetzt.
client.config.supportedLocales
-
Von map.apps unterstützte Sprachen.
Wird eine Spracherweiterung installiert, muss die neue Sprache ebenfalls hinterlegt werden. In GitHub steht eine Anleitung zum Hinzufügen weiterer Sprachen bereit.
Standardwert:
en,de
client.config.productname
-
Angezeigter Produktname.
Im Standardlayout wird oben links in der App-Übersicht, dem map.apps Manager und in den einzelnen Apps der Begriff map.apps angezeigt. Dieser Text kann mit diesem Parameter angepasst werden.
client.config.requestTimeout
-
Globaler Timeout-Wert für alle Anfragen, die
esri/ct.request/apprt_request/request
verwenden und keinen eigenen Timeout-Wert definieren.
Datenbank-Anbindung
map.apps verwendet standardmäßig eine HSQL-Datenbank, die in der Auslieferung enthalten ist.
Sie wird zu Testzwecken automatisch im Dateisystem erstellt und erfordert keine weitere Konfiguration.
Verwenden Sie die HSQL-Datenbank nicht in produktiven Umgebungen.
HSQLDB
Mehrere parallele Installationen von map.apps können nicht auf dieselbe HSQL-Datenbank verweisen.
Ändern Sie in diesem Fall für eine Instanz den Parameter Microsoft SQL Server
Setzen Sie bei Verwendung von Microsoft SQL Server bei der Anlage der Datenbank die Collation auf ein case-sensitives Format (zum Beispiel |
Ändern Sie die Datenbankverbindung, indem Sie die folgenden Eigenschaften bearbeiten:
db.use
-
Legt fest, ob eine direkte Datenbankverbindung (JDBC) oder eine container-managed Datenbankverbindung (JNDI) aufgebaut wird.
Verwenden Sie JNDI, wenn mehrere Webanwendungen im Container (z.B. Apache Tomcat) vorhanden sind, die auf dieselbe Datenbank zugreifen (siehe Apache Tomcat JNDI-Dokumentation ). Bei JDBC ist keine Container-Konfiguration notwendig.
Erlaubte Werte:
jndi
,jdbc
Standardwert:jdbc
db.type
-
Herstellerspezifischer Typ des verwendeten Datenbanksystems.
Dieser wird intern verwendet, um korrekte und optimierte Datenbankanfragen zu erzeugen.
Erlaubte Werte:
Datenbank Typ Beispiel-URL PostgreSQL
postgresql
jdbc:postgresql://localhost:5432/mapapps
Oracle Database
oracle
jdbc:oracle:thin:@myhost:1521:orcl
Microsoft SQL Server
sqlserver
jdbc:sqlserver://localhost:1433;databaseName=mapapps
HSQLDB
hsqldb
jdbc:hsqldb:file:$\{data.directory.location\}/storage/db;shutdown=true
Standardwert:
hsqldb
db.hibernate.schemaUpdate
-
Definiert, ob und wie das Datenbankschema automatisch angepasst wird.
Erlaubte Werte:
validate
,update
Standardwert:update
Direkte Datenbankverbindung (JDBC)
Um eine direkte Datenbankverbindung zu nutzen, konfigurieren Sie zusätzlich zu den drei o.g. Parametern die folgenden Werte:
db.jdbc.url
-
JDBC Datenbankverbindungs-URL.
Dieser Wert ist vom verwendeten Datenbanksystem abhängig (siehe oben stehende Tabelle).
Standardwert:
jdbc:hsqldb:file:$\{data.directory.location\}/storage/db;shutdown=true
db.jdbc.username
-
Login-Name des Datenbankzugangs.
Standardwert:
sa
db.jdbc.password
-
Passwort des Datenbankzugangs.
db.jdbc.maxActiveConnections
-
Maximale Anzahl aktiver Datenbankverbindungen im verwendeten Connection-Pool.
Standardwert:
50
db.jdbc.minActiveConnections
-
Minimale Anzahl aktiver Datenbankverbindungen im verwendeten Connection-Pool.
Standardwert:
1
Wenn eine JDBC-Verbindung verwendet wird, muss der für die Datenbank passende JDBC-Treiber in das Verzeichnis %MAPAPPS%/WEB-INF/lib kopiert werden.
|
Container-managed Datenbankverbindung (JNDI)
Um eine Datenbankverbindung über JNDI einzurichten, müssen zusätzlich zu den drei o.g. Parametern die folgenden Werte konfiguriert werden:
db.jndi.name
-
JNDI-Name, über den die Datenbank vom Container erfragt werden kann.
Standardwert:
java:comp/env/jdbc/mapapps
Darüber hinaus sind folgende Schritte in der Konfiguration des Tomcats zu befolgen:
-
Öffnen Sie die Datei
server.xml
, die sich im Verzeichnisconf
des Apache Tomcat befindet. -
Fügen Sie zum Element
<GlobalNamingResources>
das folgende Element hinzu:server.xml<Resource name="mapappsdb" auth="Container" type="javax.sql.DataSource" maxTotal="50" maxIdle="1" maxWaitMillis="10000" defaultAutoCommit="false" username="postgres" password="postgres" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/mapapps" />
Dieses Element ist beispielhaft auf die PostgreSQL-Datenbank angepasst. Wenn Sie eine andere Datenbank als PostgreSQL verwenden, passen Sie die Attribute
driverClassName
und URL an. In der oben stehenden Tabelle sind die Werte für die verschiedenen Datenbanken aufgeführt. -
Passen Sie die Attribute
username
undpassword
des Elements an die Gegebenheiten in Ihrem System an. -
Kopieren Sie die
JAR
-Datei des von Ihnen verwendeten JDBC-Datenbanktreibers in das Verzeichnislib
des Apache Tomcat. -
Öffnen Sie die Datei
context.xml
im VerzeichnisMETA-INF
der map.apps-Webanwendung und entfernen Sie die Kommentare um das Element<ResourceLink name="jdbc/mapapps" global="mapappsdb" type="javax.sql.DataSource"/>
, um es zu aktivieren. -
Speichern Sie alle veränderten Dateien und starten Sie Apache Tomcat neu.
Container-managed Datenbankverbindung (JNDI mit HikariCP)
Wir empfehlen die Verwendung des Datenbank Connection Pool HikariCP .
Die Konfiguration in der server.xml
ändert sich dann wie folgt:
<Resource name="mapappsdb" auth="Container"
factory="com.zaxxer.hikari.HikariJNDIFactory"
type="javax.sql.DataSource"
minimumIdle="1"
maximumPoolSize="50"
connectionTimeout="10000"
dataSourceClassName="org.postgresql.ds.PGSimpleDataSource"
dataSource.url="jdbc:postgresql://localhost:5432/mapapps"
dataSource.user="postgres"
dataSource.password="postgres" />
Zusätzlich müssen neben dem Datenbanktreiber folgende Bibliotheken im Tomcat lib
Verzeichnis ergänzt werden:
PostgreSQL Wartung
Um Bundles oder Report-Vorlagen zu speichern werden sog. Blobs verwendet. Je nach Anzahl und Größe der hochgeladenen Dateien kann es dadurch im Laufe der Zeit zu einem hohen Speicherplatzverbrauch kommen, da die Blobs in PostgreSQL nicht korrekt entfernt werden. PostgreSQL empfiehlt folgende Strategien zur Lösung des Problems:
-
Führen Sie regelmäßig das von PostgreSQL zur Verfügung gestellte
vacuumlo
Werkzeug aus. Das Werkzeug entfernt die nicht länger verwendeten Dateien. -
Alternativ können Datenbank-Trigger registriert werden, die beim Update oder Löschen von Zeilen die dazugehörigen Daten korrekt löschen. In der Datei
postgres-blob-cleanup-trigger.sql
im Verzeichnisresources/sql
der map.apps Auslieferung finden Sie die benötigten SQL-Statements zum Registrieren der Trigger.
Standard-URLs
Transportverschlüsselung
Verwenden Sie bei der Konfiguration externer URLs immer das HTTPS-Protokoll.
|
printtask.service.url
-
URL für den ArcGIS for Server Print Task.
Der Wert wird vom
printing
Bundle und vom Report-Dienst verwendet. Es muss sich um einen synchron konfigurierten Task handeln. Über den Parameterreporting.printtask.service.url
kann eine abweichende Konfiguration für den Report-Dienst festgelegt werden.
esri.api.arcgisPortalUrl
-
URL des verwendeten ArcGIS Enterprise-Portal.
Standardwert:
//www.arcgis.com
Beispiel:https://www.example.com/portal
geometry.service.url
-
URL des ArcGIS for Server Geometry Service.
locator.service.url
-
URL eines Esri Locator Services, der standardmäßig vom Bundle
locator-store
verwendet wird.
Sicherheitseinstellungen
jsregistry.browsing.enabled
-
Aktiviert die HTML basierte Suche in der JS-Registry
/resources/jsregistry/root
.Erlaubte Werte:
true
,false
Standardwert:true
security.ssl.trustAny
-
Aktiviert die Unterstützung für selbst signierte Zertifikate bei HTTPS-Verbindungen.
Aktivieren Sie diese Einstellung in Produktionsumgebungen nicht.
Erlaubte Werte:
true
,false
Standardwert: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 niemanden unter Vorlage einer entsprechenden URL auf eine bösartige Seite lenken können.
Wenn eine Applikation 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.
Standard:
localhost
Beispiel:*.example.org
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.Standard:
<leer>
Beispiel:https://example.com:8080,https://example.net
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.
Genauere Informationen finden Sie unter X-Content-Type-Options . Strict-Transport-Security:max-age=604800
-
Definiert, dass der Browser sich merken soll, dass der Host für 7 Tage (604800 Sekunden) nicht mehr per HTTP angefragt werden dar.
Wirkt nur, wenn map.apps via HTTPS verwendet wird. Genauere Informationen finden Sie unter Strict-Transport-Security .
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.
Genauere Informationen finden Sie unter Referrer-Policy .
Content-Security-Policy
-
Definiert Sicherheitsrestriktionen.
Genauere Informationen finden Sie unter Content-Security-Policy .
Beispiel:
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:; child-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:strict-origin-when-cross-origin
-
Definiert, dass der Browser einen Referrer Header nur zu den Seiten senden soll, die zum gleichen Ursprung, wie die Ausgangsseite gehören. Zu anderen Seiten, die per HTTPS geladen wurden wird ein verkürzter Referrer Header versendet.
Genauere Informationen finden Sie unter Referrer-Policy .
Content-Security-Policy
-
Definiert Sicherheitsrestriktionen.
Genauere Informationen finden Sie unter Content-Security-Policy .
Beispiel:
Referrer-Policy:strict-origin-when-cross-origin, Content-Security-Policy:default-src 'self'
Standard:
Referrer-Policy:strict-origin-when-cross-origin,Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-eval' https: http:; worker-src 'self' blob:; child-src 'self' blob:; connect-src 'self' https: http: wss: ws:; frame-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:
|
Proxy-Einstellungen
proxy.allowedServerUrls
-
Liste von URLs, auf die der Proxy weiterleiten darf.
map.apps stellt einen integrierten Proxy bereit. Dieser wird benötigt, weil direkter Zugang zu anderen Ressourcen aufgrund von Sicherheitsbeschränkungen innerhalb von JavaScript untersagt ist.
Die Konfiguration nutzt folgende Syntax:
<url-expression>[,<property-expression>];
Nach jedem Eintrag muss ein
;
folgen. Um mehrere Zeilen zu nutzen, ergänzen Sie am Ende jeder Zeile (außer der letzten) ein\
. Nach dem\
dürfen keine Leerzeichen folgen.Innerhalb von
url-expression
dürfen*
als Platzhalter verwendet werden:https://*.example.com/arcgis/**
-
Definiert, dass Zugriffe auf jede Subdomäne von
example.com
und dem Pfad/arcgis
erlaubt sind.
Ergänzen Sie am Ende des Ausdrucks ein**
, damit alle tieferen URLs erlaubt sind wenn Platzhalter verwendet werden. Der*
Platzhalter beinhaltet das/
nicht. Der**
Platzhalter beinhaltet das/
. https://example.com/arcgis
-
Wenn keine Platzhalter verwendet werden, wird angenommen, dass alle Weiterleitungen an URLs erlaubt sind, die mit dem Ausdruck beginnen.
Folgende property-expressions gibt es:
-
user:<username>
Der Login-Name für HTTP basic Authentifizierung -
pw:<password>
Das Password für HTTP basic Authentifizierung -
token:<token>
Ein lang lebendes ArcGIS Server Token -
bearer:<bearer-token>
|bearer:file:<filepath-containing-bearer-token>
Ein Bearer Token für die Übertragung im HTTP Authorization Header -
followRedirects:<true|false>
Definiert ob Weiterleitungen vom Proxy verfolgt werden (Standard istfalse
) -
trusted:<true|false>
Wenn eine URL als trusted markiert ist, bedeutet dies, dass Cookies und Authorization HTTP-Header über den Proxy weitergeleitet werden.
Konfigurieren Sie URLs immer so exakt wie möglich, um Sicherheitsrisiken zu vermeiden.
Beispiele:
-
Exakte URL:
http://sampleserver1.arcgisonline.com/arcgis/rest/services/**;
-
HTTP + HTTPS URL (Aber nur mit Standardports 80/443):
*://sampleserver1.arcgisonline.com/arcgis/rest/services/**;
-
HTTP + HTTPS URLs (Egal an welchem Port):
*://sampleserver1.arcgisonline.com:*/arcgis/rest/services/**;
-
Arcgis Server Token ergänzen:
http://www.example.com/arcgis/rest/services,token:xyz123;
-
Bearer Token ergänzen:
http://www.example.com/arcgis/rest/services,bearer:xyz123;
-
Login-Name und Passwort für http basic Authentication vordefinieren:
http://example.com/path/**,user:test,pw:testtest;
-
Erlauben, dass Cookies and Authorization-Header weitergeleitet werden:
http://example.com/path/**,trusted:true;
proxy.allowUnsafeServerUrls
-
Aktiviert unsichere Werte in dem Parameter
proxy.allowedServerUrls
.Folgende Konfigurationen werden als unsicher betrachtet:
-
localhost
Weiterleitungen. Dies würde die externe Verwendung vonlocalhost
ermöglichen. -
Konfigurationen, die nur das Protokoll beinhalten z.B:
http://
. Dies würde den Zugriff auf alle URLs über den Proxy erlauben.
Standardwert:
false
-
proxy.use.rules
-
Regeln für den Proxy-Zugriff abhängig von den angefragten Hostnamen.
Dies ermöglicht die Kontrolle darüber, welche Requests über eine bestimmte Proxy-Seite geleitet werden.
Beispiel:
proxy.use.rules=sample1.example.com,sample2.example.com|/proxyPage,sample3.example.com/service/
Bedeutung:
sample1.example.com
wird über die Standardproxyseite/proxy
geleitet,
sample2.example.com
wird über eine eigene Proxyseite/proxyPage
geleitet.
sample3.example.com/service/
wird über die Standardproxyseite/proxy
geleitet, andere Pfade vom gleichen Server jedoch nicht.
CORS-Einstellungen
Diese Einstellungen werden benötigt, um Cross Origin Requests zu ermöglichen.
map.apps geht davon aus, dass angefragte Webdienste CORS unterstützen. Falls Sie eine Proxy Rule konfiguriert haben, wird map.apps diese weiterhin verwenden. In allen anderen Fällen werden Anfragen mit der Annahme gemacht, dass CORS unterstützt wird.
cors.allowed.origins
-
Liste von Basis-URLs von Webseiten, die per CORS auf die angebotenen Serviceschnittstellen zugreifen dürfen.
*
kann als Platzhalter genutzt werden.Beispiele:
-
http://example.net,http://example.com
-
http*://*.example.net:*
Das Beispiel erlaubt den Zugriff von jeder Subdomäne vonexample.net
viahttp
andhttps
von jedem Port.
-
cors.request.trustedServers
-
Liste von URLs zu Backenddiensten, für die die Übergabe von sicherheitskritischen Informationen mittels CORS aktiviert wird.
Dies ist beispielsweise bei Cookies und Autorisierung-Header der Fall.
Beispiel:
https://example.com,https://example.net
Logging von Fehlern und weiteren Meldungen
Es stehen folgende Konfigurationsparameter zur Anpassung des Loggings zur Verfügung:
logging.logger.level
-
Dieser Parameter definiert den Detailgrad des Logs.
Erlaubte Werte:
TRACE
,DEBUG
,INFO
,WARN
,ERROR
Standardwert:INFO
logging.file.location
-
Ort, an dem die Log-Datei gespeichert wird.
Der Standardwert entspricht dem
logs
Verzeichnis des Tomcat. Um Log-Dateien im Arbeitsverzeichnis von map.apps zu erstellen, verwenden Sie den Wert${data.directory.location}/logs
.Standardwert:
${catalina.base}/logs
logging.file.prefix
-
Namen der Log-Dateien.
Um den Log-Dateien den URL-Kontextpfad der map.apps-Installation voranzustellen (zum Beispiel
mapapps
), verwenden Sie den Wert${webcontext.name}
.Standardwert:
ct-mapapps-webapp
Weitere Logging-Parameter sind in der Datei |