외부 Portal Server 설정 요구 사항 (Omada Controller 4.1.5 이상)

사용자 응용 수요
수정일07-27-2020 09:34:19 AM 57343
본 내용은 다음 항목에 적용됩니다: 

Omada Controller V4.1.5 이상에 적합

Omada Controller 버전이 Omada Controller 4.1.5보다 낮으면  FAQ 2274를 참조하십시오.

Omada Controller 버전이 Omada Controller 2.6.0 미만인 경우 FAQ 928을 참조하십시오.

이 문서는 외부 포털 서버를 구축 할 때 요구 사항을 간략하게 설명합니다. 아래 그림은 무선 포털 클라이언트, EAP 장치, Omada 컨트롤러, 포털 서버 및 인증 서버 간의 데이터 흐름을 보여줍니다. 이는 외부 포털 서버 설정 요구 사항을보다 잘 이해하는 데 도움이됩니다.

  1. 무선 클라이언트가 포털 인증이 활성화 된 SSID에 연결되어 인터넷에 액세스하려고합니다. EAP 장치는 클라이언트의 HTTP 요청을 가로 채서 Omada Controller로 리디렉션합니다. 유선 클라이언트가 포털 인증이 활성화 된 네트워크에 연결되어 인터넷에 액세스하려고합니다. 게이트웨이는 클라이언트의 HTTP 요청을 가로 챈 다음 Omada Controller로 리디렉션합니다. 그러면 클라이언트는 EAP로부터 수신 한 HTTP 응답에 따라 URL에 "cid = client_mac & ap = ap_mac & ssid = ssid_name & t = time_since_epoch & rid = Radio_id"라는 쿼리 문자열을 사용하여 "GET Request"을 Omada 컨트롤러로 보냅니다. (1 단계 및 2 단계)

 

  1. 그런 다음 Omada Controller는 상태 코드가 302 인 클라이언트에 HTTP 응답을 회신하여 클라이언트를 외부 포털 서버로 리디렉션합니다. 이 상태 코드가있는 HTTP 응답은 위치 필드에 외부 포털 서버의 URL을 추가로 제공합니다. URL에는 쿼리 문자열도 포함되어 있습니다. Omada Controller 4.1.5 이상의 경우 EAP의 URL은 http : // portal_server_ip? clientMac = client_mac & apMac = ap_mac & ssidName = ssid_name & t = time_since_epoch & radioId = Radio_id & site = site_name & redirectUrl = xx.입니다. client_mac & gatewayMac = gateway_mac & vid = vid & t = time_since_epoch & site = site_name & redirectUrl = xx. (3 단계 및 4 단계)

매개 변수의 의미는 표 1 매개 변수 설명에 나열되어 있습니다.

clientMac

클라이언트의 MAC 주소입니다.

apMac

클라이언트가 연결된 EAP의 MAC 주소입니다.

gatewayMac

이트웨이의 MAC 주소입니다.

vid

폴털 기능을 가능하게하는 유선 네트워크의 VLAN ID.

ssidName

연결된 SSID 이름

t

1970 년 1 월 1 일 00:00:00 Epoch 이후의 시간 (초)

radioId

연결된 SSID의 무선 ID (0은 2.4G, 1은 5G)입니다.

site

사이트 이름

redirectUrl

관리 인터페이스의 방문 페이지 구성 항목에 설정된 URL입니다. (포털 서버에 매개 변수 만 제공하면 실제 리디렉션 인터페이스는 포털 서버에 의해 결정됩니다.)

 

   

  1. 클라이언트는 위에서 언급 한 URL을 사용하여 외부 포털 서버에 GET 요청을 보냅니다 (5 단계).

 

      4. 외부 포털 서버는 GET 요청의 쿼리 문자열에 매개 변수를 가로 채서 기록하고 무선 클라이언트에 인증 양식이있는 웹 페이지를 반환 할 수 있어야합니다. (6 단계)

 

  1. 클라이언트의 인증 정보가 포털 서버에 제출되고 포털 서버가 정보를 인증 서버에 제출합니다 (7 단계 및 8 단계). 그러나 포털 서버가 클라이언트의 인증 정보를 얻는 방법과 포털 서버가 인증 서버와 통신하는 방법은이 기사의 범위를 벗어난 자체 구현에 달려 있습니다.

 

  1. 인증 서버는 인증 정보를 확인하고 결과를 포털 서버로 리턴합니다. (단계 9)

 

참고 : 이 예에서는 포털 서버와 인증 서버가 분리되어 있습니다. 그러나 원하는 것과 동일한 서버에 설치할 수 있습니다. 인증 방법도 귀하에게 달려 있습니다. 인증이 전달 된시기를 포털 서버가 알고 있는지 확인하십시오.

 

  1. 인증에 성공하면 포털 서버는 Omada Controller의 API를 호출하여 클라이언트 정보를 Omada Controller로 보내야합니다. 먼저, "POST"요청을 보내 Omada Controller에 로그인해야합니다. 요청의 URLhttps : // host : port / hotspot / login이며 HTTP 메시지 본문에서 JSON 형식을 사용하여“name = the_username_of_ operator & password = the_password_of_operator”데이터를 전달합니다.

