Neuer Hotspot - Aruba Controller
Im Folgenden wird beschrieben, wie Sie einen Aruba Controller (OS 8.10) konfigurieren und mit unserer Hotspot-Lösung SyCes verbinden.
Hinweis: Dies ist eine frühe Version der SyCes2-Software. Weitere Softwarefunktionen und die Unterstützung weiterer Hotspot-Router-Geräte werden derzeit entwickelt. Diese Seite dokumentiert den aktuellen Status und die Einsatzmöglichkeiten von Aruba Controllern für die Hotspot-Lösung SyCes.
Voraussetzungen
Um den Router zu konfigurieren, benötigen Sie Administratorzugriff. Dieses Tutorial zeigt die Konfiguration über die GUI-Weboberfläche. Alternativ kann die Konfiguration auch über die CLI erfolgen.
Für die Konfiguration benötigen Sie außerdem Informationen zur RADIUS-IP und zum Secret des neuen Systems. Diese Informationen können aus SyCes ausgelesen werden.
Um den Router für SyCes einzurichten, muss der Standort, der diesen Router verwaltet, in der neuen Datenbank vorhanden sein. Für die Konfiguration werden die Mandanten-ID und der für den Standort erstellte Token benötigt. Zum Auslesen dieser Werte benötigen Sie gültige Zugangsdaten für SyCes.
Navigieren Sie zur Standortseite des entsprechenden Mandanten und klicken Sie auf der Karte Angaben zum Standort neben dem Token im Feld Token auf die Kopieren-Schaltfläche.
Schritt 1: Netzwerk einrichten und Softwareversion prüfen
Bevor Sie fortfahren, stellen Sie sicher, dass der Aruba Controller und mindestens ein angeschlossener Access Point ordnungsgemäß im Netzwerk eingerichtet sind. Der Aruba Controller sollte über ein konfiguriertes VMGateway erreichbar sein.
Hinweis: Dieses Tutorial behandelt nicht die grundlegende Netzwerkeinrichtung. Wenden Sie sich bitte an das Netzwerkteam, um sicherzustellen, dass die erforderliche Infrastruktur vorhanden ist und ordnungsgemäß funktioniert.
Sobald das Netzwerk bereit ist, prüfen Sie die Softwareversion des VMGateways. Navigieren Sie zu:
Maintenance > Software Management
Diese Anleitung basiert auf ArubaOS Version 8.10.0.13. Wenn Sie eine andere Version verwenden, beachten Sie, dass die Konfigurationsschritte oder das GUI-Layout leicht abweichen können. Wir empfehlen ein Update auf die neueste stabile Version, um die Kompatibilität mit den hier bereitgestellten Anweisungen sicherzustellen.
Schritt 2: RADIUS-Server und Servergruppe einrichten
In diesem Schritt konfigurieren Sie den RADIUS-Server und weisen ihn zur Authentifizierung einer Servergruppe zu.
Für diese Konfiguration benötigen Sie die RADIUS-IP und das RADIUS-Secret. Beide finden Sie bei SyCes.
Navigieren Sie zum Reiter Configuration > Authentication.
Den RADIUS-Server hinzufügen
- Klicken Sie unter All Servers auf das Symbol ➕, um einen neuen Servereintrag zu erstellen.
- Geben Sie einen aussagekräftigen Namen ein.
- Wählen Sie als Type RADIUS aus.
- Geben Sie die
RADIUS-IPdes SyCes2-Servers ein.
Nachdem Sie den Eintrag erstellt haben:
- Wählen Sie ihn in der Liste All Servers aus.
- Geben Sie das RADIUS-Secret in die Felder Shared key und Retype key ein.

Servergruppe erstellen und zuweisen
- Suchen Sie im Reiter Authentication den Bereich Server groups.
- Klicken Sie auf das Symbol ➕, um eine neue Servergruppe zu erstellen und ihr einen aussagekräftigen Namen zu geben.

- Wählen Sie die neu erstellte Gruppe aus der Liste Server Groups aus.
- Klicken Sie auf das untere Symbol ➕, wählen Sie Add existing server und wählen Sie den zuvor konfigurierten RADIUS-Server aus.

