Zum Hauptinhalt springen

Custom Captive Portal: HTML- und CSS-Leitfaden

Dieser maßgebliche technische Referenzleitfaden beschreibt die Entwicklungsstandards, die CSS-Architektur und die Einschränkungen auf Netzwerkebene, die für das Design und die Codierung einer benutzerdefinierten Captive Portal Landingpage erforderlich sind. Er bietet Frontend-Entwicklern und Netzwerkarchitekten praktische Strategien zur Navigation in Apple CNA- und Android-Webview-Umgebungen, um pixelgenaue, konforme und hochperformante WiFi-Gästeerlebnisse zu gewährleisten.

Von Tom HackettVeröffentlicht Aktualisiert
📖 11 Min. Lesezeit3,170 Wörter2 ausgearbeitete Beispiele3 Übungsfragen8 Schlüsseldefinitionen

Video overview

Diesen Leitfaden anhören

Podcast-Transkript ansehen
Benutzerdefiniertes Captive Portal: HTML- und CSS-Leitfaden - Ein Purple Technical Briefing [INTRODUCTION] Willkommen zur Reihe der Purple Technical Briefings. Heute befassen wir uns intensiv mit einem Thema, das jede einzelne Gast-WiFi-Implementierung betrifft - dem Captive Portal. Konkret geht es darum, wie Sie sauberes, zuverlässiges HTML und CSS für eine benutzerdefinierte Captive Portal Landingpage schreiben. Wenn Sie sich jemals mit einem Hotel-WiFi verbunden haben und von einer fehlerhaften Splash-Page begrüßt wurden - fehlende Bilder, unformatierter Text, eine Anmeldeschaltfläche, die nicht auf Berührung reagiert - haben Sie erlebt, was passiert, wenn ein Entwickler ein Portal erstellt, ohne die Einschränkungen der Umgebung zu verstehen, in der es ausgeführt wird. Heute werden wir dafür sorgen, dass Ihnen das nicht passiert. Dieses Briefing richtet sich an Frontend-Entwickler, Creative Designer und Webentwickler, die entweder ein Captive Portal von Grund auf neu erstellen oder eine bestehende Vorlage anpassen. Wir behandeln die HTML-Struktur, die entscheidenden CSS-Regeln, die Einschränkungen des Apple CNA Mini-Browsers, über die selbst erfahrene Entwickler stolpern, und wie Plattformen wie der Portal-Builder von Purple diese Komplexität fast vollständig eliminieren können. Lassen Sie uns direkt einsteigen. [TECHNICAL DEEP-DIVE] Zunächst sollten wir klären, was ein Captive Portal auf Netzwerkebene eigentlich ist. Wenn sich ein Gerät mit einem WiFi-Netzwerk verbindet, das eine Authentifizierung erfordert, fängt das Netzwerk den HTTP-Datenverkehr ab und leitet den Benutzer auf eine Landingpage weiter. Dies ist das Captive Portal. Der Benutzer sieht eine Splash-Page, führt eine Aktion aus - z. B. die Eingabe einer E-Mail-Adresse, das Akzeptieren von Bedingungen oder die Anmeldung über soziale Netzwerke - und das Netzwerk gewährt daraufhin den vollen Internetzugang. Der entscheidende Punkt ist, wo diese Seite gerendert wird. Auf iOS-Geräten wird sie im Captive Network Assistant von Apple - dem CNA - geöffnet, einer abgespeckten WebKit-Webview. Es ist nicht Safari. Es gibt keine persistenten Cookies. Es kann keine externen Ressourcen laden. Es verfügt über eine eingeschränkte JavaScript-Unterstützung. Und es schließt sich in dem Moment, in dem der Benutzer zu einer anderen App wechselt. Auf macOS wird der CNA mit einer festen Auflösung von 900 mal 572 Pixeln gerendert. Auf Android-Geräten verwenden moderne Systeme Chrome Custom Tabs, die wesentlich leistungsfähiger sind. Windows 10 öffnet den Standardbrowser des Benutzers. Samsung-Geräte verwenden Samsung Internet. Diese Plattformfragmentierung ist die mit Abstand größte Fehlerquelle bei Captive Portals in der Praxis. Entwickler testen auf ihrem Android-Telefon, alles sieht fantastisch aus, und dann erhalten die iPhone-nutzenden Gäste des Hotels einen weißen Bildschirm mit unformatiertem Text. Sprechen wir also darüber, wie man defensiv programmiert. Die goldene Regel für Captive Portal HTML und CSS lautet: Behandeln Sie die Seite so, als ob keine Internetverbindung besteht. Denn während der Authentifizierungsphase ist dies tatsächlich der Fall. Das Netzwerk ist gefangen (captive). Jede Ressource, die Ihre Seite von einer externen URL zu laden versucht - eine Google-Schriftart, ein auf einem CDN gehostetes Stylesheet, eine JavaScript-Bibliothek, ein Logo-Bild - wird lautlos fehlschlagen oder eine Ladeschleife verursachen, die sich nie auflöst. Beginnen Sie mit der HTML-Struktur. Ihr Dokument sollte eine saubere HTML5-Seite sein. Im Head-Bereich benötigen Sie ein Viewport-Meta-Tag, dessen Inhalt auf „width=device-width“ und „initial-scale=1“ eingestellt ist. Dies ist für das mobile Rendering unverzichtbar. Ohne dieses Tag wird iOS die Seite mit einer Breite von 980 Pixeln rendern und herunterskalieren, wodurch alles mikroskopisch klein dargestellt wird. Ihr CSS muss inline eingebunden sein - entweder in einem Style-Block innerhalb des Head-Elements oder als Inline-Style-Attribute direkt an den einzelnen Elementen. Verwenden Sie kein externes Stylesheet, das über ein Link-Tag verknüpft ist. Dieses Stylesheet liegt auf Ihrem Server, den das Captive Portal während der Authentifizierung nicht erreichen kann. Die Seite würde völlig unformatiert gerendert. Verwenden Sie bei den Schriftarten einen System-Schriftstapel. Zum Beispiel: font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif. Dies weist den Browser an, die jeweils verfügbare System-Schriftart zu nutzen. Verwenden Sie keine Google Fonts. Der Import-Aufruf wird fehlschlagen und Ihre Fallback-Schriftart wird Times New Roman sein, was sicherlich nicht dem Markenauftritt entspricht, für den Ihr Kunde bezahlt. Für Bilder - Ihr Logo, Hintergrundgrafiken, dekorative Elemente - haben Sie zwei Optionen. Entweder Sie stellen sie über denselben Captive Portal Server bereit, was bedeutet, dass sie sich im selben lokalen Netzwerk befinden und vor Abschluss der Authentifizierung zugänglich sind. Oder, noch besser, Sie kodieren sie als Base64-Daten-URIs direkt in Ihrem HTML oder CSS. Dies eliminiert externe Abhängigkeiten vollständig. Sprechen wir nun über das Seitenlayout. Da über neunzig Prozent der Logins über ein Captive Portal auf Mobilgeräten stattfinden, sollte Ihr Design Mobile-First sein. Das bedeutet ein einspaltiges Layout mit einer maximalen Breite von etwa 480 Pixeln, zentriert auf der Seite. Verwenden Sie Flexbox auf dem Body-Element - display: flex, flex-direction: column, align-items: center, justify-content: center, min-height: 100vh. Dadurch wird Ihre Inhaltskarte auf jeder Bildschirmgröße vertikal und horizontal zentriert. Ihr primärer Call-to-Action-Button muss touch-freundlich sein. Die Apple Human Interface Guidelines schreiben ein minimales Tippziel von 44 mal 44 Pixeln vor. In der Praxis empfiehlt sich für einen primären CTA eine Höhe von etwa 48 Pixeln, die volle Breite innerhalb des Containers und ein abgerundeter Eckenradius von etwa 8 bis 12 Pixeln. Setzen Sie bei Formularfeldern - E-Mail-Eingabe, Namenseingabe - die Schriftgröße auf mindestens 16 Pixel. Dies ist entscheidend. iOS Safari und die CNA zoomen automatisch in jedes Eingabefeld hinein, dessen Schriftgröße unter 16 Pixeln liegt, was Ihr sorgfältig gestaltetes Layout zunichte macht. Eine Schriftgröße von 16 Pixeln oder mehr verhindert dieses Zoom-Verhalten. Der Bereich für rechtliche Einwilligungen verdient besondere Aufmerksamkeit. Wenn Sie im Rahmen der GDPR personenbezogene Daten erheben - und sei es nur eine E-Mail-Adresse - benötigen Sie eine ausdrückliche, informierte Einwilligung. Dies bedeutet ein Kontrollkästchen, das standardmäßig nicht angekreuzt ist, mit einer sichtbaren Beschriftung, die klar angibt, worin der Nutzer einwilligt. Aktivieren Sie das Kontrollkästchen nicht im Voraus. Das Kontrollkästchen für die Einwilligung muss ohne Scrollen deutlich sichtbar sein. Nun zu einem entscheidenden Implementierungsdetail speziell für iOS CNA. Wenn der Benutzer die Authentifizierung abschließt, überwacht die CNA, ob die Captive-Domain erreichbar geworden ist. Diese Überprüfung wird durch eine vollständige Seitennavigation ausgelöst, nicht durch JavaScript-AJAX-Aufrufe. Das bedeutet: Wenn Sie eine Single-Page-App entwickeln, die das Formular über fetch oder XMLHttpRequest übermittelt und das DOM ohne vollständige Weiterleitung aktualisiert, wird die CNA niemals erkennen, dass die Authentifizierung abgeschlossen ist. Sie müssen nach der Authentifizierung zu einer neuen URL weiterleiten - eine vollständige HTTP-Weiterleitung, keine JavaScript-DOM-Manipulation. Dies ist einer der häufigsten Fehler bei der Entwicklung von Captive Portalen. Halten Sie JavaScript so minimal wie möglich. Die CNA bietet nur eingeschränkte JS-Unterstützung und keinen Zugriff auf localStorage oder sessionStorage. Cookies werden gelöscht, sobald die CNA geschlossen wird. Jedes Statusmanagement, das auf diesen Browser-APIs basiert, wird fehlschlagen. Reines Vanilla JavaScript für Event-Listener ist völlig in Ordnung. jQuery ist eine 30 Kilobyte große externe Abhängigkeit, deren Laden fehlschlagen wird. [IMPLEMENTATION RECOMMENDATIONS AND PITFALLS] Hier ist die praktische Checkliste für die Implementierung. Erstens: Immer das Viewport-Meta-Tag verwenden. Zweitens: Sämtliches CSS inline einbinden, keine externen Stylesheets. Drittens: Alle Bilder entweder vom Captive Portal Server bereitstellen oder Base64-codieren. Viertens: System-Schriftarten nutzen, keine Web-Fonts. Fünftens: Mindestens 16 Pixel Schriftgröße für alle Eingabefelder. Sechstens: Touch-freundliche Klickflächen von mindestens 44 mal 44 Pixeln. Siebtens: Einspaltiges Layout mit einer maximalen Breite von 480 Pixeln. Achtens: Vollständige Weiterleitung nach der Authentifizierung, kein JavaScript-Statusupdate. Neuntens: DSGVO-konformes Kontrollkästchen für die Einwilligung, standardmäßig nicht ausgewählt. Zehntens: Auf einem echten iOS-Gerät in einem tatsächlichen Captive-Netzwerk testen, nicht in einer Browser-Vorschau. Die Fallstricke, die ich in der Praxis am häufigsten sehe. Erstens: Google Fonts - entfernen Sie den Import, er wird fehlschlagen. Zweitens: Externe JavaScript-Bibliotheken - Bootstrap, jQuery oder jedes über CDN gehostete Skript werden fehlschlagen. Drittens: CSS-Variablen, die in einem externen Stylesheet deklariert sind - sie müssen sich in Ihrem Inline-Style-Block befinden. Viertens: Hintergrundbilder, die über eine URL referenziert werden - codieren Sie diese in Base64. Fünftens: AJAX-Formularübermittlung ohne Weiterleitung nach der Authentifizierung - die CNA wird den Abschluss der Authentifizierung nicht erkennen. Nun zu der ehrlichen Frage: Selbst entwickeln oder kaufen? Die Eigenentwicklung eines maßgeschneiderten Captive Portals bedeutet, dass Sie auch für die Backend-Infrastruktur verantwortlich sind - den RADIUS-Server, die Datenbank, das SSL-Zertifikat, die DNS-Konfiguration, die Netzwerkintegration mit Ihren Access Points und das kontinuierliche Einspielen von Sicherheits-Patches. Dies ist ein erheblicher technischer Aufwand. Der Portal-Builder von Purple bietet Ihnen eine Drag-and-Drop-Oberfläche mit einem benutzerdefinierten HTML- und CSS-Editor für Entwickler, die eine pixelgenaue Kontrolle benötigen. Gleichzeitig übernimmt er die gesamte Backend-Infrastruktur - die Authentifizierung, die Datenerfassung, die Analysen, die Tools zur Einhaltung der GDPR und die Netzwerkintegrationen mit über 200 Access-Point-Herstellern. Sie erhalten die volle kreative Kontrolle ohne den Aufwand für die Infrastruktur. [RAPID-FIRE Q AND A]Kann ich CSS Grid in einem Captive Portal verwenden? Ja, aber testen Sie dies speziell auf dem iOS CNA. Flexbox bietet eine breitere Unterstützung in älteren WebKit-Versionen. Kann ich SVG-Logos verwenden? Ja, Inline-SVGs werden vollständig unterstützt und sind für Logos gegenüber Base64-codierten PNGs vorzuziehen, da sie auf Retina-Displays perfekt skalieren. Unterstützt das macOS CNA dieselben Einschränkungen wie das iOS CNA? Im Großen und Ganzen ja, mit einem Unterschied: Das macOS CNA wird in einem festen Fenster von 900 mal 572 Pixeln gerendert. Kann ich ein CSS-Framework wie Tailwind verwenden? Nur wenn Sie eine bereinigte, in sich geschlossene CSS-Datei erstellen und diese inline in Ihren Style-Block einfügen. Wie sieht es mit HTTPS aus? Ihr Captive Portal muss über HTTP bereitgestellt werden, damit die ursprüngliche Weiterleitung funktioniert - HTTPS-Verbindungen können vom Captive-Netzwerk nicht abgefangen werden. [ZUSAMMENFASSUNG UND NÄCHSTE SCHRITTE] Zusammenfassend lässt sich sagen: Ein benutzerdefiniertes Captive Portal ist eine eingeschränkte Webumgebung, keine Standard-Browserumgebung. Das Apple CNA und Android-Webviews legen strenge Einschränkungen für externe Ressourcen, Cookies, JavaScript und den Sitzungsstatus fest. Die Lösung besteht darin, in sich geschlossene HTML-Seiten mit Inline-CSS, System-Schriftarten, Base64-codierten Bildern und ganzseitigen Weiterleitungen bei der Authentifizierung zu erstellen. Für Standortbetreiber und IT-Teams, die ihre Optionen prüfen: Wenn Ihre Anforderung ein vollständig gebrandetes, maßgeschneidertes Portal mit individuellem HTML und CSS ist, besteht die Wahl darin, entweder den gesamten Stack selbst zu erstellen und zu warten - was einen erheblichen Entwicklungsaufwand bedeutet - oder eine Plattform wie Purple zu nutzen, die die Bearbeitungsfunktion für benutzerdefiniertes HTML und CSS auf einer produktionsreifen Backend-Infrastruktur bietet. Die nächsten Schritte: Lesen Sie die Dokumentation des Portal-Editors von Purple, überprüfen Sie Ihr vorhandenes Portal anhand der Mobile-First-Checkliste, die wir heute besprochen haben, und wenn Sie ganz von vorn beginnen, nutzen Sie die von uns skizzierte HTML-Vorlagenstruktur als Ihre Ausgangsbasis. Vielen Dank fürs Zuhören und bis zum nächsten Briefing.

