security.manager - Enterprise Edition

Dieser Abschnitt bezieht sich ausschließlich auf die Verbindung von map.apps mit security.manager Enterprise Edition.

Durch eine Verbindung mit security.manager entstehen folgende Möglichkeiten:

  • Rollen für die Nutzung des map.apps Managers vergeben

  • Apps absichern

  • Werkzeuge absichern

  • Abgesicherte Dienste ohne erneute Anmeldung (Single Sign-On) nutzen

Verbindung zwischen map.apps und security.manager herstellen

Betrieb von map.apps und security.manager unter gleichem Host

Die folgenden Parameter müssen in der globalen Konfiguration ergänzt oder geändert werden.

security.mode=ONLY_AUTHN

# security.manager adminstration service location
security.administration.url=https://<yourserver>/administration

# Key Store Location.
# This is the path to the keystore (`.keystore` file) shared by security.manager and map.apps
security.keystore.location=C:/data/conterra/.keystore

Wenn im security.manager weitergehende Einstellungen zum Keystore verändert sind (z.B. Passwort), müssen diese ebenfalls in der map.apps Konfiguration ergänzt werden.

Betrieb von map.apps und security.manager auf unterschiedlichen Hosts

Wenn security.manager auf einem anderen Server installiert ist als map.apps, muss die keystore-Datei auf den map.apps Server kopiert werden.

Zusätzlich zu den im vorherigen Abschnitt beschriebenen Einstellungen muss zudem der folgende Parameter in der security.manager Konfiguration ergänzt oder geändert werden (wobei example.com der Name des Hosts ist, auf dem map.apps installiert ist).

security.allowed.hostnames=example.com

Für map.apps ist es zudem notwendig die Option cors.request.trustedServers zu konfigurieren.

# Kommaseparierte Liste von Servern:
cors.request.trustedServers=https://securitymanager.example.com:8443

Selbstregistrierung und Passwort-Wiederherstellungsoptionen verwenden

Um die Selbstregistrierungs- und/oder Passwort-Wiederherstellungsoptionen des security.manager zu nutzen, kann map.apps auf die Anmeldeseite des security.manager verwiesen werden (anstatt den integrierten Anmeldedialog zu verwenden).

Ändern Sie die folgende Eigenschaft:

security.login.service.url=https://yourserver/administration/account/login

Benutzung des map.apps Manager

Um in einem SSO-Szenario mit security.manager den map.apps Managers nutzen zu können, ist es erforderlich, eine map.apps Administrationsrolle zu vergeben. Dazu muss die Rolle maAdmin im security.manager angelegt werden und dem Zugang zugewiesen werden, mit welchem der map.apps Manager benutzt werden soll.

Geschützte Dienste verwenden

Dienste, die über security.manager geschützt sind, werden ähnlich wie nicht geschützte Dienste in einer App konfiguriert. Anstelle der Original-URL des Dienstes muss der vom security.manager bereitgestellte SSO-Endpunkt verwendet werden.

Nach der Authentifizierung wird das Domain-Cookie an jeder Anfrage ergänzt, die vom Browser gesendet wird (z.B. Aktualisierung der Karte). Der security.manager SSO-Endpunkt wird anschließend sämtliche Rechte anwenden, die in der Rechteverwaltung für den jeweiligen Zugang definiert sind (z.B. das Anzeigen bestimmter Layer eines Dienstes).

Nach einem Logout, wird das Domain-Cookie zerstört und der Zugriff auf die geschützten Dienste ist nicht länger möglich.

Dienste-Definition eines geschützten Dienstes
 ...
 {
   "id":"secured_countries",
   "type":"AGS_DYNAMIC",
   "url":"https://myserver:443/wss/service/myAGS/sso/MyData/MapServer",
   "layers":[{
     "id":"3",
     "title":"Countries"
   }]
 }
 ...

Rollenbasierte Bereitstellung von Bundles und Widgets

Nachfolgendes gilt nur für Apps, die im Dateisystem - also bei Verzicht auf den map.apps Manager - abgelegt sind.

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 eines Zugangs 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 die Person die Rolle myRole besitzt. Dieser tag kann an jeder beliebigen Stelle in der Datei verwendet werden. Beispielsweise wenn Sie verschiedene Komponenten aus der allowedBundles-Definition oder Werkzeuge aus der Werkzeugliste aus- bzw. einschließen möchten.

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",
       "result-ui",
       "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 globalen 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
 ...