Schritt 3: WLAN einrichten
In diesem Schritt erstellen und konfigurieren Sie ein neues WLAN für den Gastzugriff über eine benutzerdefinierte Seite im lokalen Captive Portal des Aruba Controllers.
Beispiel-HTML-Code für verschiedene benutzerdefinierte Anmeldeseiten finden Sie am Ende dieses Schritts.
Neues WLAN erstellen
- Navigieren Sie zu
Configuration > WLANs. - Klicken Sie auf ➕, um ein neues WLAN zu erstellen.
Allgemeine Einstellungen
Im Reiter General: - Geben Sie einen aussagekräftigen Namen für das WLAN ein. - Legen Sie Primary Usage auf Guest fest. - Wählen Sie unter Broadcast on: den/die Access Point(s) aus, an dem/denen das WLAN verfügbar sein soll.
VLAN-Zuweisung
Weisen Sie im Reiter VLANs das WLAN dem Ziel-VLAN für Ihr Gastnetzwerk zu.
Security & Captive Portal
Im Reiter Security: 1. Wählen Sie Internal Captive Portal with authentication. 2. Wählen Sie Custom HTML als Anmeldeseitentyp. 3. Laden Sie Ihre HTML-Datei über die Schaltfläche Browse hoch.
Beispiel-HTML-Code für benutzerdefinierte Anmeldeseiten finden Sie weiter unten im Abschnitt Benutzerdefinierte Anmeldeseite.
Benutzerdefinierte Anmeldeseite
Nachfolgend finden Sie Beispielvorlagen für benutzerdefinierte Captive-Portal-Seiten. Anmeldeseiten in englischer Sprache finden Sie unter New Hotspot - Aruba Controller.
Dieser Code kann zur Gewährleistung der Funktionalität kopiert werden. Folgende Felder müssen jedoch noch ersetzt werden:
<tenant_id>(Ersetzen Sie dies durch die ID Ihres Mandanten in SyCes.)<location_identification_token>(Ersetzen Sie dies durch dasTokendes konfiguriertenStandortsin SyCes mit dem RoutertypAruba Controller. Dies ist für die FunktionAnonym registrierenerforderlich)const tenant_domain = "";(Legen Sie die Variable fest, um die automatische Anfügung der Mandantendomäne an den Benutzernamen vor der Anmeldung zu aktivieren. Dadurch wird die Anmeldung mit "account_name" anstelle von "account_name@tenant_domain" aktiviert. Die Domäne kann von der Mandantenseite in SyCes kopiert werden.)
<!DOCTYPE html>
<html lang="de">
<head>
<title>SyCes® - Hotspot</title>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="https://backend.syces.de/static/login/css/styles.css">
</head>
<body>
<div class="left">
<img
src="https://backend.syces.de/static/login/img/logo2.png"
alt="SyCes-Logo"
width="500"
height="139"
class="img"
/>
</div>
<div class="center block"></div>
<p></p>
<div class="center window">
<h1>Benutzer-Login</h1>
<form id="default_login" action="/cgi-bin/login" method="post">
<input name="email" type="hidden" value="" />
<input name="cmd" type="hidden" value="authenticate" />
<table>
<tr>
<td><label for="ar_un">Benutzername:</label></td>
<td><input name="user" type="text" id="ar_un" /></td>
</tr>
<tr>
<td><label for="ar_pd">Passwort:</label></td>
<td><input name="password" type="password" id="ar_pd" /></td>
</tr>
<tr>
<td>
<label for="tos_check_login"
>Ich akzeptiere die
<a href="https://backend.syces.de/login/<tenant_id>/tos/"
>Geschäftsbedingungen</a
>:</label
>
</td>
<td>
<label class="checkbox">
<input
type="checkbox"
name="tos"
id="tos_check_login"
onclick="handleTOSClick(this)"
/>
<span class="checkmark"></span>
</label>
</td>
</tr>
<tr>
<td></td>
<td>
<button
class="primary"
type="submit"
id="submit_btn_login"
disabled
>
Absenden
</button>
</td>
</tr>
</table>
</form>
</div>
<p></p>
<div class="center window">
<h1>Anonym registrieren</h1>
<form id="anon_login">
<table>
<tr>
<td>
<label for="tos_check_reg">
Ich akzeptiere die
<a href="https://backend.syces.de/login/<tenant_id>/tos/"
>Geschäftsbedingungen</a
>:
</label>
</td>
<td>
<label class="checkbox">
<input
type="checkbox"
name="tos"
id="tos_check_reg"
onclick="handleTOSClick(this)"
/>
<span class="checkmark"></span>
</label>
</td>
</tr>
<tr>
<td></td>
<td>
<button
class="primary"
type="submit"
id="submit_btn_reg"
disabled
>
Absenden
</button>
</td>
</tr>
</table>
</form>
</div>
</body>
<script>
const url =
"https://backend.syces.de/login/token_login/<location_identification_token>/";
const anon_form = document.getElementById("anon_login");
const default_form = document.getElementById("default_login");
const tos_checkbox_reg = document.getElementById("tos_check_reg");
const tos_checkbox_login = document.getElementById("tos_check_login");
const submit_button_reg = document.getElementById("submit_btn_reg");
const submit_button_login = document.getElementById("submit_btn_login");
function handleTOSClick(cb) {
if (cb.checked === true) {
tos_checkbox_reg.checked = true;
tos_checkbox_login.checked = true;
submit_button_reg.disabled = false;
submit_button_login.disabled = false;
} else {
tos_checkbox_reg.checked = false;
tos_checkbox_login.checked = false;
submit_button_reg.disabled = true;
submit_button_login.disabled = true;
}
}
function sendRequest() {
fetch(url)
.then((response) => response.json())
.then((data) => {
let field_username = document.getElementById("ar_un");
let field_password = document.getElementById("ar_pd");
field_username.value = data.login_name;
field_password.value = data.password;
default_form.submit();
})
.catch((error) => console.error(error));
}
function appendDomainIfMissing() {
const tenant_domain = "";
let form_input_user = document.getElementById("ar_un");
let username = form_input_user.value;
if (
tenant_domain !== "" &&
!username.includes("@") &&
!username.endsWith("@" + tenant_domain)
) {
form_input_user.value = username + "@" + tenant_domain;
}
}
anon_form.addEventListener("submit", function (e) {
e.preventDefault();
sendRequest();
});
default_form.addEventListener("submit", function (e) {
appendDomainIfMissing();
});
</script>
</html>
<!DOCTYPE html>
<html lang="de">
<head>
<title>SyCes® - Hotspot</title>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="https://backend.syces.de/static/login/css/styles.css">
</head>
<body>
<div class="left">
<img
src="https://backend.syces.de/static/login/img/logo2.png"
alt="SyCes-Logo"
width="500"
height="139"
class="img"
/>
</div>
<div class="center block"></div>
<p></p>
<div class="center window">
<h1>Benutzer-Login</h1>
<form id="default_login" action="/cgi-bin/login" method="post">
<input name="email" type="hidden" value="" />
<input name="cmd" type="hidden" value="authenticate" />
<table>
<tr>
<td><label for="ar_un">Benutzername:</label></td>
<td><input name="user" type="text" id="ar_un" /></td>
</tr>
<tr>
<td><label for="ar_pd">Passwort:</label></td>
<td><input name="password" type="password" id="ar_pd" /></td>
</tr>
<tr>
<td>
<label for="tos_check_login"
>Ich akzeptiere die
<a href="https://backend.syces.de/login/<tenant_id>/tos/"
>Geschäftsbedingungen</a
>:</label
>
</td>
<td>
<label class="checkbox">
<input
type="checkbox"
name="tos"
id="tos_check_login"
onclick="handleTOSClick(this)"
/>
<span class="checkmark"></span>
</label>
</td>
</tr>
<tr>
<td></td>
<td>
<button
class="primary"
type="submit"
id="submit_btn_login"
disabled
>
Absenden
</button>
</td>
</tr>
</table>
</form>
</div>
</body>
<script>
const default_form = document.getElementById("default_login");
const tos_checkbox_login = document.getElementById("tos_check_login");
const submit_button_login = document.getElementById("submit_btn_login");
function handleTOSClick(cb) {
if (cb.checked === true) {
tos_checkbox_login.checked = true;
submit_button_login.disabled = false;
} else {
tos_checkbox_login.checked = false;
submit_button_login.disabled = true;
}
}
function appendDomainIfMissing() {
const tenant_domain = "";
let form_input_user = document.getElementById("ar_un");
let username = form_input_user.value;
if (
tenant_domain !== "" &&
!username.includes("@") &&
!username.endsWith("@" + tenant_domain)
) {
form_input_user.value = username + "@" + tenant_domain;
}
}
default_form.addEventListener("submit", function (e) {
appendDomainIfMissing();
});
</script>
</html>
<!DOCTYPE html>
<html lang="de">
<head>
<title>SyCes® - Hotspot</title>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="https://backend.syces.de/static/login/css/styles.css">
</head>
<body>
<div class="left">
<img
src="https://backend.syces.de/static/login/img/logo2.png"
alt="SyCes-Logo"
width="500"
height="139"
class="img"
/>
</div>
<div class="center block"></div>
<p></p>
<div class="center window" style="display:none">
<h1>Benutzer-Login</h1>
<form
id="default_login"
action="/cgi-bin/login"
method="post"
style="display:none"
>
<input name="email" type="hidden" value="" />
<input name="cmd" type="hidden" value="authenticate" />
<table>
<tr>
<td><label for="ar_un">Benutzername:</label></td>
<td><input name="user" type="text" id="ar_un" /></td>
</tr>
<tr>
<td><label for="ar_pd">Passwort:</label></td>
<td><input name="password" type="password" id="ar_pd" /></td>
</tr>
<tr>
<td>
<label for="tos_check_login"
>Ich akzeptiere die
<a href="https://backend.syces.de/login/<tenant_id>/tos/"
>Geschäftsbedingungen</a
>:</label
>
</td>
<td>
<label class="checkbox">
<input
type="checkbox"
name="tos"
id="tos_check_login"
onclick="handleTOSClick(this)"
/>
<span class="checkmark"></span>
</label>
</td>
</tr>
<tr>
<td></td>
<td>
<button
class="primary"
type="submit"
id="submit_btn_login"
disabled
>
Absenden
</button>
</td>
</tr>
</table>
</form>
</div>
<p></p>
<div class="center window">
<h1>Anonym registrieren</h1>
<form id="anon_login">
<table>
<tr>
<td>
<label for="tos_check_reg">
Ich akzeptiere die
<a href="https://backend.syces.de/login/<tenant_id>/tos/"
>Geschäftsbedingungen</a
>:
</label>
</td>
<td>
<label class="checkbox">
<input
type="checkbox"
name="tos"
id="tos_check_reg"
onclick="handleTOSClick(this)"
/>
<span class="checkmark"></span>
</label>
</td>
</tr>
<tr>
<td></td>
<td>
<button
class="primary"
type="submit"
id="submit_btn_reg"
disabled
>
Absenden
</button>
</td>
</tr>
</table>
</form>
</div>
</body>
<script>
const url =
"https://backend.syces.de/login/token_login/<location_identification_token>/";
const anon_form = document.getElementById("anon_login");
const default_form = document.getElementById("default_login");
const tos_checkbox_reg = document.getElementById("tos_check_reg");
const tos_checkbox_login = document.getElementById("tos_check_login");
const submit_button_reg = document.getElementById("submit_btn_reg");
const submit_button_login = document.getElementById("submit_btn_login");
function handleTOSClick(cb) {
if (cb.checked === true) {
tos_checkbox_reg.checked = true;
tos_checkbox_login.checked = true;
submit_button_reg.disabled = false;
submit_button_login.disabled = false;
} else {
tos_checkbox_reg.checked = false;
tos_checkbox_login.checked = false;
submit_button_reg.disabled = true;
submit_button_login.disabled = true;
}
}
function sendRequest() {
fetch(url)
.then((response) => response.json())
.then((data) => {
let field_username = document.getElementById("ar_un");
let field_password = document.getElementById("ar_pd");
field_username.value = data.login_name;
field_password.value = data.password;
default_form.submit();
})
.catch((error) => console.error(error));
}
anon_form.addEventListener("submit", function (e) {
e.preventDefault();
sendRequest();
});
</script>
</html>
Schritt 4: Zieldomäne für Backend zulassen
Damit die benutzerdefinierten HTML-Anmeldeseiten (aus dem vorherigen Schritt) mit dem SyCes2-Backend kommunizieren können, müssen Sie die Backend-Domäne über den Aruba Controller zulassen.
Netzwerkalias erstellen
- Navigieren Sie zu
Roles & Policies > Aliases. - Klicken Sie auf das Symbol ➕, um einen neuen Netzwerkalias zu erstellen.
Alias konfigurieren
- Geben Sie dem Alias einen aussagekräftigen Namen (z.B.
SyCes2Backend). - Klicken Sie im neu geöffneten Bereich auf das Symbol ➕, um ein Ziel (
Destination) hinzuzufügen.
Backend-Domäne hinzufügen
Im Fenster Add New Destination:
- Legen Sie den Rule type: fest: Name.
- Geben Sie die Domäne des Backend-Servers ein:
Und speichern Sie die Konfiguration.
Schritt 5: Einstellungen den Authentifizierungsprofilen zuweisen
In diesem Schritt verknüpfen Sie die zuvor erstellte RADIUS-Servergruppe und den Netzwerkalias mit den von Ihrem WLAN verwendeten Authentifizierungsprofilen. Dadurch wird Folgendes sichergestellt:
- RADIUS-Authentifizierungsanfragen werden an die richtige Servergruppe gesendet.
- Die SyCes2-Backend-Domäne ist in der Zulassungsliste des Captive Portals enthalten.
AAA-Profil konfigurieren
- Navigieren Sie zu
Authentification > AAA Profile. - Öffnen Sie das Ihrem WLAN zugewiesene AAA Profile (erstellt in Schritt 3).
- Wählen Sie im Feld RADIUS Accounting Server Group die zuvor erstellte Servergruppe aus.
Captive-Portal-Authentifizierung konfigurieren
- Navigieren Sie zu
Authentication > L3 Authentication. - Öffnen Sie das Ihrem WLAN zugewiesene Captive Portal Authentication Profil.