Teil unserer Kernserie: Captive Portal Leitfaden →

Custom Captive Portal: HTML- und CSS-Leitfaden

Executive Summary

Für Enterprise-Standorte - von Luxushotels Hospitality und Einzelhandelsketten Retail bis hin zu Verkehrsknotenpunkten Transport und modernen medizinischen Campus-Arealen Healthcare - ist die WiFi Gäste-Anmeldeseite das digitale Eingangstor. Mehr als 90 % der Gäste-WiFi Logins erfolgen jedoch auf mobilen Geräten, auf denen die Darstellung nicht durch Standard-Browser wie Safari oder Chrome gesteuert wird, sondern durch stark eingeschränkte Captive Network Assistant (CNA) Webviews [1]. Diese "Mini-Browser" erzwingen strenge Sandbox-Einschränkungen: Sie blockieren externe CDNs, deaktivieren persistente Cookies, ignorieren externe Web-Fonts und schränken die JavaScript-Ausführung drastisch ein, um Sicherheitsrisiken zu minimieren und Session-Hijacking zu verhindern [2].

Wenn ein Entwickler eine Anmeldeseite mit traditionellen Webstandards entwirft, führen diese Einschränkungen zu fehlerhaften Layouts, fehlenden Marken-Assets und nicht funktionierenden Login-Buttons, was sich direkt auf die Kundenzufriedenheit und das digitale Engagement auswirkt. Dieser Leitfaden bietet Lösungen für diese Herausforderungen und stellt defensive Coding-Praktiken vor - wie Inline-CSS, Base64-Asset-Codierung, System-Font-Stacks und explizite, navigationsgesteuerte Authentifizierungs-Handshakes - um ein nahtloses, plattformübergreifendes Rendering zu gewährleisten. Darüber hinaus untersuchen wir, wie Entwickler durch die Nutzung einer Managed Solution wie dem Portal Builder von Purple die vollständige kreative Kontrolle über HTML/CSS behalten, während sie die RADIUS Authentifizierung, die Skalierung der Datenbanken, die GDPR/PCI-Compliance und Multi-Vendor AP-Integrationen auslagern [3].

Technischer Deep-Dive

Um ein stabiles, maßgeschneidertes Captive Portal zu erstellen, müssen Entwickler die Interzeption auf Netzwerkebene und die Browser-Virtualisierung verstehen, die auftreten, wenn sich ein Gast mit einer offenen SSID verbindet.

Der Lebenszyklus des Captive Portals

