- Purple
- Captive portals: a complete guide
- Custom Captive Portal: HTML- und CSS-Leitfaden
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.
Video overview
Diesen Leitfaden anhören
Podcast-Transkript ansehen
Teil unserer Kernserie: Captive Portal Leitfaden →
- Executive Summary
- Technischer Deep-Dive
- Der Lebenszyklus des Captive Portals
- Plattformspezifische Einschränkungen von Minibrowsern
- Umgehung der Apple CNA "Fertig"-Button-Falle beim Coding
- Implementierungshandbuch
- Die goldene Regel: Design für null Internetkonnektivität
- 1. Viewport-Konfiguration
- 2. CSS einbetten und externe Abhängigkeiten entfernen
- 3. Base64 Asset-Kodierung
- 4. Optimierung von Eingabefeldern und Touch-Zielen
- 5. Rechtliche Einwilligung und GDPR-Konformität
- Benutzerdefinierte Captive Portal HTML/CSS-Vorlage
- Fehlerbehebung & Risikominimierung
- 1. Die SSL/TLS-Zertifikatswarnschleife
- 2. DNS-Auflösungsfehler (Die Walled-Garden-Falle)
- 3. Sitzungstimeouts und Anfälligkeiten für MAC-Spoofing
- Relevanz der Purple Produkte: Selber bauen vs. Kaufen
- ROI und geschäftlicher Nutzen
- 1. Senkung der Betriebskosten (IT-Helpdesk-Tickets)
- 2. Marketing-Datenerfassung und Opt-in-Optimierung
- 3. Risikominderung bei Recht und Compliance
- Zusammenfassung der wichtigsten Erkenntnisse
- Referenzen
- Hören Sie sich das technische Briefing an

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:
- IP-Assoziierung: Das Gerät schließt einen 3-Wege-Handshake ab und fordert eine IP-Adresse über DHCP an.
- 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.htmloder Googleshttp://connectivitycheck.gstatic.com/generate_204) [1]. - 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].
- 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.
- 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 |

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:

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
- [1] Wireless Broadband Alliance: Captive Network Portal Behaviour
- [2] Android Open Source Project: Captive Portal Login Webview Integration
- [3] European Data Protection Board: Guidelines on Consent under Regulation 2016/679
- [4] So implementieren Sie die 802.1X-Authentifizierung mit Cloud RADIUS
- [5] Cisco Wireless APs: 2026 Guide to Products & Deployment
- [6] Purple WiFi Marketing- & Analyseplattform
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:
- 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. - 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.
- 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.
- 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.
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:
- 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. - 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.
- 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.
- 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.
Ü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:
- 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.
- Auf nicht ausgewählt setzen: Stellen Sie sicher, dass beide Kontrollkästchen im HTML standardmäßig nicht ausgewählt sind (das Attribut
checkedwird weggelassen). - 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.
- 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:
- 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. - 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. - 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.
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.
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.
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.