Technologie

Maptology Architektur

Die Architektur von Maptology besteht aus drei Komponenten, einem Dienst, einer Anwendung für mobile Geräte und einer Anwendung für den Webbrowser.

Dienst

Der Dienst auf Basis der J2EE Plattform ist für die Verwaltung der Daten verantwortlich. Zur Nutzung durch die Anwendungen stellt der Dienst eine REST-Programmierschnittstelle (API) mit JSON/XML Serialisierung auf Basis von JAX-RS bereit. Für die REST Schnittstelle wurde eine OpenAPI-basierte Beschreibung der Datentypen und Funktionen entwickelt, mit deren Hilfe klientenseitiger Zugriffscode für verschiedene Programmiersprachen generiert werden kann. Die Datenhaltung erfolgt mit einer klassischen SQL-Datenbank, die über JPA angesprochen wird. Um die Leistung des Dienstes zu optimieren sind alle Datenzugriffspfade entsprechend indiziert. Darüber hinaus ist das Datenmodell über eine Änderungsverfolgung für HTTP-Caching optimiert.

Mobile Anwendung

Die mobile Anwendung ermöglicht die automatische Standortbestimmung und bietet dem Nutzer die Möglichkeit Standortfreigaben zu erstellen. Zur Standortbestimmung integriert die Anwendung die verschiedenen Datenquellen moderner mobiler Geräte mit dem Ziel den Energiebedarf möglichst gering zu halten. So nutzt die Anwendung beispielsweise Caching und WLAN-basierte Änderungserkennung um wiederholte GPS-Aktivierungen am selben Ort zu vermeiden. Nach einer erfolgreichen Standortbestimmung speichert die mobile Anwendung den Standort zunächst auf dem mobilen Gerät und synchronisiert anschließend die Daten mit dem Dienst. So wird sichergestellt, dass der Dienst selbst bei Verbindungsabbrüchen einen lückenlosen Standortverlauf erstellen kann. Im Gegensatz dazu erfolgt die Erstellung und Änderung der Standortfreigaben synchron. Dadurch ist sichergestellt, dass der Zustand, der dem Nutzer angezeigt wird, jederzeit dem Zustand des Dienstes entspricht.

Webanwendung

Die Webanwendung ermöglicht es Nutzern ohne Installation der mobilen Anwendung erhaltene Standortfreigaben zu betrachten. Darüber hinaus erlaubt sie die Erstellung eines Kontos in dem erhaltene Freigaben gespeichert werden können. Mehrere Installationen der mobilen Anwendung können mit dem Konto verbunden werden um Zugriff auf die zugehörigen Standortdaten zu erhalten. Die Webanwendung ist eine HTML Seite mit zugehörigem Javascript und CSS Stylesheet (single page application). Sie nutzt einen seitenbasierten Datenabruf (pagination) um selbst größere Datenmengen mit geringer Verzögerung darstellen zu können. Um eine Vielzahl unterschiedlicher Bildschirmgrößen unterstützen zu können, passen sich verschiedene Darstellungselemente der Anwendung an den verfügbaren Platz an (responsive design).

Sicherheit

Um ein hohes Maß an Sicherheit zu gewährleisten, erfolgt die Kommunikation zwischen den Anwendungen und dem Dienst über eine verschlüsselte Verbindung (HTTPS). Der Zugriff und die Änderung an Nutzerdaten erfordert eine erfolgreiche Authentifizierung und Authorisierung durch den Dienst. Zur Identifikation des Nutzers wird eine Kombination aus Kontoname und geheimen Passwort verwendet. Die Speicherung des Passworts erfolgt als “salted hash”, der durch mehrfaches Ausführen einer aktuellen Hashfunktion (PBKDF2) erzeugt wird. Der Zugriff und die Änderung von Daten durch Geräte erfordert einen geheimen symmetrischen Schlüssel. Der Schlüssel wird vom Dienst mit Hilfe eines Zufallszahlengenerators erzeugt und bei der Einrichtung der mobilen Anwendung übertragen. Der Schutz von Standortfreigaben erfolgt über den selben Mechanismus, nutzt aber einen kürzeren Schlüssel um die länge des Freigabelinks zu reduzieren.