Ссылку, которую вы прислали посмотрел, там скорее клиентская часть. Из дампа микротика не увидел ничего особенного при редиректе. Вот что там происходит: Вначале запрос ссылки и редирект GET /library/test/success.html HTTP/1.0
Host: www.apple.com User-Agent: CaptiveNetworkSupport-200.1 wispr Connection: close HTTP/1.1 302 Hotspot login required Cache-Control: no-cache Content-Length: 135 Content-Type: text/html Date: Fri, 11 Oct 2013 06:37:38 GMT Expires: 0 Location: http://10.0.2.1/login?dst=http%3A%2F%2Fwww.apple.com%2Flibrary%2Ftest%2Fsuccess.html <html> <head><title>Error 302: Hotspot login required</title></head> <body> <h1>Error 302: Hotspot login required</h1> </body> </html> Потом отдаётся страница авторизации GET /login?dst=http%3A%2F%2Fwww.apple.com%2Flibrary%2Ftest%2Fsuccess.html HTTP/1.0 Host: 10.0.2.1 User-Agent: CaptiveNetworkSupport-200.1 wispr Connection: close HTTP/1.0 200 OK Cache-Control: no-cache Connection: close Content-Length: 3223 Content-Type: text/html Date: Fri, 11 Oct 2013 06:37:38 GMT Expires: 0 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>internet hotspot > login</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="pragma" content="no-cache" /> <meta http-equiv="expires" content="-1" /> <style type="text/css"> body {color: #737373; font-size: 10px; font-family: verdana;} textarea,input,select { background-color: #FDFBFB; border: 1px solid #BBBBBB; padding: 2px; margin: 1px; font-size: 14px; color: #808080; } a, a:link, a:visited, a:active { color: #AAAAAA; text-decoration: none; font-size: 10px; } a:hover { border-bottom: 1px dotted #c1c1c1; color: #AAAAAA; } img {border: none;} td { font-size: 14px; color: #7A7A7A; } </style> </head> <body> .<form name="sendin" action="http://10.0.2.1/login" method="post"> ..<input type="hidden" name="username" /> ..<input type="hidden" name="password" /> ..<input type="hidden" name="dst" value="http://www.apple.com/library/test/success.html" /> ..<input type="hidden" name="popup" value="true" /> .</form> . .<script type="text/javascript" src="/md5.js"></script> .<script type="text/javascript"> .<!-- . function doLogin() { ..document.sendin.username.value = document.login.username.value; ..document.sendin.password.value = hexMD5('\234' + document.login.password.value + '\127\323\323\064\231\042\112\004\377\300\213\003\116\227\123\000'); ..document.sendin.submit(); ..return false; . } .//--> .</script> <div align="center"> <a href="http://10.0.2.1/login?target=lv&dst=http%3A%2F%2Fwww.apple.com%2Flibrary%2Ftest%2Fsuccess.html">Latviski</a> </div> <table width="100%" style="margin-top: 10%;"> .<tr> .<td align="center" valign="middle"> ..<div class="notice" style="color: #c1c1c1; font-size: 9px">Please log on to use the internet hotspot service<br /></div><br /> ..<table width="280" height="280" style="border: 1px solid #cccccc; padding: 0px;" cellpadding="0" cellspacing="0"> ...<tr> ....<td align="center" valign="bottom" height="175" colspan="2"> .....<form name="login" action="http://10.0.2.1/login" method="post" ..... onSubmit="return doLogin()" > ......<input type="hidden" name="dst" value="http://www.apple.com/library/test/success.html" /> ......<input type="hidden" name="popup" value="true" /> ...... .......<table width="100" style="background-color: #ffffff"> ........<tr><td align="right">login</td> ..........<td><input style="width: 80px" name="username" type="text" value=""/></td> ........</tr> ........<tr><td align="right">password</td> ..........<td><input style="width: 80px" name="password" type="password"/></td> ........</tr> ........<tr><td> </td> ..........<td><input type="submit" value="OK" /></td> ........</tr> .......</table> .....</form> ....</td> ...</tr> ...<tr><td align="center"><a href="http://www.mikrotik.com" target="_blank" style="border: none;"><img src="img/logobottom.png" alt="mikrotik" /></a></td></tr> ..</table> . .<br /><div style="color: #c1c1c1; font-size: 9px">Powered by MikroTik RouterOS</div> . .</td> .</tr> </table> <script type="text/javascript"> <!-- document.login.username.focus(); //--> </script> </body> </html> -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Maxim Dounin Sent: Friday, October 18, 2013 7:23 PM To: [email protected] Subject: Re: WISRp и UAM средствами nginx Hello! On Fri, Oct 18, 2013 at 03:28:46PM +0600, Лапочкин Константин wrote: > Добрый день. Используем Nginx для редиректа на captive-портав с наших > wifi-hotspot’ов. Пользователь, подключившись к не защищённой сети при > любом обращении в интернет по протоколам http, https перенаправляется > на наш портал, где проходит авторизацию (либо получает гостевой > доступ). Возникла задача: > что бы на клиентских устройствах с iOS (iPhone, iPad) при подключении > к нашей сети всплывало pop-UP окно с нашим порталом. > Работает это через протокол wisrp, окно называется uam(unified > authorization method). Суть метода в том, что при подключении к сети > ios запрашивает ссылку с «User-Agent: > CaptiveNetworkSupport-200.1 wispr». Если он получает на это 302, то, > теоретически, должно возникнуть окошко со страницей, на которую > перенаправляет 302-й код. Однако, это в nginx не работает. Проверяли, > что работает на microtik. Cнимали дамп пакетов c микротика, увидели > следующее: [...] > Что сделал: пробовал через nc слать заголовки из дампа микротика – > работает, окно появляется. Пересобрал ngnix, что бы заменить > 302 Moved Temporarily на 302 Hotspot login required – не помогло. Если я правильно понимаю, важно не то, как делается перенаправление, а то, что возвращается клиенту после перенаправления. Там должна быть XML'ка установленного спецификацией WISPr вида, пример можно посмотреть, например, тут: http://hotspot-connect.sourceforge.net/ -- Maxim Dounin http://nginx.org/en/donation.html _______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru _______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
