Use um portal externo para acesso aos convidados
Habilite um portal externo se quiser que os convidados acessem um portal de login que seus desenvolvedores web projetaram em seu próprio site.
Um portal externo é uma página web que seus usuários de WLAN veem depois de selecionarem seu SSID. Por exemplo, você pode enviar convidados para a página inicial da sua empresa ou um portal de login que seus desenvolvedores web criaram especificamente para a sua organização.
Para maior segurança, você pode especificar usuários autorizados, sub-redes permitidas e nomes de host permitidos. Você também pode inserir uma lista de nomes de host para bloquear.
- Navegue até a WLAN.
Nota:
-
Se a WLAN estiver em um modelo de WLAN, selecione Organização > Sem fio | Modelos de WLAN, clique no modelo e clique na WLAN.
-
Para uma WLAN no nível do site, selecione Site > Wireless | WLANs e clique na WLAN.
-
- Na janela Editar WLAN, em Portal de Convidados, clique em Encaminhar para o portal externo.
- (Opcional) Clique no botão Editar autorização para convidados se quiser limitar o acesso a usuários específicos. Em seguida, preencha essas etapas:
- Na janela Convidados Autorizados, clique em Adicionar.
- Na janela Autorize o Convidado, insira o endereço MAC do convidado (necessário), informações de usuário opcionais e o período em que o usuário permanecer autorizado.
Nota:
Você pode usar a opção Cliente de pesquisa para procurar um cliente que já esteja conectado à WLAN.
- Clique em Autorizar na parte inferior da janela De autorização para convidados.
- Repita essas etapas para adicionar mais convidados à lista.
- Na janela Convidados Autorizados, clique em Adicionar.
- Insira a URL do portal, começando por http:// ou https://.
Nota:
Use os outros campos para ajustar o acesso. Por exemplo, permita apenas determinadas sub-redes ou nomes de host.
- Selecione ou libere o portal externo/convidado do Bypass em caso de caixa de verificação de exceção.
Quando esse recurso é selecionado, cada ponto de acesso tentará entrar em contato com o portal ou IdP, mas se não for possível acessá-lo, o AP autorizará automaticamente os convidados a se conectarem à WLAN.
- Clique em Salvar na parte inferior da janela Editar WLAN.
Use arquivos PHP e Read-Me para criar seu portal externo
- Crie seu portal externo referindo-se aos seguintes arquivos PHP de amostra e informações de Read-Me.
<?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>
<?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); } ?>
InformaçõesThis 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--4wucKz3dQGk
Nota:Substitua
portal.mist.com
a URL do portal De Wi-Fi convidado apropriada com base na instância de nuvem em que sua organização Mist foi criada. Para procurar a URL do portal Wi-Fi convidado para sua região, veja os endereços IP da Mist Cloud e as informações de portas no Guia de gerenciamento da Juniper Mist. - Para obter o valor que você precisa em
$secret
auth.php, reabra a janela Edite WLAN e copie o Segredo da API. - Configure sua página de autorização (authme.php) para chamar o backend juniper Mist com os parâmetros de string de consulta necessários:
?signature=signature&expires=expires&token=token&optional
-
expira – O tempo de época até o qual a URL de autorização é válida.
-
Por exemplo: 1768587994 (isso significa que a URL de autorização expiraria em 16 de janeiro de 2026 às 6:26:34 PM UTC.)
-
-
formato de string base64: wlan_id/ap_mac/client_mac/authorize_min/0/0/0/0
-
Por exemplo: be22bba7-8e22-e1cf-5185-b880816fe2cf/5c5b35001234/d58f6bb4c9d8/480/0/0/0/0
-
-
assinatura — Uma série base64 de valores de hashed, usando sha1 como algoritmo de hashing e o Guest WLAN's API Secret como a chave. Este teria o seguinte formato: expires=expires&token=ficha e opcional
-
Por exemplo: J7VJlf2Zlcs%2BOxhVxCf8hL0XYC0%3D
-
-
opcional – Os detalhes opcionais para convidados e a URL para a qual o usuário é encaminhado após autorização, tendo o seguinte formato: forward=url&name=name&e-mail=e-mail&company=company&field1=field1&field2=field2&field3=field3&field4=field4
Observação: Garanta que todos os valores dos parâmetros sejam passados como base64.
-
Por exemplo: forward=http%3A%2F%2Fwww.mist.com%2F
-
-
- Configure sua página de autorização para chamar a Juniper Mist para obter autorização para convidados. A URL de autorização final seria mais ou menos assim:
http://portal.mist.com/authorize?signature=J7VJlf2Zlcs%2BOxhVxCf8hL0XYC0%3D&expires=1768587994&token=YmUyMmJiYTctOGUyMi1lMWNmLTUxODUtYjg4MDgxNmZlMmNmLzVjNWIzNTAwMTIzNC9kNThmNmJiNGM5ZDgvNDgwLzAvMC8w&forward=http%3A%2F%2Fwww.mist.com%2F
- Teste o portal cativo externo conectando um dispositivo e tentando autenticar.
O dispositivo deve ser redirecionado ao portal Juniper Mist para obter autorização. Se a autenticação for bem sucedida, o usuário será redirecionado para a URL conforme definido em seu código portal cativo externo.
Nota:Uso
/authorize
para o portal ao vivo. Para fins de teste, você pode usar/authorize-test
, o que requer os valores de exemplo falsos conforme fornecido nas informações do Read-Me.