Wenn sich ein Client-Gerät mit einer Captive SSID verbindet, wird die folgende Sequenz ausgelöst:

  1. IP-Assoziierung: Das Gerät schließt einen 3-Wege-Handshake ab und fordert eine IP-Adresse über DHCP an.
  2. Aktive Konnektivitätsprüfung: Der Netzwerk-Manager im Hintergrund des Betriebssystems sendet sofort einen HTTP-GET-Request an eine dedizierte, herstellerneutrale Canary-URL (z. B. Apples http://captive.apple.com/hotspot-detect.html oder Googles http://connectivitycheck.gstatic.com/generate_204) [1].
  3. DNS/HTTP-Interzeption: Der lokale Wireless LAN Controller (WLC) oder Access Point (AP) fängt diesen Port 80 HTTP-Request ab. Anstatt den erwarteten HTTP-Status 200 oder 204 zurückzugeben, leitet das Gateway den Traffic des Clients über einen HTTP-302-Redirect an die URL der Landingpage des Captive Portals weiter [2].
  4. Erzeugung der Webview: Nach Erkennung des Redirects öffnet das Betriebssystem seinen nativen Captive Network Assistant (CNA) Mini-Browser, um die weitergeleitete Anmeldeseite anzuzeigen, sodass der Benutzer keinen vollwertigen Browser manuell öffnen muss.5. Authentifizierung und Zustandsübergang: Der Benutzer füllt das Anmeldeformular aus und sendet die Anmeldedaten an den Portal-Server zurück, der das Gateway (häufig über einen RADIUS Access-Accept oder einen externen API-Aufruf) anweist, die MAC-Adresse zu autorisieren.
  5. CNA-Exit-Handshake: Der CNA-Minibrowser führt einen weiteren HTTP GET zu seiner Canary-URL aus. Wenn er die erwartete Antwort 200/204 erhält, ändert er seine Schaltfläche oben rechts von "Abbrechen" auf "Fertig" und stellt die WiFi Verbindung als primäre Netzwerkschnittstelle her.

Plattformspezifische Einschränkungen von Minibrowsern

Jedes Betriebssystem verarbeitet diesen Lebenszyklus in unterschiedlichen Webview-Umgebungen, was zu einem stark fragmentierten Verhalten führt. Die folgende Tabelle beschreibt diese kritischen Einschränkungen im Detail:

Plattform / Webview Anzeigemethode Persistente Cookies Externe Webfonts JavaScript-Ausführung Fensterabmessungen Auslöser für Exit-Handshake
Apple iOS CNA (Websheet) Minibrowser-Popup Blockiert (Beim Schließen gelöscht) Blockiert (Offline) Eingeschränkt (Kein localStorage/sessionStorage) Responsive (Gerätebreite) Nur ganzseitiger HTTP-Redirect [1]
Apple macOS CNA (Captive Network Assistant) Minibrowser-Popup Blockiert Blockiert Eingeschränkt (Keine Alert- oder Confirm-Dialoge) Fest (900px x 572px) Nur ganzseitiger HTTP-Redirect
Android (Google) (CaptivePortalLogin) Push-Benachrichtigung -> Chrome Custom Tab Zulässig (Gemeinsam mit Chrome genutzt) Zulässig (Wenn im Walled Garden freigegeben) Vollständig Responsive Automatisch (Captive Portal API / 204-Prüfung) [2]
Samsung Android (Samsung Internet) Push-Benachrichtigung -> Minibrowser Zulässig Zulässig Vollständig Responsive Automatisch
Windows 10/11 (Standardbrowser) Auto-Start des Standardbrowsers Zulässig (Vollständiger Browserkontext) Zulässig Vollständig Responsive Manuell / Automatisch

Custom Captive Portal: HTML- und CSS-Leitfaden - cna constraints comparison

Umgehung der Apple CNA "Fertig"-Button-Falle beim Coding

Eines der häufigsten Fehlerszenarien bei der Entwicklung individueller Portale ist die "Fertig"-Button-Falle auf iOS-Geräten. Wenn sich ein Benutzer authentifiziert, muss das iOS Websheet-Webview erkennen, dass das Netzwerk nicht mehr captive ist. Dies geschieht durch die Überwachung des Erfolgs seiner im Hintergrund ausgeführten Canary-Anfragen.Entscheidend ist, dass der iOS CNA diese Prüfung nur bei einer vollständigen HTTP-Seitennavigation (Location-Redirect) auslöst. Wenn ein Entwickler eine moderne Single Page Application (SPA) erstellt, die Formulardaten über einen asynchronen AJAX-Aufruf (z. B. fetch() oder Axios) übermittelt und das DOM dynamisch aktualisiert, ohne die URL zu ändern, wird der CNA seine Konnektivitätsprüfung niemals erneut ausführen. Der Benutzer wird auf Gateway-Ebene authentifiziert, aber die Schaltfläche des CNA in der oberen rechten Ecke bleibt auf "Abbrechen" (bzw. "Cancel") stehen. Wenn der frustrierte Benutzer auf "Abbrechen" klickt, trennt das iOS-Gerät sofort die Verbindung zur SSID und beendet die WiFi-Sitzung [1].

Um dies zu verhindern, muss der Handler für den erfolgreichen Authentifizierungsabschluss eine vollständige Seitenweiterleitung zu einer physischen Landingpage durchführen (z. B. window.location.href = '/success') oder das Anmeldeformular nativ über eine Standard-HTTP-POST-Aktion übermitteln.

Implementierungshandbuch

Um eine konsistente Darstellung auf allen Plattformen zu gewährleisten, müssen Entwickler von modernen, asset-lastigen Webdesigns zu einem hochgradig in sich geschlossenen, defensiven Codierungsstil übergehen.

Die goldene Regel: Design für null Internetkonnektivität

Während des Captive-Zustands hat das Client-Gerät keinen Zugriff auf das breitere Internet. Es kann nur IP-Adressen und Domänen auflösen und darauf zugreifen, die explizit in der Walled Garden-Liste des Wireless-Controllers freigegeben sind (wie z. B. die IP-Adresse des Captive Portal-Servers selbst). Daher schlägt das Laden aller in Ihrem HTML referenzierten externen Ressourcen fehl, was zu einem fehlerhaften Layout führt.

Um defensiv zu gestalten, implementieren Sie die folgende Checkliste für Mobile-First Captive Portal-Design:

Custom Captive Portal: HTML- und CSS-Leitfaden - mobile first checklist

1. Viewport-Konfiguration

Um zu verhindern, dass Mobilgeräte den Viewport auf eine Desktop-Breite (typischerweise 980px) herunterskalieren, muss der HTML-<head> ein responsives Viewport-Meta-Tag enthalten. Ohne dieses Tag erscheinen Text- und Eingabefelder auf Mobilgeräten mikroskopisch klein:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

2. CSS einbetten und externe Abhängigkeiten entfernen

Verlinken Sie niemals auf externe CSS-Dateien oder CDNs (z. B. Bootstrap, Tailwind oder Google Fonts). Sämtlicher CSS-Code muss in einem <style>-Block im HTML-<head> eingebettet sein.

Verwenden Sie für die Typografie einen System-Schriftstapel (System Font Stack), der auf vorinstallierte lokale Betriebssystem-Schriftarten verweist. Dies vermeidet HTTP-Anfragen vollständig und stellt sicher, dass die Seite sofort mit der nativen, hochwertigen serifenlosen Schriftart des Geräts geladen wird:

body {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    background-color: #F5F1ED; /* Pearl White Brand Colour */
    color: #011638; /* Dark Blue Brand Colour */
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
}

3. Base64 Asset-Kodierung

Bilder, Logos und Icons sollten nicht über externe HTTP-URLs referenziert werden, es sei denn, die Hosting-Domain ist im Walled Garden des Gateways auf der Whitelist. Die zuverlässigste Methode besteht darin, kleine visuelle Assets (wie PNG- oder SVG-Logos) direkt als Base64-Daten-URIs in das HTML oder CSS zu kodieren:

<!-- Inline Base64 Logo Beispiel -->
<img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI0MCIgZmlsbD0iIzc0NThGRCIvPjwvc3ZnPg==" alt="Purple Logo" class="brand-logo">

4. Optimierung von Eingabefeldern und Touch-Zielen

Um den Standards für mobile Benutzerfreundlichkeit (wie den Human Interface Guidelines von Apple) zu entsprechen, müssen alle interaktiven Elemente für die Toucheingabe optimiert sein:

  • Schriftgröße für Eingaben: Die Schriftgröße für Eingabetexte muss mindestens 16px betragen. Wenn die Schriftgröße geringer ist (z. B. 14px), zoomen iOS Safari und der CNA beim Fokussieren automatisch in das Eingabefeld hinein, was das Seitenlayout verzerrt [1].
  • Touch-Ziele: Schaltflächen, Kontrollkästchen und Links müssen eine Mindestgröße für das Touch-Ziel von 44px x 44px aufweisen, um versehentliche Klicks oder Frustration bei den Benutzern zu vermeiden.

5. Rechtliche Einwilligung und GDPR-Konformität

Bei der Erfassung von Gästedaten (z. B. E-Mail, Telefonnummer oder Social-Media-Profile) muss die HTML-Struktur eine ausdrückliche rechtliche Einwilligung unterstützen. Gemäß GDPR sind vorausgewählte Kontrollkästchen oder implizite Einverständniserklärungen (z. B. „Mit der Anmeldung stimmen Sie unseren Bedingungen zu“) nicht konform [3].

  • Stellen Sie ein standardmäßig nicht ausgewähltes Kontrollkästchen für die Allgemeinen Geschäftsbedingungen und Datenschutzrichtlinien bereit.
  • Platzieren Sie detaillierten Rechtstext in einem scrollbaren Container mit begrenzter Höhe (max-height: 120px; overflow-y: auto;), um das Hauptanmeldeformular im sichtbaren Bereich (above the fold) zu halten.
<div class="consent-container">
    <input type="checkbox" id="terms_consent" name="terms_consent" required>
    <label for="terms_consent">
        Ich stimme den <a href="#" onclick="showTerms()">Nutzungsbedingungen</a> ausdrücklich zu und willige in die Verarbeitung meiner Daten gemäß der <a href="#" onclick="showPrivacy()">Datenschutzrichtlinie</a> ein.
    </label>
</div>

Haben Sie Fragen zu Ihrem spezifischen Setup?

Unser Team arbeitet mit Standortbetreibern, IT-Managern und Netzwerktechnikern an über 80.000 Standorten zusammen. Buchen Sie ein 20-minütiges Gespräch und wir zeigen Ihnen, wie andere diese Herausforderungen gelöst haben.

Benutzerdefinierte Captive Portal HTML/CSS-Vorlage

Unten finden Sie eine vollständige, produktionsbereite HTML/CSS-Vorlage in einer einzigen Datei, die alle Mobile-First- und CNA-konformen Best Practices berücksichtigt. Sie bietet ein responsives Layout, einen System-Schriftstapel, Base64-bereite Platzhalter für Assets, touchfreundliche Eingabefelder und explizite, GDPR-konforme Einwilligungsstrukturen:

<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>Gast WiFi Login</title>
    <style>
        /* CSS Reset & Variablen-Deklarationen */
        :root {
            --color-primary: #7458FD; /* Purple Markenfarbe */
            --color-dark: #011638; /* Dunkelblau */
            --color-light: #F5F1ED; /* Perlenweiß */
            --color-white: #FFFFFF;
            --color-border: #D1D5DB;
            --radius-container: 12px;
            --radius-element: 6px;
        }
        
        * {
            box-sizing: border-box;
            -webkit-tap-highlight-color: transparent;
        }
        
        body {
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
            background-color: var(--color-light);
            color: var(--color-dark);
            margin: 0;
            padding: 20px;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            min-height: 100vh;
        }
        
        /* Responsives Card-Layout */
        .portal-card {
            background-color: var(--color-white);
            width: 100%;
            max-width: 420px;
            padding: 32px 24px;
            border-radius: var(--radius-container);
            box-shadow: 0 4px 20px rgba(1, 22, 56, 0.05);
            text-align: center;
        }
        
        .logo-container {
            margin-bottom: 24px;
        }
        
        /* Eingebetteter Base64 Logo-Platzhalter */
        .logo {
            width: 120px;
            height: auto;
        }
        
        h1 {
            font-size: 24px;
            font-weight: 700;
            margin: 0 0 8px 0;
            color: var(--color-dark);
        }
        
        p {
            font-size: 14px;
            color: #4B5563;
            margin: 0 0 24px 0;
            line-height: 1.5;
        }
        
        /* Formular-Styles */
        .form-group {
            text-align: left;
            margin-bottom: 16px;
        }
        
        label {
            display: block;
            font-size: 14px;
            font-weight: 600;
            margin-bottom: 6px;
            color: var(--color-dark);
        }
        
        /* Wichtig: Schriftgröße muss mindestens 16px betragen, um den iOS Auto-Zoom zu verhindern */
        input[type="email"],
        input[type="text"] {
            width: 100%;
            height: 48px;
            padding: 12px 16px;
            font-size: 16px;
            border: 1px solid var(--color-border);
            border-radius: var(--radius-element);
            background-color: var(--color-white);
            color: var(--color-dark);
            outline: none;
            transition: border-color 0.2s;
        }
        
        input[type="email"]:focus,
        input[type="text"]:focus {
            border-color: var(--color-primary);
            box-shadow: 0 0 0 3px rgba(116, 88, 253, 0.15);
        }
        
        /* Einwilligung-Styles */
        .consent-group {
            display: flex;
            align-items: flex-start;
            text-align: left;
            margin: 20px 0;
        }
        
        /* Touch-freundliche Zielgröße */
        input[type="checkbox"] {
            width: 20px;
            height: 20px;
            margin: 2px 12px 0 0;
            flex-shrink: 0;
            cursor: pointer;
            accent-color: var(--color-primary);
        }
        
        .consent-label {
            font-size: 13px;
            line-height: 1.4;
            color: #4B5563;
            user-select: none;
        }
        
        .consent-label a {
            color: var(--color-primary);
            text-decoration: none;
            font-weight: 600;
        }
        
        .consent-label a:hover {
            text-decoration: underline;
        }
        
        /* Touch-Friendly CTA Button (Minimum 44px height) */
        .btn-submit {
            width: 100%;
            height: 48px;
            background-color: var(--color-primary);
            color: var(--color-white);
            border: none;
            border-radius: var(--radius-element);
            font-size: 16px;
            font-weight: 600;
            cursor: pointer;
            transition: background-color 0.2s;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        
        .btn-submit:hover {
            background-color: #5B3EE3;
        }
        
        .btn-submit:active {
            background-color: #4A2FD4;
        }
        
        /* Legal Terms Scrollbox */
        .terms-scrollbox {
            display: none; /* Toggled via JS */
            text-align: left;
            font-size: 11px;
            color: #6B7280;
            background-color: var(--color-light);
            padding: 12px;
            border-radius: var(--radius-element);
            max-height: 100px;
            overflow-y: auto;
            margin-bottom: 16px;
            border: 1px solid var(--color-border);
        }
        
        .footer {
            margin-top: 24px;
            font-size: 11px;
            color: #9CA3AF;
        }
    </style>
</head>
<body>

    <div class="portal-card">
        <div class="logo-container">
            <!-- Replace src with your actual Base64-encoded SVG or PNG -->
            <svg class="logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 30">
                <rect width="100" height="30" rx="6" fill="#7458FD"/>
                <text x="50" y="20" font-family="sans-serif" font-size="12" fill="#FFFFFF" font-weight="bold" text-anchor="middle">IHRE MARKE</text>
            </svg>
        </div>
        
        <h1>Willkommen im Gäste WiFi</h1>
        <p>Bitte geben Sie unten Ihre Daten ein, um einen sicheren, schnellen Internetzugang zu erhalten.</p>
        
        <!-- Form must submit natively (full page navigation) to clear Apple CNA -->
        <form action="/login/submit" method="POST" onsubmit="return validateForm()">
            <div class="form-group">
                <label for="guest_name">Vollständiger Name</label>
                <input type="text" id="guest_name" name="name" placeholder="Max Mustermann" required autocomplete="name">
            </div>
            
            <div class="form-group">
                <label for="guest_email">E-Mail-Adresse</label>
                <input type="email" id="guest_email" name="email" placeholder="john@example.com" required autocomplete="email">
            </div>
            
            <div class="consent-group">
                <input type="checkbox" id="terms_consent" name="terms_accepted" required>
                <label for="terms_consent" class="consent-label">
                    Ich akzeptiere die <a href="#" onclick="toggleTerms(event)">Nutzungsbedingungen</a> und willige in die Datenverarbeitung gemäß den GDPR-Vorschriften ein.
                </label>
            </div>
            
            <div id="terms_box" class="terms-scrollbox">
                <strong>WiFi Nutzungsbedingungen:</strong><br>
                1. Dieser Dienst wird ohne Gewährleistung bereitgestellt.<br>
                2. Nutzer dürfen keine illegalen, bandbreitenintensiven Aktivitäten durchführen.<br>
                3. Personenbezogene Daten werden ausschließlich für die Authentifizierung und Marketing-Einwilligungen in Übereinstimmung mit unserer Datenschutzrichtlinie erhoben.
            </div>
            
            <button type="submit" class="btn-submit">Mit WiFi verbinden</button>
        </form>
        
        <div class="footer">
            Powered by Purple | Secure Guest WiFi
        </div>
    </div>

    <script>
        function toggleTerms(e) {
            e.preventDefault();
            var box = document.getElementById('terms_box');
            box.style.display = (box.style.display === 'block') ? 'none' : 'block';
        }
        
        function validateForm() {
            var consent = document.getElementById('terms_consent');
            if (!consent.checked) {
                alert('Sie müssen die Nutzungsbedingungen akzeptieren, um eine Verbindung herzustellen.');
                return false;
            }
            return true;
        }
    </script>
</body>
</html>

Fehlerbehebung & Risikominimierung

Bei der Bereitstellung von selbst codierten HTML/CSS-basierten Captive Portals stoßen IT-Betriebsteams häufig auf mehrere schwerwiegende operationelle Risiken:

1. Die SSL/TLS-Zertifikatswarnschleife

Da Captive Portals durch das Abfangen von Datenverkehr funktionieren, stellen sie einen grundlegenden Konflikt mit der modernen HTTPS-Websicherheit dar. Wenn ein Nutzer versucht, eine HTTPS-Website aufzurufen (z. B. https://www.google.com), und das Gateway versucht, diesen Datenverkehr auf ein HTTP-basiertes Captive Portal umzuleiten, erkennt der Browser eine Diskrepanz im SSL-Zertifikat und zeigt eine kritische Sicherheitswarnung "Ihre Verbindung ist nicht privat" an.

  • Risikominimierung: Versuchen Sie niemals, HTTPS-Datenverkehr direkt abzufangen. Verlassen Sie sich stattdessen vollständig auf den nativen CNA-Assistenten des Betriebssystems (der eine unverschlüsselte HTTP-Anfrage stellt, um die Umleitung auszulösen). Stellen Sie sicher, dass die Domain Ihres Captive Portals über ein gültiges, öffentlich vertrauenswürdiges SSL-Zertifikat (z. B. Let's Encrypt oder DigiCert) verfügt und erst dann über HTTPS bereitgestellt wird, wenn die anfängliche HTTP-Umleitung den Nutzer erfolgreich zu Ihrer Portal-Domain weitergeleitet hat [2].

2. DNS-Auflösungsfehler (Die Walled-Garden-Falle)

Wenn Ihre benutzerdefinierte HTML-Seite auf externe Ressourcen verweist - wie z. B. einen OAuth-Endpunkt für Social Login (z. B. Facebook, Google) oder ein Payment-Gateway - schlagen die DNS-Anfragen für diese Domänen fehl, es sei denn, sie sind explizit im Walled Garden des Wireless-Controllers auf der Whitelist eingetragen. Wenn eine Domäne auf der Whitelist fehlt, gerät der Anmeldefluss ins Stocken und es wird ein leerer Bildschirm angezeigt.

  • Risikominderung: Führen Sie eine strikte, minimale Walled Garden-Liste. Wenn Sie Social Logins verwenden, setzen Sie die von den Identitätsanbietern empfohlenen Wildcard-Domänen auf die Whitelist (z. B. *.google.com, *.gstatic.com).

3. Sitzungstimeouts und Anfälligkeiten für MAC-Spoofing

Standardmäßige Captive Portals authentifizieren Geräte anhand ihrer MAC-Adressen. Moderne mobile Betriebssysteme (iOS 14+ und Android 10+) verwenden jedoch standardmäßig randomisierte MAC-Adressen (private WiFi-Adressen) und rotieren diese regelmäßig. Dies kann dazu führen, dass Gäste wiederholt zur erneuten Authentifizierung aufgefordert werden, was das Benutzererlebnis zerstört [1].

  • Risikominderung: Implementieren Sie angemessene Sitzungstimeouts (z. B. 24 Stunden) auf dem RADIUS-Server, um veraltete Sitzungen zu verhindern, und nutzen Sie moderne Authentifizierungsstandards wie Passpoint (Hotspot 2.0) oder WPA3-Enterprise für ein nahtloses, sicheres Onboarding, das MAC-basierte Captive Portals vollständig umgeht.

Relevanz der Purple Produkte: Selber bauen vs. Kaufen

Während das Codieren einer einzelnen HTML-Seite unkompliziert ist, stellt das Hosten, Sichern und Skalieren einer maßgeschneiderten Captive Portal-Infrastruktur enorme technische und Compliance-Hürden dar. Die folgende Tabelle vergleicht die technischen und betrieblichen Realitäten eines selbstgehosteten, benutzerdefinierten Portals mit der verwalteten Enterprise-Plattform von Purple:

Funktion / Betriebliche Anforderung Selbstgehostetes benutzerdefiniertes Portal Purple Enterprise WiFi Plattform
HTML/CSS-Anpassung Vollständig manuelle Codierung, Hochladen von Dateien auf einzelne APs oder lokale Webserver. Pixelgenauer Entwickler-Editor, der benutzerdefinierte HTML/CSS-Injects ermöglicht, kombiniert mit einem visuellen Drag-and-Drop-Builder.
RADIUS-Infrastruktur Hochverfügbare FreeRADIUS- oder Cloud-RADIUS-Server müssen bereitgestellt, konfiguriert und gewartet werden [4]. Integrierter, global verteilter, Cloud-nativer RADIUS mit Active-Active-Redundanz und SLAs von 99,99 % Betriebszeit.
Multi-Vendor-AP-Unterstützung Benutzerdefinierte Integrationsskripte für jeden Hardwarehersteller (Cisco, Aruba, Meraki, Ruckus) erforderlich [5]. Native Out-of-the-box-Integration mit über 200 Hardwaremodellen; einheitliche Portalbereitstellung über gemischte Hardware-Infrastrukturen hinweg.
Datenschutz & Compliance Der Standort übernimmt die 100-prozentige rechtliche Haftung für die Einhaltung von GDPR, CCPA und PCI-DSS, einschließlich sicherer Datenbankverschlüsselung und Workflows zur Datenlöschung. Vollständig konform durch Design. Integriertes Einwilligungsmanagement, automatisierte Löschanfragen von betroffenen Personen und sicheres, nach ISO 27001 zertifiziertes Hosting.
Analytics & Marketing Erfordert den Aufbau maßgeschneiderter Daten-Pipelines und die Integration von Marketing-Tools von Drittanbietern. Enterprise-grade Analytics-Dashboard mit Echtzeit-Besucherstromanalyse, Wiederkehr-Metriken und automatisierten Triggern für Marketingkampagnen [6].
Identity Provider Integrations Manuelle OAuth2-Integrationen mit Google, Facebook, Apple und lokalen SMS-Gateways. Ein-Klick-Integrationen mit den gängigsten Social-Media-Plattformen, SMS-Gateways und Azure AD / Okta für Business-Gäste.

Die Plattform von Purple löst das Dilemma zwischen "Selber bauen oder Kaufen". Sie bietet Entwicklern die vollständige kreative Freiheit eines maßgeschneiderten HTML/CSS-Arbeitsbereichs, während sie gleichzeitig die komplexe, risikoreiche Backend-Infrastruktur überflüssig macht, die für die Unterstützung einer sicheren RADIUS-Authentifizierung im großen Stil erforderlich ist.

ROI und geschäftlicher Nutzen

Die Investition in ein professionell entwickeltes, responsives, maßgeschneidertes Captive Portal liefert quantifizierbare Erträge in den Bereichen IT-Betrieb, Marketing und Einhaltung gesetzlicher Vorschriften.

1. Senkung der Betriebskosten (IT-Helpdesk-Tickets)

In großen Netzwerken, wie in einem Stadion oder einer Einzelhandelskette mit mehreren Standorten, ist ein fehlerhaftes Captive Portal eine der Hauptursachen für Eskalationen im IT-Helpdesk. Wenn Gäste auf einen leeren Bildschirm oder einen nicht reagierenden Login-Button stoßen, überlasten sie das Personal vor Ort oder erstellen Support-Tickets.

$$\text{Jährliche Support-Einsparungen} = (\text{Jährliche Gastbesuche gesamt} \times \text{Portal-Fehlerrate} \times \text{Helpdesk-Kontaktrate}) \times \text{Kosten pro Support-Ticket}$$

  • Szenario: Ein Kongresszentrum mit 1.000.000 Besuchern pro Jahr. Ein schlecht codiertes Portal hat eine Fehlerrate von 5 % auf älteren iOS-Geräten, was zu einer Helpdesk-Kontaktrate von 10 % führt. Bei branchenüblichen 15 $ pro Support-Ticket belaufen sich die Betriebskosten auf: $$(1.000.000 \times 0,05 \times 0,10) \times $15 = $75.000 \text{ an vermeidbaren Support-Kosten pro Jahr}$$
  • Ergebnis: Der Wechsel zu einer CNA-optimierten, Mobile-First-Vorlage senkt die Portal-Fehlerrate auf unter 0,1 % und beseitigt diese finanzielle Belastung für den Betrieb nahezu vollständig.

2. Marketing-Datenerfassung und Opt-in-Optimierung

Für Einzelhandels- und Gastronomiebetriebe ist das Gäste-WiFi-Portal das primäre Instrument zur Erfassung sauberer First-Party-Kundendaten. Eine schlecht gestaltete Benutzeroberfläche mit winziger Schrift oder einem unübersichtlichen Formularlayout führt zu hohen Absprungraten - Nutzer brechen den Login-Prozess komplett ab, was zu verlorenen Marketing-Chancen führt.

  • Fallstudie (Einzelhandel): Eine nationale Einzelhandelskette implementierte ein Mobile-First optimiertes Captive Portal auf Basis der Plattform von Purple. Durch das Ersetzen eines mehrstufigen Anmeldeformulars durch ein einteiliges E-Mail-Eingabefeld (Schriftgröße: 16px) und einen optimierten 48px-Button verzeichneten sie im ersten Quartal eine Steigerung der abgeschlossenen Registrierungen um 42 % und eine Steigerung der Opt-ins für den Marketing-Newsletter um 28 % [6].

3. Risikominderung bei Recht und Compliance

Unter GDPR und CCPA drohen bei nicht-konformer Datenerhebung empfindliche Geldstrafen (bis zu 4 % des weltweiten Jahresumsatzes unter GDPR). Das Vertrauen auf vorangekreuzte Kontrollkästchen oder das Versäumnis, eine klare, leicht zugängliche Datenschutzerklärung auf Ihrer Splash-Page bereitzustellen, setzt das Unternehmen einer immensen rechtlichen Haftung aus.

  • Minderungs-ROI: Die Implementierung eines expliziten, nicht angekreuzten Zustimmungs-Kontrollkästchens und das Hosten von Bedingungen in einer optimierten Scrollbox gewährleistet eine 100%ige Einhaltung von Vorschriften, minimiert das Risiko von Bußgeldern in Millionenhöhe und schützt den Ruf der Marke.

Zusammenfassung der wichtigsten Erkenntnisse

  • Die CNA-Sandbox ist restriktiv: Apples iOS Websheet und macOS CNA sind stark eingeschränkte Sandbox-Umgebungen, die externe Ressourcen, Cookies und Web-Schriftarten blockieren. Das gesamte Styling und alle Ressourcen müssen in sich geschlossen sein (Inline-CSS, Base64-Bilder, System-Schriftarten) [1].
  • AJAX unterbricht den iOS-Exit-Handshake: Um das iOS-Gerät erfolgreich von "gesperrt" auf "verbunden" umzustellen (wodurch sich die Schaltfläche oben rechts von "Abbrechen" auf "Fertig" ändert), müssen Sie eine ganzseitige HTTP-Weiterleitung auslösen. Asynchrone DOM-Aktualisierungen führen dazu, dass das Gerät in einer Captive-Schleife verbleibt.
  • Mobile-First ist obligatorisch: Über 90 % der Anmeldungen erfolgen auf Mobilgeräten. Entwerfen Sie ein einspaltiges Layout (max-width: 480px), nutzen Sie touchfreundliche Tippziele (mindestens 44px x 44px) und erzwingen Sie eine Schriftgröße von mindestens 16px bei allen Texteingaben, um ein automatisches Heranzoomen des iOS-Browsers zu verhindern.
  • Walled Gardens steuern DNS: Jede externe Domain, auf die während des Logins verwiesen wird (z. B. APIs für Social Logins), muss explizit in der Walled Garden-Liste des Wireless-Controllers freigegeben werden, andernfalls kann die Seite nicht geladen werden.
  • Purple beseitigt Backend-Komplexität: Die Nutzung des Portal-Builders von Purple gibt Entwicklern die vollständige HTML/CSS-Kontrolle über einen benutzerdefinierten Editor, während die immense Last in Bezug auf Sicherheit, Skalierung und Compliance für RADIUS, AP-Integrationen verschiedener Hersteller und GDPR-konformes Datenbankmanagement abgegeben wird [3].

Referenzen


Hören Sie sich das technische Briefing an

Hören Sie einem Senior Solutions Architect zu, der die technischen Einschränkungen und Implementierungsstrategien für benutzerdefinierte Captive Portals erläutert:

Schlüsseldefinitionen

Captive Portal

Eine Webseite, die neu verbundenen Benutzern eines WiFi-Netzwerks angezeigt wird, bevor ihnen ein umfassenderer Zugriff auf Netzwerkressourcen gewährt wird - in der Regel für die Authentifizierung, die Bezahlung oder die Anzeige von Nutzungsbedingungen verwendet.

IT-Teams stellen Captive Portals auf Gateway-Ebene bereit, um den Gastzugang zu steuern, Benutzerdaten zu erfassen und die Einhaltung gesetzlicher Vorschriften durchzusetzen.

Captive Network Assistant (CNA)

Ein stark eingeschränkter, in einer Sandbox ausgeführter Mini-Browser, der von Betriebssystemen (wie Apple iOS und macOS) bei Erkennung einer Weiterleitung im Captive-Netzwerk automatisch gestartet wird und ausschließlich dazu dient, die Portal-Authentifizierung zu erleichtern.

CNA-Webviews erzwingen strenge Einschränkungen, einschließlich der Blockierung externer CDNs, persistenter Cookies und des lokalen Speichers, was standardmäßige Webdesigns häufig unbrauchbar macht.

Walled Garden

Eine eingeschränkte Liste von IP-Adressen, Subnetzen oder Domainnamen, auf die ein nicht authentifizierter Gastbenutzer über das Gateway zugreifen darf, bevor der Anmeldevorgang am Captive Portal abgeschlossen ist.

Entwickler müssen sicherstellen, dass jede externe Ressource (wie Social-Login-APIs oder Payment-Gateways) im Walled Garden auf der Whitelist steht, damit der Anmeldefluss nicht ins Stocken gerät.

Base64-Codierung

Ein Binär-zu-Text-Codierungsschema, das Binärdaten (wie Bilder) als ASCII-Zeichenfolge darstellt, sodass Assets direkt in HTML- oder CSS-Dokumente eingebettet werden können.

Die Verwendung der Base64-Codierung für Logos und Symbole eliminiert externe HTTP-Anfragen und sorgt dafür, dass Assets in Offline-CNA-Umgebungen perfekt dargestellt werden.

RADIUS (Remote Authentication Dial-In User Service)

Ein Netzwerkprotokoll, das eine zentralisierte Verwaltung für Authentifizierung, Autorisierung und Kontoführung (AAA - Authentication, Authorisation, and Accounting) für Benutzer bereitstellt, die sich mit einem Netzwerkdienst verbinden und diesen nutzen.

Der Captive Portal-Server kommuniziert mit einem RADIUS-Server, um die MAC-Adresse des Gasts am Netzwerk-Gateway zu autorisieren, sobald die Authentifizierungskriterien erfüllt sind.

System-Schriftstapel

Eine CSS-Schriftfamilien-Deklaration, die vorinstallierten Betriebssystem-Schriftarten (wie San Francisco auf iOS, Segoe UI auf Windows und Roboto auf Android) den Vorzug vor externen Webfonts gibt.

Die Implementierung eines System-Schriftstapels gewährleistet eine sofortige Darstellung der Typografie, ohne dass blockierte externe HTTP-Anfragen an Dienste wie Google Fonts ausgelöst werden.

Canary URL

Eine dedizierte, unverschlüsselte HTTP-URL, die von Betriebssystemherstellern (z. B. captive.apple.com) bereitgestellt wird, um zu testen, ob ein Gerät über eine uneingeschränkte Internetverbindung verfügt.

Der Netzwerkmanager im Hintergrund des Betriebssystems überprüft diese URL, um das Vorhandensein eines Captive Portals zu erkennen und das CNA-Webview-Popup auszulösen.

Passpoint (Hotspot 2.0)

Ein von der WiFi Alliance entwickelter Industriestandard, der es mobilen Geräten ermöglicht, WiFi Hotspots automatisch zu erkennen und sich sicher an ihnen zu authentifizieren, wodurch manuelle Anmeldungen an einem Captive Portal umgangen werden.

Unternehmen nutzen Passpoint zusammen mit Plattformen wie Purple, um Gästen den Übergang von aufwendigen Splash Pages zu einem nahtlosen, mobilfunkähnlichen und sicheren Roaming-Erlebnis zu ermöglichen.

Ausgearbeitete Beispiele

Eine luxuriöse Hotelkette mit 250 Zimmern [Gastgewerbe](/industries/hotels) möchte eine benutzerdefinierte WiFi-Anmeldeseite für Gäste implementieren, die perfekt zu ihren Premium-Markenrichtlinien passt. Ihre Kreativagentur hat eine Splash-Page entworfen, die eine benutzerdefinierte Markentypografie (gehostet auf Adobe Fonts), mehrere hochauflösende Hintergrundbilder (gehostet auf einem öffentlichen AWS S3-Bucket) und einen mehrstufigen animierten JavaScript-Assistenten verwendet. Nach der Bereitstellung verbinden sich iOS-Gäste mit der SSID, aber das Portal wird als leerer weißer Bildschirm angezeigt, und Benutzer können sich nicht authentifizieren.

Um den leeren Bildschirm und das fehlerhafte Branding zu beheben, müssen wir die Frontend-Architektur des Portals neu strukturieren, um den Einschränkungen der Apple CNA-Sandbox zu entsprechen:

  1. Behebung der Typografie: Da Adobe Fonts eine externe HTTP-Anfrage erfordert, die vom CNA blockiert wird, ersetzen wir den benutzerdefinierten Schriftaufruf durch einen nativen, hochwertigen System-Schriftstapel (font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;). Dies gewährleistet ein sofortiges Rendering ohne externe Netzwerkaufrufe.
  2. Asset-Optimierung: Die Hintergrundbilder auf AWS S3 werden blockiert, da sich S3 nicht im Walled Garden des Gateways befindet. Wir komprimieren das primäre Markenlogo, konvertieren es in ein leichtgewichtiges SVG und codieren es direkt im HTML als Base64-Daten-URI. Für den Hintergrund ersetzen wir die schweren Bilder durch einen sauberen, responsiven CSS-Verlauf unter Verwendung der Markenfarben des Hotels, was das Seitengewicht erheblich reduziert.
  3. JavaScript-Vereinfachung: Der mehrstufige animierte Assistent basiert auf externen jQuery- und GSAP-Bibliotheken. Wir entfernen diese externen Abhängigkeiten und strukturieren das Formular in ein einseitiges, einspaltiges HTML-Format um. Die Formularvalidierung wird in schlankem, reinem JavaScript neu geschrieben.
  4. Authentifizierungs-Handshake: Die Formularübermittlung wird von einer AJAX-basierten Übermittlung in ein natives HTML <form action="/submit" method="POST"> geändert, um eine vollständige Seitenumleitung auszulösen, sodass das iOS-Websheet seine Canary-Prüfung ausführen und die Schaltfläche "Fertig" anzeigen kann.
Kommentar des Prüfers: Dieses Szenario stellt den klassischen Konflikt zwischen anspruchsvollem kreativem Design und den strengen Sicherheitsbeschränkungen von Captive-Webviews dar. Kreativagenturen behandeln das Captive Portal oft wie eine Standard-Desktop-Website. Da sich das Gerät jedoch in einem Zustand vor der Authentifizierung befindet, blockiert das Netzwerk jeglichen externen Datenverkehr. Durch das Inlining von CSS, die Verwendung von System-Schriftstapeln, die Base64-Codierung von Assets und die Nutzung nativer Formularübermittlungen bewahren wir die Premium-Markenästhetik und erreichen gleichzeitig eine 100 %ige Betriebszuverlässigkeit auf iOS- und Android-Geräten.

Eine nationale Einzelhandelskette [Einzelhandel](/industries/retail) mit 450 Filialen möchte E-Mail-Adressen von Gästen über WiFi-Splash-Pages erfassen, um ihr CRM zu füttern. Sie verlangen von den Gästen, dass sie sich für Marketing-Newsletter anmelden. Der ursprüngliche Entwurf sieht ein bereits angekreuztes Kontrollkästchen "Ich stimme dem Erhalt von Marketing-E-Mails zu" vor. Darüber hinaus wird das Portal auf einem einzigen lokalen Server in ihrer Zentrale gehostet. Zu den Spitzenzeiten (Samstagnachmittag) kommt es bei Gästen im ganzen Land zu schweren Verzögerungen, und viele können die Anmeldeseite nicht laden, was zu einem massiven Einbruch der Datenerfassungsraten führt.

Wir müssen sowohl den Compliance-Verstoß als auch den Infrastruktur-Engpass beheben:

  1. Behebung des Compliance-Verstoßes: Unter der GDPR (DSGVO) und dem CCPA sind vorab angekreuzte Einverständniserklärungen illegal. Wir ändern das HTML, sodass das Kontrollkästchen für die Marketing-Einwilligung standardmäßig nicht ausgewählt ist (<input type="checkbox" id="marketing_consent">). Zudem fügen wir ein separates, obligatorisches Kontrollkästchen für die Nutzungsbedingungen hinzu, um die rechtliche Zustimmung von der Marketing-Einwilligung zu entkoppeln.
  2. Skalierung der Infrastruktur: Das Hosting eines nationalen Captive Portals auf einem einzigen, zentralisierten Server stellt einen Single Point of Failure und einen massiven Latenz-Engpass dar. Wir migrieren das Portal-Frontend zu einem hochverfügbaren, weltweit verteilten Content Delivery Network (CDN) mit Edge-Caching.
  3. RADIUS-Integration: Wir konfigurieren die Access Points vor Ort in den Filialen so, dass sie auf ein Cloud-natives RADIUS-Cluster mit Active-Active-Redundanz verweisen. Dadurch wird sichergestellt, dass Authentifizierungsanfragen lokal am Edge mit einer Latenz von unter 50 ms verarbeitet werden - selbst während der Stoßzeiten am Samstag.
  4. Purple-Migration: Um diesen gesamten Entwicklungsaufwand zu eliminieren, migriert der Einzelhändler zu Purple. Die integrierten GDPR-Zustimmungstools von Purple verwalten konforme Opt-ins automatisch, und ihre weltweit verteilte Cloud-Infrastruktur bewältigt Millionen täglicher Authentifizierungen mit einer Betriebszeit von 99.99 %, was den Skalierungsengpass vollständig behebt.
Kommentar des Prüfers: Vorab angekreuzte Kontrollkästchen für die Einwilligung stellen ein schwerwiegendes Compliance-Risiko dar, das zu massiven Bußgeldern führen kann. Die Entkopplung der Marketing-Einwilligung von den Nutzungsbedingungen ist ein technischer und rechtlicher Best-Practice-Ansatz. Auf der Infrastrukturseite ist das zentralisierte Hosting von Captive Portals ein Anti-Pattern. Eine landesweite Einzelhandelspräsenz erfordert ein dezentrales, im Edge-Cache gespeichertes Frontend in Kombination mit einem Cloud-nativen RADIUS-Backend. Die Migration zu einer verwalteten Plattform wie Purple eliminiert diese architektonische Komplexität, sodass sich der Einzelhändler auf Marketingkampagnen anstatt auf die Skalierung von Datenbanken konzentrieren kann.

Übungsfragen

Q1. Ein IT-Team an einem großen internationalen Flughafen [Transport](/industries/trains) stellt ein selbst entwickeltes Captive Portal bereit. Sie stellen fest, dass Android-Nutzer sich nahtlos verbinden, ein erheblicher Teil der iOS-Nutzer jedoch ein Problem hat: Sie authentifizieren sich erfolgreich, können aber nicht im Internet surfen. Bei genauerer Betrachtung zeigen die iOS-Geräte an, dass sie mit der SSID verbunden sind, aber die Schaltfläche oben rechts im Captive-Popup zeigt immer noch "Abbrechen" anstelle von "Fertig". Was ist die Ursache für dieses Problem, und wie sollte der Entwickler es beheben?

Hinweis: Analysieren Sie, wie der Apple CNA-Helfer erkennt, dass ein Netzwerk vom Zustand "Captive" zu "Authentifiziert" gewechselt hat, und welche Browser-Aktion erforderlich ist, um diese Überprüfung auszulösen.

Musterlösung anzeigen

Die Ursache liegt darin, dass die Erfolgsseite des Portals die Benutzeroberfläche dynamisch über JavaScript (AJAX/SPA-Routing) aktualisiert, anstatt eine vollständige HTTP-Seitennavigation durchzuführen. Der Mini-Browser des Apple iOS Captive Network Assistant (CNA) führt seinen Hintergrund-Verbindungstest (die Canary-Anfrage an captive.apple.com) nur dann erneut aus, wenn ein vollständiger URL-Redirect oder eine Seitennavigation stattfindet. Wenn der Entwickler das Anmeldeformular über AJAX sendet und lediglich eine "Erfolg"-Meldung im DOM anzeigt, bekommt der CNA nicht mit, dass das Netzwerk freigeschaltet wurde. Folglich bleibt die Schaltfläche oben rechts auf "Abbrechen". Wenn der Benutzer auf "Abbrechen" klickt, um das Fenster zu schließen, geht das Betriebssystem von einer fehlgeschlagenen Anmeldung aus und trennt die Verbindung zum WiFi-Netzwerk.

Lösung: Der Entwickler muss den Handler für die erfolgreiche Authentifizierung so anpassen, dass eine vollständige Weiterleitung erzwungen wird. Dies kann erreicht werden, indem das Anmeldeformular nativ über ein standardmäßiges HTML <form action="/submit" method="POST"> übermittelt wird oder indem window.location.href = '/success_landing_page' in JavaScript ausgeführt wird, sobald die API eine erfolgreiche Authentifizierungsantwort zurückgibt. Dies löst das erforderliche Laden der vollständigen Seite aus, wodurch der CNA-Helfer gezwungen wird, den Netzwerkstatus neu zu bewerten, zu überprüfen, ob die Canary URL jetzt erreichbar ist, und die Schaltfläche oben rechts auf "Fertig" zu ändern.

Q2. Ein Stadion-Betriebsteam [Events] möchte ein Gäste-WiFi-Netzwerk einrichten, das Marketing-Opt-ins erfasst. Der Compliance-Beauftragte besteht darauf, dass das Portal zu 100 % GDPR-konform sein muss. Das Entwicklerteam präsentiert einen Entwurf, bei dem das Anmeldeformular ein bereits angekreuztes Kontrollkästchen mit dem Text "Ich stimme den Nutzungsbedingungen zu und willige in den Erhalt von Marketing-Newslettern ein" enthält. Warum ist dieser Entwurf nicht konform, und wie sollten HTML/CSS sowie die Formularstruktur überarbeitet werden, um die GDPR zu erfüllen und gleichzeitig eine hohe Konversionsrate beizubehalten?

Hinweis: Berücksichtigen Sie die strengen Anforderungen der GDPR bezüglich der ausdrücklichen Einwilligung, der Entkopplung von Marketing-Opt-ins von den Nutzungsbedingungen und der physischen Sichtbarkeit von Rechtstexten auf mobilen Bildschirmen.

Musterlösung anzeigen

Der vorgeschlagene Entwurf verstößt in zwei wesentlichen Punkten gegen die GDPR: Erstens stellen vorausgewählte Kontrollkästchen keine wirksame Einwilligung dar, da diese freiwillig, für den konkreten Fall, in informierter Weise und unmissverständlich erfolgen muss. Zweitens ist die Koppelung der Marketing-Einwilligung mit der Zustimmung zu den Nutzungsbedingungen nicht zulässig - ein Benutzer darf nicht gezwungen werden, Marketing-E-Mails als Bedingung für die Nutzung des WiFi-Dienstes zu akzeptieren.

Refactoring-Strategie:

  1. Einwilligung entkoppeln: Teilen Sie das Kontrollkästchen in zwei separate Kontrollkästchen auf. Kontrollkästchen A ist obligatorisch und deckt die Nutzungsbedingungen und die Datenschutzrichtlinie ab. Kontrollkästchen B ist optional und deckt die Anmeldung zum Marketing-Newsletter ab.
  2. Auf nicht ausgewählt setzen: Stellen Sie sicher, dass beide Kontrollkästchen im HTML standardmäßig nicht ausgewählt sind (das Attribut checked wird weggelassen).
  3. CSS-Sichtbarkeit: Da sich über 90 % der Benutzer auf Mobilgeräten befinden, platzieren Sie die Kontrollkästchen direkt über der Schaltfläche 'Verbinden', sodass sie ohne Scrollen im sofort sichtbaren Bereich ('above the fold') liegen. Verwenden Sie einen System-Font-Stack und stellen Sie die Schriftgröße des Labels auf 14px mit einer Zeilenhöhe von 1.4 ein, um die Lesbarkeit zu gewährleisten.
  4. Scrollbox für Nutzungsbedingungen: Um zu verhindern, dass der Rechtstext die Formularelemente aus dem Bildschirm schiebt, platzieren Sie die detaillierten Nutzungsbedingungen in einem scrollbaren Container mit fester Höhe (max-height: 100px; overflow-y: auto; background-color: #F5F1ED; border: 1px solid #D1D5DB; border-radius: 6px;), der über einen Textlink auf- und zugeklappt werden kann. Dies sorgt für ein sauberes, konversionsstarkes Layout bei gleichzeitiger absoluter Einhaltung aller rechtlichen Vorgaben.

Q3. Eine Einzelhandelskette [Retail](/industries/retail) stellt eine individuell programmierte Splash Page in 100 Filialen bereit. Der Designer hat Google Fonts (Montserrat) verwendet und im HTML-Head auf ein über ein CDN gehostetes Bootstrap-Stylesheet verlinkt. Beim Testen in einem Unternehmensnetzwerk wird die Seite hervorragend gerendert. Bei der Bereitstellung auf einem Test-Filialen-AP mit einer Captive-Network-Konfiguration wird die Seite jedoch mit unformatiertem Times New Roman-Text, fehlerhafter Ausrichtung und fehlenden Symbolen gerendert. Warum passiert das und wie müssen die Assets überarbeitet werden?

Hinweis: Analysieren Sie den Zustand der Netzwerkverbindung, bevor ein Benutzer authentifiziert wird, und bestimmen Sie, wie der Browser externe HTTP-Anfragen an Domains außerhalb des Walled Garden verarbeitet.

Musterlösung anzeigen

Dieser Fehler tritt auf, weil sich das Gerät beim Laden der Splash Page in einem nicht authentifizierten, gefangenen Zustand befindet. In diesem Zustand blockiert das Wireless Gateway den gesamten ausgehenden Internetverkehr und lässt nur Anfragen an Domains zu, die explizit auf der Whitelist des Walled Garden des Gateways stehen. Da die CDN-Domains für Bootstrap (cdn.jsdelivr.net) und Google Fonts (fonts.googleapis.com) nicht auf der Whitelist stehen, schlagen die Anfragen des Browsers zum Abrufen des Stylesheets und der Schriftdateien geräuschlos fehl. Infolgedessen greift der Browser auf seine Standard-Rendering-Engine zurück, was zu unformatiertem HTML (Times New Roman-Text) und fehlerhaften Layouts führt.

Refactoring-Strategie:

  1. Inline-CSS: Entfernen Sie den Link zum externen Bootstrap-Stylesheet. Kopieren Sie die erforderlichen CSS-Grid-/Flexbox-Regeln direkt in einen <style>-Block im HTML-<head>. Dadurch wird sichergestellt, dass alle Layout-Anweisungen in der ersten Single-Page-Payload übertragen werden.
  2. System-Font-Stack implementieren: Entfernen Sie den Google Fonts @import- oder <link>-Aufruf. Ersetzen Sie ihn durch einen nativen System-Font-Stack im CSS (font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;). Dies zwingt das Gerät dazu, hochwertige Schriftarten zu verwenden, die bereits auf dem Betriebssystem vorinstalliert sind, wodurch die externe Netzwerkabhängigkeit vollständig entfällt.
  3. Symbole/Logos als Base64 kodieren: Wenn das Layout auf externe Bilder oder Symbolbibliotheken (wie FontAwesome) angewiesen ist, konvertieren Sie diese Symbole in das SVG-Format und betten Sie sie direkt inline im HTML oder als Base64-Data-URIs im CSS ein. Dies garantiert, dass die Seite zu 100 % in sich geschlossen ist und selbst bei völlig fehlender Internetverbindung perfekt gerendert wird.

Häufig gestellte Fragen

Was ist der Captive Network Assistant (CNA) und warum verhalten sich individuelles Captive Portal HTML und CSS darin anders?

Der Captive Network Assistant (CNA) ist ein Sandbox-geschützter, eingeschränkter Webview, der von Betriebssystemen wie iOS, macOS, Android und Windows automatisch gestartet wird, sobald sie eine Netzwerk-Abfangung erkennen. CNAs fehlen vollständige Browser-Funktionen: Sie blockieren häufig Popups, schränken das Speichern dauerhafter Cookies ein, begrenzen die Ausführungsgeschwindigkeit von JavaScript, deaktivieren Dateidownloads und erzwingen strikte Viewport-Grenzen. Individuelles Captive Portal HTML und CSS müssen leichtgewichtig und in sich geschlossen sein und externe Redirects vermeiden, die die CNA-Sitzung vorzeitig beenden können.

Welche Domains und IP-Adressen müssen in einen Captive Portal Walled Garden aufgenommen werden?

Ein Walled Garden (Pre-Authentication-Allowlist) erlaubt es nicht authentifizierten WLAN-Clients, kritische Ressourcen vor dem Login zu erreichen. Sie müssen Hostnamen für alle extern gehosteten CSS-Stylesheets, JavaScript-Bundles, Webschriftarten oder CDN-Ressourcen aufnehmen, die auf der Splash Page verwendet werden. Wenn Sie Social Login oder SMS-Verifizierung unterstützen, müssen Sie auch die Authentifizierungs-Endpunkte für Apple, Google oder SMS-Gateways sowie den Controller-Redirect und RFC 8908 API-Endpunkte auf die Allowlist setzen.

Wie modernisieren RFC 8908 und RFC 8910 die Erkennung von Captive Portalen gegenüber der herkömmlichen HTTP-Weiterleitung?

Herkömmliche Captive Portale fangen HTTP-Anfragen im Klartext (Port 80) ab und geben einen HTTP 302 Redirect zurück, was zu SSL/TLS-Zertifikatswarnungen führt, wenn der Client eine HTTPS-Verbindung versucht. RFC 8908 und RFC 8910 etablieren eine standardisierte Captive Portal API, bei der das WLAN-Netzwerk eine API-URL über die DHCP-Option 114 oder die IPv6-Router-Advertisement-Option 38 ankündigt. Das Betriebssystem des Clients fragt diesen JSON-Endpunkt direkt ab und erhält so den expliziten Captive-Status, Nutzungsbedingungen des Standorts und Authentifizierungs-URLs ohne Paketmanipulationen oder Zertifikatsfehler.

Welche CSS-Designmuster eignen sich am besten für Captive Portal Splash Pages auf Mobilgeräten?

Zu den Best Practices für Captive Portal CSS gehören die Verwendung von fluiden Flexbox- oder CSS Grid-Layouts, die Einrichtung interaktiver Touch-Ziele von mindestens 48x48 Pixeln für eine ergonomische Bedienung, die Nutzung von System-Schriftarten (wie -apple-system, BlinkMacSystemFont, Segoe UI), um das Laden blockierender Webfonts zu vermeiden, das Inlinen kritischer SVG-Icons zur Minimierung von HTTP-Anfragen sowie die Definition eines strikten Mobile-Viewport-Meta-Tags (width=device-width, initial-scale=1), um störendes horizontales Scrollen in Mini-Browsern zu verhindern.

Wie vereinfacht Purple die Bereitstellung benutzerdefinierter Captive Portals und die Verwaltung von Walled Gardens?

Purple ersetzt fehleranfällige, selbst gehostete Webserver durch eine Captive Portal Plattform in der Enterprise-Cloud. Purple bietet dynamische Branding-Tools, automatisierte Walled-Garden-Orchestrierung über Cisco Meraki, HPE Aruba, Ruckus, Ubiquiti UniFi und Fortinet hinweg, vollständige Unterstützung des RFC 8908 Standards und strenge Kompatibilitätstests auf iOS und Android CNA Webviews, unterstützt durch eine Cloud-Verfügbarkeit von 99.99 % und CRM-Marketing-Integrationen.

Weiterlesen in dieser Reihe

Ubiquiti UniFi Guest Portal leitet nicht weiter: Ursachen und Lösungen

Dieser Leitfaden grenzt einen Fehler bei der Weiterleitung des UniFi Guest Portals ein, indem er nacheinander den Guest-Status, die Weiterleitung, die Pre-Authorisation-Route und die Controller-Autorisierung prüft. Er bietet IT-Teams vor Ort eine bewährte Methode, um Verwirrung zwischen Guest-Netzwerk und Hotspot, externe Portal-Übergaben, aktuelle UniFi OS Kontoanforderungen und DNS-Isolierungstests zu adressieren.

Leitfaden lesen →

Cisco Meraki Splashpage funktioniert nicht: Ein Flussdiagramm zur Fehlerbehebung

Diese praktische Day-Two-Anleitung isoliert, wo ein Cisco Meraki Splash-Flow fehlgeschlagen ist: Client-Autorisierung, Initiierung der HTTP-Weiterleitung, Erreichbarkeit des Walled Garden oder RADIUS-Anmeldung. Sie bietet IT-Teams vor Ort einen kontrollierten Nachweisweg, um Guest WiFi wiederherzustellen, ohne weitreichende Änderungen an einem Live-System vorzunehmen.

Leitfaden lesen →

Enterprise Guest WiFi Einrichtungsleitfaden: VLAN Segmentierung, Sicherheit und Captive Portals

Dieser technische Leitfaden zeigt IT-Teams, wie sie Guest WiFi als kontrollierten Internetzugangsdienst unter Verwendung von VLAN Segmentierung, Firewall-Richtlinien und einem Captive Portal einrichten. Er erklärt zudem, wie die Registrierungsformulare und Onboarding-Steuerelemente von Purple eine angemessene Visitor Experience unterstützen, ohne die Sicherheitsgrenzen um Mitarbeiter-, Zahlungs- und Betriebssysteme zu schwächen.

Leitfaden lesen →

Haben Sie Fragen zu Ihrem spezifischen Setup?

Unser Team arbeitet mit Standortbetreibern, IT-Managern und Netzwerktechnikern an über 80.000 Standorten zusammen. Buchen Sie ein 20-minütiges Gespräch und wir zeigen Ihnen, wie andere diese Herausforderungen gelöst haben.