Verwenden eines externen Portals für den Gastzugriff
Aktivieren Sie ein externes Portal, wenn Sie möchten, dass Gäste zu einem Anmeldeportal wechseln, das Ihre Webentwickler auf Ihrer eigenen Website entworfen haben.
Ein externes Portal ist eine Webseite, die Ihre WLAN-Benutzer sehen, nachdem sie Ihre SSID ausgewählt haben. Sie können beispielsweise Gäste zur Startseite Ihres Unternehmens oder zu einem Anmeldeportal senden, das Ihre Webentwickler speziell für Ihre Organisation eingerichtet haben.
Für zusätzliche Sicherheit können Sie autorisierte Benutzer, zulässige Subnetze und zulässige Hostnamen angeben. Sie können auch eine Liste der zu blockierenden Hostnamen eingeben.
- Navigieren Sie zum WLAN.
Hinweis:
-
Wenn sich das WLAN in einer WLAN Vorlage befindet, wählen Sie Organisation > Wireless | WLAN-Vorlagen, klicken Sie auf die Vorlage, und klicken Sie dann auf das WLAN.
-
Wählen Sie für eine WLAN auf Standortebene Site > Wireless | WLANs, und klicken Sie dann auf das WLAN.
-
- Klicken Sie im Fenster WLAN bearbeiten unter Gastportal auf An externes Portal weiterleiten.
- (Optional) Klicken Sie auf die Schaltfläche Gastautorisierung bearbeiten , wenn Sie den Zugriff auf bestimmte Benutzer beschränken möchten. Führen Sie dann die folgenden Schritte aus:
- Klicken Sie im Fenster Autorisierte Gäste auf Hinzufügen.
- Geben Sie im Fenster "Gast autorisieren" die MAC-Adresse des Gastes (erforderlich), optionale Benutzerinformationen und den Zeitraum ein, in dem der Benutzer autorisiert bleibt.
Hinweis:Mit der Option Client suchen können Sie nach einem Client suchen, der bereits mit dem WLAN verbunden ist.
- Klicken Sie unten im Fenster "Gast autorisieren" auf Autorisieren .
- Wiederholen Sie diese Schritte, um der Liste weitere Gäste hinzuzufügen.
- Klicken Sie im Fenster Autorisierte Gäste auf Hinzufügen.
- Geben Sie die Portal-URL ein, beginnend mit http:// oder https://.
Hinweis:
Verwenden Sie die anderen Felder, um den Zugriff zu optimieren. Lassen Sie beispielsweise nur bestimmte Subnetze oder Hostnamen zu.
- Aktivieren oder deaktivieren Sie das Kontrollkästchen Gast-/externes Portal bei Ausnahme umgehen .
Wenn diese Funktion ausgewählt ist, versucht jeder Access Point, das Portal oder den IdP zu erreichen. Wenn er jedoch nicht erreichbar ist, autorisiert der AP die Gäste automatisch, sich mit dem WLAN zu verbinden.
- Klicken Sie unten im Fenster "WLAN bearbeiten" auf "Speichern ".
Verwenden Sie PHP- und Readme-Dateien, um Ihr externes Portal zu erstellen
- Erstellen Sie Ihr externes Portal, indem Sie sich auf die folgenden PHP-Beispieldateien und Readme-Informationen beziehen.
index.php<?php /* These parameters are sent by Mist on the 302 redirect to this portal page: wlan_id - WLAN object's UUID ap_mac - MAC address of the AP client_mac - MAC address of the client device url - Originally requested url by the client, ie: http://www.mist.com ap_name - Name of the AP site_name - Name of the Site If you want to send the guest to a content page after authorization, configure the $url instead of using the valued that is passed as a parameter. */ $wlan_id = $_GET['wlan_id']; $ap_mac = $_GET['ap_mac']; $client_mac = $_GET['client_mac']; $url = $_GET['url']; $ap_name = $_GET['ap_name']; $site_name = $_GET['site_name']; ?> <html> <body> <form action="authme.php" method="post"> <input type="hidden" name="wlan_id" value="<?php echo($wlan_id) ?>" /> <input type="hidden" name="ap_mac" value="<?php echo($ap_mac) ?>" /> <input type="hidden" name="client_mac" value="<?php echo($client_mac) ?>" /> <input type="hidden" name="url" value="<?php echo($url) ?>" /> <input type="hidden" name="ap_name" value="<?php echo($ap_name) ?>" /> <input type="hidden" name="site_name" value="<?php echo($site_name) ?>" /> <table> <tr> <td><b>Your Full Name</b></td> <td><input type="text" name="name" /></td> </tr> <tr> <td><b>Your Email Address</b></td> <td><input type="text" name="email" /></td> </tr> <tr> <td><input type="submit" value="Login" /></td> </tr> </table> </form> </body> </html>
authme.php<?php $secret = ''; // WLAN API Key, obtained from the Mist Web GUI after creating the WLAN $wlan_id = $_POST['wlan_id']; $ap_mac = $_POST['ap_mac']; $client_mac = $_POST['client_mac']; $url = $_POST['url']; $ap_name = $_POST['ap_name']; $site_name = $_POST['site_name']; $authorize_min = 525600; // Duration (in minutes) the guest MAC address is authorized before they are redirected back to the portal page) $context = sprintf('%s/%s/%s/%d/%d/%d/%d', $wlan_id, $ap_mac, $client_mac, $authorize_min, ); $token = urlencode(base64_encode($context)); // The below portal fields are passed back to Mist and shown in the Guest Portal Information $name = $_POST['name']; $email = $_POST['email']; $field1 = 'Whatever you want Custom field 1 to be'; $field2 = 'Whatever you want Custom field 2 to be'; $field3 = 'Whatever you want Custom field 3 to be'; $field4 = 'Whatever you want Custom field 4 to be'; $forward = urlencode($url); // URL the user is forwarded to after authorization $extra = '&forward=' . $forward; $extra .= '&name=' . urlencode("$name"); $extra .= '&field1=' . urlencode("$field1"); $extra .= '&field2=' . urlencode("$field2"); $extra .= '&field3=' . urlencode("$field3"); $extra .= '&field4=' . urlencode("$field4"); $extra .= '&email=' . urlencode("$email"); $expires = time() + 120; // The time until which the authorization URL is valid $payload = sprintf('expires=%d&token=%s%s', $expires, $token, $extra); $signature = urlencode(base64_encode(hash_hmac('sha1', $payload, $secret, true))); $final_url = sprintf('http://portal.mist.com/authorize?signature=%s&%s', $signature, $payload); /* Debug code used for testing purposes only If set to true, display the variable details without authorizing the guest in the Mist cloud */ $debugging = false; if ($debugging) { header('Content-Type: text/plain'); echo sprintf('token : urlencode(base64(%s))', $context) . PHP_EOL; echo sprintf(' %s', $token) . PHP_EOL; echo sprintf('foward : %s', $url) . PHP_EOL; echo sprintf(' %s', $foward) . PHP_EOL; echo sprintf('payload-to-sign: %s', $payload) . PHP_EOL; echo sprintf('signature : %s', $signature) . PHP_EOL; echo sprintf('URL : %s', $final_url) . PHP_EOL; echo sprintf('client_mac : %s', $client_mac) . PHP_EOL; echo sprintf('ap_mac : %s', $ap_mac) . PHP_EOL; echo sprintf('ap_name : %s', $ap_name) . PHP_EOL; echo sprintf('wlan_id : %s', $wlan_id) . PHP_EOL; echo sprintf('site_name : %s', $site_name) . PHP_EOL; echo sprintf('name : %s', $name) . PHP_EOL; echo sprintf('email : %s', $email) . PHP_EOL; echo sprintf('field1 : %s', $field1) . PHP_EOL; echo sprintf('field2 : %s', $field2) . PHP_EOL; echo sprintf('field3 : %s', $field3) . PHP_EOL; echo sprintf('field4 : %s', $field4) . PHP_EOL; } else { // Guest is redirected to the Mist portal for authorization. If successful, the Mist portal will then redirect the guest to the $url header('Location: ' . $final_url); } ?>Readme-InformationenThis sample code shows how to use the PHP POST method to pass the below parameter values from the landing page (index.php) to the authorization page (authme.php). The authorization page will also request the user to provide some information. Authorization HOW-TOs ===================== Syntax: signature=<signature>&expires=<epoch-seconds>&token=<token>&forward=<forward> Note: Wired captive portal does not support this mechanism, please use the JWT based one. <forward>: url to forward the user to after authorization <token>: base64("wlan-id/ap-mac/client-mac/authorize_min/0/0/0") <signature>: base64(hmac_sha1(<secret>, "expires=...")) Example token : urlencode(base64("be22bba7-8e22-e1cf-5185-b880816fe2cf/5c5b35001234/d58f6bb4c9d8/480/0/0/0")) = YmUyMmJiYTctOGUyMi1lMWNmLTUxODUtYjg4MDgxNmZlMmNmLzVjNWIzNTAwMTIzNC9kNThmNmJiNGM5ZDgvNDgwLzAvMC8w expires : 1768587994 forward : urlencode("http://www.mist.com") http%3A%2F%2Fwww.mist.com%2F payload-to-sign: expires=1768587994&token=YmUyMmJiYTctOGUyMi1lMWNmLTUxODUtYjg4MDgxNmZlMmNmLzVjNWIzNTAwMTIzNC9kNThmNmJiNGM5ZDgvNDgwLzAvMC8w&forward=http%3A%2F%2Fwww.mist.com%2F secret : test-secret (only used by /authorize-test for testing purpose) signature : J7VJlf2Zlcs%2BOxhVxCf8hL0XYC0%3D final URL : http://portal.mist.com/authorize-test?signature=J7VJlf2Zlcs%2BOxhVxCf8hL0XYC0%3D&expires=1768587994&token=YmUyMmJiYTctOGUyMi1lMWNmLTUxODUtYjg4MDgxNmZlMmNmLzVjNWIzNTAwMTIzNC9kNThmNmJiNGM5ZDgvNDgwLzAvMC8w&forward=http%3A%2F%2Fwww.mist.com%2F Alternatively, you can use JWT tokens: Syntax: jwt=<jwt token> Payload: { "ap_mac": "5c5b35001234", "wlan_id": "be22bba7-8e22-e1cf-5185-b880816fe2cf", "client_mac": "d58f6bb4c9d8", "minutes": 480, "expires": 1768587994, "forward": "http://www.mist.com", "authorize_only": false } Notes: authorize_only: if true and authorization is successful, 200 OK will be returned instead of 302 Redirect the user to the `forward` URL Example ``` import jwt secret = "test-secret" payload = { "ap_mac": "5c5b35001234", "wlan_id": "be22bba7-8e22-e1cf-5185-b880816fe2cf", # only for _wireless_ captive portal "site_id": "ce22bba7-8e22-e1cf-5185-b880816fe2ce", # only for _wired_ captive portal" "port_name": "eth0", # only for _wired_ captive portal" "client_mac": "d58f6bb4c9d8", "minutes": 480, "expires": 1768587994, "forward": "http://www.mist.com", "authorize_only": False } encoded_jwt = jwt.encode(payload, secret, algorithm='HS256') ``` encoded_jwt: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVfb25seSI6ZmFsc2UsImV4cGlyZXMiOjE3Njg1ODc5OTQsImFwX21hYyI6IjVjNWIzNTAwMTIzNCIsImZvcndhcmQiOiJodHRwOi8vd3d3Lm1pc3QuY29tIiwiY2xpZW50X21hYyI6ImQ1OGY2YmI0YzlkOCIsIm1pbnV0ZXMiOjQ4MCwid2xhbl9pZCI6ImJlMjJiYmE3LThlMjItZTFjZi01MTg1LWI4ODA4MTZmZTJjZiJ9.msBloHe05XzbzaMEqjsi8XSNWa_3uc--4wucKz3dQGk final URL : http://portal.mist.com/authorize-test?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVfb25seSI6ZmFsc2UsImV4cGlyZXMiOjE3Njg1ODc5OTQsImFwX21hYyI6IjVjNWIzNTAwMTIzNCIsImZvcndhcmQiOiJodHRwOi8vd3d3Lm1pc3QuY29tIiwiY2xpZW50X21hYyI6ImQ1OGY2YmI0YzlkOCIsIm1pbnV0ZXMiOjQ4MCwid2xhbl9pZCI6ImJlMjJiYmE3LThlMjItZTFjZi01MTg1LWI4ODA4MTZmZTJjZiJ9.msBloHe05XzbzaMEqjsi8XSNWa_3uc--4wucKz3dQGkHinweis:Ersetzen Sie
portal.mist.comsie durch die entsprechende URL des Gast-WLAN-Portals, die auf der Cloud-Instanz basiert, in der Ihre Mist Systems Organisation erstellt wurde. Die URL des WLAN-Gastportals für Ihre Region finden Sie in den Informationen zu Juniper Mist Cloud-IP-Adressen und -Ports im Juniper Mist Systems Management Guide. - Um den Wert zu erhalten, den Sie in
$secretauth.php benötigen, öffnen Sie das Fenster WLAN bearbeiten erneut, und kopieren Sie das API-Geheimnis. - Konfigurieren Sie Ihre Autorisierungsseite (authme.php), um das Juniper Mist Systems Back-End mit den erforderlichen Abfragezeichenfolgenparametern aufzurufen:
?signature=signature&expires=expires&token=token&optional-
expires – Der Zeitstempel der Epoche, bis zu dem die Autorisierungs-URL gültig ist.
-
Zum Beispiel: 1768587994 (Dies bedeutet, dass die Autorisierungs-URL am 16. Januar 2026 um 18:26:34 Uhr UTC abläuft.)
-
-
token – Eine Base64-Zeichenfolge im Format: wlan_id/ap_mac/client_mac/authorize_min/0/0/0
-
Zum Beispiel: be22bba7-8e22-e1cf-5185-b880816fe2cf/5c5b35001234/d58f6bb4c9d8/480/0/0/0
-
-
signature – Eine Base64-Zeichenfolge mit Hashwerten, die sha1 als Hashing-Algorithmus und das API-Geheimnis des Gast-WLAN als Schlüssel verwendet. Dies hätte das folgende Format: expires=expires&token=token&optional
-
Zum Beispiel: J7VJlf2Zlcs%2BOxhVxCf8hL0XYC0%3D
-
-
optional – Die optionalen Gastdetails und die URL, an die der Benutzer nach der Autorisierung weitergeleitet wird, im folgenden Format: forward=url&name=name&email=email&company=company&field1=field1=field1&field2=field2&field3=field3&field4=field4
Hinweis: Stellen Sie sicher, dass alle Parameterwerte als base64 übergeben werden.
-
Beispiel: forward=http%3A%2F%2Fwww.mist.com%2F
-
-
- Konfigurieren Sie Ihre Autorisierungsseite so, dass Juniper Mist Systems zur Gastautorisierung aufgerufen wird. Die endgültige Autorisierungs-URL würde in etwa so aussehen:
http://portal.mist.com/authorize?signature=J7VJlf2Zlcs%2BOxhVxCf8hL0XYC0%3D&expires=1768587994&token=YmUyMmJiYTctOGUyMi1lMWNmLTUxODUtYjg4MDgxNmZlMmNmLzVjNWIzNTAwMTIzNC9kNThmNmJiNGM5ZDgvNDgwLzAvMC8w&forward=http%3A%2F%2Fwww.mist.com%2F - Testen Sie das externe Captive Portal, indem Sie ein Gerät anschließen und versuchen, sich zu authentifizieren.
Das Gerät sollte zur Autorisierung an das Portal von Juniper Mist Systems umgeleitet werden. Wenn die Authentifizierung erfolgreich ist, wird der Benutzer zu der URL umgeleitet, die in Ihrem Code für das externe Captive Portal definiert ist.
Hinweis:Verwendung
/authorizefür das Liveportal. Zu Testzwecken können/authorize-testSie verwenden, was die Dummy-Beispielwerte erfordert, wie sie in den Readme-Informationen bereitgestellt werden.