Plantilla de código fuente para portal web externo (Controller 3.1.4 o superior)
Adecuado para el controlador Omada 3.1.4 a 3.2.17.
Para Omada Controller 3.0.5 o inferior, consulte FAQ916
Para Omada Controller 4.1.5 o superior, consulte FAQ2912
Este documento describe los requisitos al establecer un servidor de portal web externo. En Omada Controller, el portal web externo solo se puede utilizar cuando el tipo de autenticación del portal es servidor Radius externo. Para saber cómo configurar la autenticación del servidor Radius externo, consulte la pregunta frecuente 896 (sección 4 del paso 2).
La siguiente imagen muestra el flujo de trabajo entre el cliente inalámbrico, EAP, el controlador Omada, el portal web externo y el servidor Radius. Le ayudará a comprender mejor los requisitos para establecer un servidor de portal web externo.
1. El cliente inalámbrico está conectado al SSID de la red inalámbrica e intenta acceder a Internet. El dispositivo EAP intercepta la solicitud HTTP del cliente y luego la redirige al controlador Omada. (Paso 1 y Paso 2)
2.A continuación, el controlador Omada redirige la solicitud del cliente a la página del portal externo respondiendo al cliente una respuesta HTTP con el código de estado 302 Found. (Paso 3 y Paso 4)
3.El cliente envía una solicitud HTTP GET al portal web externo con el parámetro "?target=target_controller_ip&targetPort=target_controller_port&clientMac=client_mac&clientIp=client_ip&raidusServerIp= radius_server_ip&ap=ap_mac&ssid=ssid&radioId=radio_id(0 para radio 2.4G, 1 para radio 5G)&redirectUrl=redirecturl(si no estableció la URL de redireccionamiento después de que los clientes inalámbricos pasaran la autenticación del portal, la URL de redireccionamiento predeterminada depende de los clientes inalámbricos)".
por ejemplo, "http://172.30.30.113?target=172.30.30.113&targetPort=8088&clientMac=F8-1E-DF-AA-AA-AA&clientIP=172.30.30.103&raidusServerIp=172.30.30.120&ap=AC-84-C6-BB-BB-BB&ssid=eap_test&radioId=1&redirectUrl=https%3A%2F%2Fwww.tp-link.com" (paso 5)
4. El servidor del portal web externo debe poder obtener el valor de los parámetros clientMac, clientIp, ap, ssid, radioId, redirectUrl. A continuación, el servidor del portal web externo debe devolver una página con un formulario. Este formulario recopilará la información de nombre de usuario, contraseña, clientMac, clientIp, ap, ssid, radioId, redirectUrl
<form id="form" method="get"> (El controlador 3.1.13 o superior admite method="post")
<div><span>username:</span><input type="text" id="username" name="username"/> </div>
<div><span>password:</span><input type="password" id="password" name="password"/></div>
<div style="display:none"><input type="text" id="clientMac" name="clientMac" /></div>
<div style="display:none"><input name="clientIp" id="clientIp"/></div>
<div style="display:none"><input name="ap" id="ap"/></div>
<div style="display:none"><input name="ssid" id="ssid"/></div>
<div style="display:none"><input name="radioId" id="radioId"/></div>
<div style="display:none"><input name="redirectUrl" id="redirectUrl"/></div>
<button type="submit">submit</button>
</formulario>
Tenga en cuenta que el "id" de estos elementos en su formulario debe ser el mismo que el de este ejemplo. El método para obtener el valor de "nombre de usuario" y "contraseña" puede ser definido por usted mismo, pero el valor de "clientMac", "clientIp", "ap", "ssid", "radioId", "redirectUrl" debe obtenerse de la URL de la solicitud Http.
(Paso 6)
5. El cliente envía paquetes HTTP GET con el formulario a http://target_controller_ip:targetport/portal/radius/auth después de enviarlos. (Paso 7, el controlador 3.1.13 o superior admite method="post" )
6. El controlador Omada se comunica con el servidor radius para verificar el nombre de usuario y la contraseña. (Paso 8 y Paso 9)
7. Si se pasa la autenticación, es decir, se recibe Access-Accept del servidor radius, Omada Controller redirigirá una página de éxito incorporada o una página web predefinida de acuerdo con la configuración a los clientes. (Paso 10)
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<meta http-equiv="Tipo de contenido" content="texto/html; charset=utf-8"/>
<div id="errorHint" style="color:red"></div>
<form id="form" method="get"> (El controlador 3.1.13 o superior soporta method="post")
<div><span>username:</span><input type="text" id="username" name="username"/> </div>
<div><span>password:</span><input type="password" id="password" name="password"/></div>
<div style="display:none"><input type="text" id="clientMac" name="clientMac" /></div>
<div style="display:none"><input name="clientIp" id="clientIp"/></div>
<div style="display:none"><input name="ap" id="ap"/></div>
<div style="display:none"><input name="ssid" id="ssid"/></div>
<div style="display:none"><input name="radioId" id="radioId"/></div>
<div style="display:none"><input name="redirectUrl" id="redirectUrl"/></div>
<button type="submit">submit</button>
</formulario>
<script type="text/javascript">
var errorHint = getQueryString("errorHint")
if (errorHint != null){
document.getElementById("errorHint").innerHTML = errorHint.replace(new RegExp('\\+', 'g'), ' ');
}
var submitUrl = "http://" + getQueryString("objetivo") + ":" + getQueryString("targetPort") + "/portal/radius/auth";
document.getElementById("formulario").acción = submitUrl;
document.getElementById("clientMac").value = getQueryString("clientMac");
document.getElementById("clientIp").value = getQueryString("clientIp");
document.getElementById("ap").value = getQueryString("ap");
document.getElementById("ssid").value = getQueryString("ssid");
document.getElementById("radioId").value = getQueryString("radioId");
document.getElementById("redirectUrl").value = getQueryString("redirectUrl");
function getQueryString(nombre) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = ventana.ubicación.búsqueda.substr(1).coincidencia(reg);
if (r != null) return decodeURIComponent(r[2]); devuelve null;
}
</guión>