- Scrollen Sie nach unten zum Abschnitt Allow List.
- Klicken Sie auf das Symbol ➕, um einen neuen Eintrag in der Zulassungsliste zu erstellen.
- Wählen Sie den Network alias aus, den Sie in Schritt 4 erstellt haben.
Servergruppe zuweisen
Abschließend:
- Suchen Sie im Captive-Portal-Authentifizierungsprofil die Einstellung
Server Group. - Wählen Sie die zuvor erstellte Servergruppe aus.
Schritt 6: Änderungen ausrollen
Damit die Konfiguration wirksam wird, müssen Sie die Änderungen über die Oberfläche Pending Changes bereitstellen.
- Öffnen Sie
Pending Changes. - Wählen Sie den Controller aus, auf dem Sie das neu konfigurierte WLAN-Netzwerk bereitstellen möchten.
- Bestätigen Sie die Änderungen und stellen Sie sie diese per deploy the changes bereit.
Schritt 7: Anmeldung testen
Sobald die Konfiguration bereitgestellt ist, verbinden Sie ein Testgerät mit dem neu erstellten WLAN.
- Das Gerät sollte automatisch das benutzerdefinierte Captive Portal öffnen, das Sie in Schritt 3 hochgeladen haben.
- Überprüfen Sie, ob alle Hotspot-Funktionen wie erwartet funktionieren, einschließlich:
- Anmeldung über alle konfigurierten Authentifizierungsmethoden
- Registrierung oder Self-Service-Optionen (falls aktiviert)
- Styling und SyCes2-Logo im Portal
Tipp: Testen Sie mit mehreren Geräten und Browsern, um die vollständige Kompatibilität sicherzustellen.
Problembehebung
Sollten bei der Konfiguration Ihres Routers Probleme oder unerwartetes Verhalten auftreten, kontaktieren Sie uns bitte über tsp-ms-dev@concat.de.