호출 인터페이스는 POST / api / v2 / hotspot / login입니다. 전달 매개 변수는 JSON : {name : xxx, password : xxx}입니다. 여기서 계정 및 비밀번호는 컨트롤러에 로그인하기위한 계정 및 비밀번호가 아니라 핫스팟 관리자 인터페이스에 추가 된 운영자입니다.

 

For example,

private static function login()

{       

$ch = curl_init();

// post

curl_setopt($ch, CURLOPT_POST, TRUE);

// Set return to a value, not return to page

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// Set up cookies

curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIE_FILE_PATH);

curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIE_FILE_PATH);

// Allow Self Signed Certs

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

// API Call

curl_setopt($ch, CURLOPT_URL, CONTROLLER_SERVER . "/login");

curl_setopt($ch, CURLOPT_POSTFIELDS, "name=" . OPERATOR_USER ."&password=" . OPERATOR_PASSWORD);

    $res = curl_exec($ch);

    $resObj = json_decode($res);

//Prevent CSRF

              if($resObj->success == true){

                              self::setCSRFToken($resObj->value);

              }

curl_close($ch);

}

              private static function setCSRFToken($token){

                              $myfile = fopen(TOKEN_FILE_PATH, "w") or die("Unable to open file!");

                              fwrite($myfile, $token);

                              fclose($myfile);

                             

                              return $token;

              }

 

 (Step 10)

  1. 포털 서버가 컨트롤러에 성공적으로 로그인 한 경우 클라이언트 정보를 https : // controller_server_ip : https_port / api / v2 / hotspot / extPortal / auth? token = CSRFToken using POST 메소드로 보냅니다. 정보 데이터는 "JSON"farmat로 표시 될 수 있으며 아래 매개 변수를 포함해야합니다.

EAP의 경우

clientMac = client_mac & apMac = ap_mac & ssidName = ssid_name & t = time_since_epoch & radioId = Radio_id & site = site_name & time = expire_time

게이트웨이의 경우

clientMac = client_mac & gatewayMac = gateway_mac & vid = vid & t = time_since_epoch & site = site_name & time = expire_time

 

예를 들어 (EAP의 경우)

private static function authorize($clientMac,$apMac,$ssidName,$radioId,$t,$seconds,$site)

{

     // Send user to authorize and the time allowed

$authInfo = array(

'clientMac' => $clientMac,

'apMac' => $apMac,

''ssidName => $ssidName,

'radioId ' => $radioId,

't' => $t,

'time' => $seconds

);

$ch = curl_init();

// post

curl_setopt($ch, CURLOPT_POST, TRUE);

// Set return to a value, not return to page

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// Set up cookies

curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIE_FILE_PATH);

curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIE_FILE_PATH);

// Allow Self Signed Certs    

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

// API Call

$csrfToken = self::getCSRFToken();

curl_setopt($ch, CURLOPT_URL, CONTROLLER_SERVER ."/extportal/". $site."/auth"."?token=".$csrfToken);

$data = json_encode($authInfo);

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($authInfo));

 

$res = curl_exec($ch);

$resObj = self::resultConvert($res);

if($resObj['success'] == false){

echo $res;

 

}

curl_close($ch);

}

 

private static function resultConvert($json)

{       

$json = str_replace(array('{','}',':',','),array('[{" ',' }]','":',',"'),$json);

function cb_quote($v)

    {

    return '"'.trim($v[1]).'"';

    }

$newJSON=preg_replace_callback("~\"(.*?)\"~","cb_quote", $json);

$res = json_decode($newJSON, true)[0];

return $res;

}

private static function getCSRFToken(){

                $myfile = fopen(TOKEN_FILE_PATH, "r") or die("Unable to open file!");

                $token = fgets($myfile);

                fclose($myfile);

                               

                return $token;

}

 

(단계 11)

이러한 매개 변수의 의미는 표 1의 매개 변수 설명과 동일합니다. 여기서 시간 매개 변수는 클라이언트 인증이 만료되기 전의 시간 (초)입니다. 이 매개 변수는 포털 서버에 의해 정의됩니다.

 

  1. Omada Controller는 Omada Controller가 HTTP POST 요청에 제공된 정보를 처리 한 후 포털 서버에 "Jsuccess": { "success": [true / false], "message": "return information"}을 반환합니다. 포털 서버가 JSON 메시지를 처리하는 방법은 사용자의 구현에 따라 다릅니다. (12 단계)

TOKEN_FILE_PATH는 로그인 요청에서 반환 된 CSRFToken을 저장하는 파일이며 고객이 직접 구성 할 수 있습니다.

 

참고 : API를 성공적으로 호출하려면 다음 두 가지 사항을 달성하도록 포털 서버를 구성해야합니다.

  1. 자체 서명 된 인증서를 허용하십시오.
  2. 서버 https 패킷을 읽고 쿠키에 TPEAP_SESSIONID를 저장 한 후 나중에이 쿠키를 요청하십시오.

 

 

해당 FAQ가 유용했나요?

여러분의 의견은 사이트 개선을 위해 소중하게 사용됩니다.

관련 제품

From United States?

해당 지역의 제품, 이벤트 및 서비스를 받아보세요.