Apples wundersame Welt der iOS-Extensions

Teil 1: Die Möglichkeiten der iOS Network Extension

01.03.2017
Von   
Mark Zimmermann leitet hauptberuflich das Center of Excellence (CoE mobile) zur mobilen Lösungsentwicklung bei der EnBW Energie Baden-Württemberg AG in Karlsruhe. Er weist mehrere Jahre Erfahrung in den Bereichen Mobile Sicherheit, Mobile Lösungserstellung, Digitalisierung und Wearables auf. Der Autor versteht es, seine Themen aus unterschiedlichsten Blickwinkeln für unternehmensspezifische Herausforderungen darzustellen. Neben seiner hauptberuflichen Tätigkeiten ist er Autor zahlreicher Artikel in Fachmagazinen.
Viele kennen Extensions als Erweiterung von Apps, damit diese mit Siri reden oder mit der Maps-App interagieren können beziehungsweise als Möglichkeit, alternative Tastaturen in iOS aufzunehmen. Diese Serie möchte Ihnen einen Einblick geben, welches Potential sich in den Extensions bei genauer Betrachtung versteckt.

Wer denkt, dass iOS ein geschlossenes System ist, hat sich nie richtig mit den Möglichkeiten der Extensions beschäftigt. Mit iOS 8 hat Apple erstmals das Konzept der Extensions eingeführt. Diese Einführung war revolutionär, denn bis dahin galt iOS als abgeschottetes System, das keine Freiheiten erlaubt. Im Vergleich zu Android können Entwickler zwar nicht wild darauf los entwickeln, aber trotzdem stehen alle Funktionen (und mehr) bei genauer Betrachtung zur Verfügung.

App Extensions bringen Flexibilität in iOS
App Extensions bringen Flexibilität in iOS
Foto: Apple

In dieser Serie möchte ich Ihnen einigen Extensions zeigen, von denen Sie zu einer sehr hohen Wahrscheinlichkeit entweder noch nie etwas gehört haben oder das Potential nicht erkennen konnten.

Netzwerk Extension

Der Zugriff auf Netzwerke, genauer genommen auf WLAN-Netzwerke, erfolgt durch konfigurierte Einstellungen. Diese Konfigurationen können (bei Unternehmen) durch MDM-Server erfolgen oder durch manuelle Einträge am Gerät selbst. Häufig werden dabei SSIDs und Kennwörter dem Gerät bekannt gemacht und ab dann greift der Zugriff, sobald das WLAN in Reichweite ist.

Dies setzt aber einiges voraus. Zum einen muss das Gerät einer Firma gehören, damit es per MDM automatisiert den Zugriff konfiguriert bekommt oder der Anwender muss Kenntnis über die Geheimnisse des WLANs erlangen (Kennwort), damit er dies auf seinem Gerät konfigurieren kann.

Auch der Zugriff über Zertifikate, gerade im Firmenumfeld, setzt voraus, dass diese über einen vertraulichen, verlässlichen und abgesicherten Weg auf dem jeweiligen Endgerät, am besten Personenscharf, installiert werden.

Wenn man sich dies durchliest, sind folgende Fälle und Szenarien damit nicht möglich:

  • - Zugriff auf ein WLAN ohne Bekanntgabe der Geheimnisse

  • - Zeitbeschränkter Zugriff (z.B. auf Event-WiFi währen des Event Zeitraums)

Viele Hersteller versprechen mit Captive Portals eine mögliche Lösung. Hierbei versucht ein Gerät eine ihm bekannte Webseite (im Falle von iOS captive.apple.com) zu erreichen, sobald ein WLAN-Kontakt besteht. Wird das Gerät bei dieser Anfrage umgeleitet, handelt es sich um ein WLAN mit Captive Portal. Hier wird eine Web-Maske zum Anmelden präsentiert, bei der sich der Anwender registriert, damit im Anschluss das Gerät Zugriff auf das Internet erhält. Dies wird meist bildschirmfüllend (z.B. iOS) oder in einem Webview-Fenster (z.B. MacOS) dargestellt. Diese Captive-Portal Lösungen können benutzerspezifische Anmeldungen mit Gültigkeitsdauer abbilden, sind aber umständlich für den Anwender zu bedienen.

Für iOS-User gibt es genau hier die Möglichkeit, dynamisch und flexibel Anwender für WLAN-Netzwerke zu berechtigen, egal welche Technologie oder welches Autorisierungsverfahren diese einsetzen. Dies geht soweit, dass die oben erwähnten Geheimnisse für ein WLAN nicht einmal notwendig sind und die Sicherheit trotzdem gewährleistet wird. Das Geheimnis: Eine App mit der Netzwerk-Extension: NEHotSpotHelper (https://developer.apple.com/reference/networkextension/nehotspothelper).

NEHotSpotHelper für Entwickler: Grundlagen

Damit diese Extension benutzt werden kann, muss der Entwickler die Berechtigung erst einmal online (https://developer.apple.com/contact/network-extension) beantragen. Wird dem Entwickler dies erlaubt, kann er das erworbene Entitlement in seinem App-Plist File bekannt machen:

<plist version="1.0">

<dict>

<key>get-task-allow</key>

<true/>

<key>application-identifier</key>

<string>XXXXXXX</string>

<key>com.apple.developer.team-identifier</key>

<string>XXXXXXX</string>

<key>com.apple.developer.networking.HotspotHelper</key>

</dict>

</plist>

Alle Apps mit NEHotSpotHelper müssen zusätzlich die Erlaubnis bekommen, im "Background-Mode" arbeiten zu dürfen.

Ist die Extension eingebaut, können Entwickler auf den Verbindungsaufbau einer jeden WLAN-Verbindung Einfluss nehmen. Vereinfacht ausgedrückt: Der Entwickler kann definieren, für welches WLAN sein Programmcode die Autorisierung übernehmen kann und das Betriebssystem lässt diesen Code dann schalten und walten. Dieser Umstand erlaubt es nun, das Geheimnis des WLANs im AppBundle zu verstecken und mit eigenen zusätzlichen Parametern (Zeitraum, Ort an dem dies funktionieren soll, eigenem User Login an der App) zu versehen.