1
0
mirror of https://github.com/stefanocasazza/ULib.git synced 2025-09-28 19:05:55 +08:00
ULib/tests/examples/nocat/doc/DescrizioneFirenzeWifi.txt
2015-01-23 17:24:36 +01:00

362 lines
16 KiB
Plaintext

Descrizione Firenze Wifi
------------------------------------------------------------
3 oggetti:
a) browser utente
b) captive portal point (nodog) - http server listen 5280 - gestione firewall tramite script
c) portale autorizzativo
browser utente <=> captive portal point <=> portale autorizzativo (comunicazioni tramite protocollo http(s))
dopo che un utente si associa a un access point, effettuando una qualche richiesta http su porta 80 tramite
un browser (provando a navigare in rete) ottiene una risposta http che lo redirige sul portale al servizio GET_login():
HTTP/1.1 511 Network authentication required
Server: ULib
Date: Fri, 21 Feb 2014 18:45:50 GMT
Cache-Control: no-cache
Connection: close
Content-Length: 523
Content-Type: text/html; charset=UTF-8
Refresh: 1; url=http://wifi-aaa.comune.fi.it/login?mac=00%3A14%3Aa5%3A6e%3A9c%3Acb&ip=172.16.1.172&redirect=http%3A//start.fedoraproject.org/&gateway=172.16.1.254%3A5280&timeout=0&token=1412216317&ap=ap@10.10.100.115
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>511 Network authentication required</title>
</head><body>
<h1>Network authentication required</h1>
<p>You need to <a href="http://wifi-aaa.comune.fi.it/login?mac=00%3A14%3Aa5%3A6e%3A9c%3Acb&ip=172.16.1.172&redirect=http%3A//start.fedoraproject.org/&gateway=172.16.1.254%3A5280&timeout=0&token=1412216317&ap=ap@10.10.100.115">authenticate with the local network</a> in order to get access</p>
<hr>
<address>ULib Server</address>
</body></html>
GET_login() (http)
------------------------------------------------------------
presentazione della pagina di accoglienza come effetto della redirect fatta dal nodog al portale autorizzativo.
Parametri (opzionali)
------------------------------------------------------------
mac: mac address della scheda di rete dell'utente
ip: indirizzo ip assegnato dal dhcp server
redirect: url richiesta dall'utente
gateway: indirizzo ip del gateway (nodog) che ha fatto la redirect al portale autorizzativo (es: 172.16.1.254:5280)
timeout: informazione attualmente non utilizzata
token: numero randomico che viene associato all'ip dell'utente e che viene controllato dal nodog al ricevimento del ticket autorizzativo
ap: <label local network> '@' <indirizzo ip dell'access point>
------------------------------------------------------------
GET /login?mac=00%3A14%3Aa5%3A6e%3A9c%3Acb&ip=172.16.1.172&redirect=http%3A//start.fedoraproject.org/&gateway=172.16.1.254%3A5280&timeout=0&token=1412216317&ap=ap@10.10.100.115
------------------------------------------------------------
dalla pagina di accoglienza si puo' richiede l'autenticazione cliccando sui relativi 'bottoni':
GET_login_request() (https)
------------------------------------------------------------
viene controllato il cookie WCID=<id> e se non presente o non valido
viene presentata la pagina specifica per il realm indicato (all, firenzecard) con una form per l'autenticazione.
GET_login_request_IdP() (http)
------------------------------------------------------------
viene presentata la pagina specifica per il realm indicato (all, firenzecard) con una form per l'autenticazione.
GET_login_request_by_MAC() (http)
------------------------------------------------------------
viene controllato che il parametro mac abbia un valore, nel caso sia
'00:00:00:00:00:00' viene controllato che il parametro ip abbia un valore
Parametri (opzionali)
------------------------------------------------------------
mac: mac address della scheda di rete dell'utente
ip: indirizzo ip assegnato dal dhcp server
redirect: url richiesta dall'utente
gateway: indirizzo ip del gateway (nodog) che ha fatto la redirect al portale autorizzativo (es: 172.16.1.254:5280)
timeout: informazione attualmente non utilizzata
token: numero randomico che viene associato all'ip dell'utente e che viene controllato dal nodog al ricevimento del ticket autorizzativo
ap: <label local network> '@' <indirizzo ip dell'access point>
realm: dominio autorizzazione (all, firenzecard)
redir_to: nel caso di GET_login_request_IdP() contiene un dato specifico altrimenti corrisponde alla url richiesta dall'utente
------------------------------------------------------------
POST_login_request() (https)
------------------------------------------------------------
ricezione form per l'autenticazione.
Parametri (opzionali)
------------------------------------------------------------
mac: mac address della scheda di rete dell'utente
ip: indirizzo ip assegnato dal dhcp server
redirect: url richiesta dall'utente
gateway: indirizzo ip del gateway (nodog) che ha fatto la redirect al portale autorizzativo (es: 172.16.1.254:5280)
timeout: informazione attualmente non utilizzata
token: numero randomico che viene associato all'ip dell'utente e che viene controllato dal nodog al ricevimento del ticket autorizzativo
ap: <label local network> '@' <indirizzo ip dell'access point>
---------------------------------------------------------------------------------------------------
*** this params CANNOT be empty ***
---------------------------------------------------------------------------------------------------
realm: dominio autorizzazione (all, firenzecard)
redir_to: nel caso di GET_login_request_IdP() contiene un dato specifico altrimenti corrisponde alla url richiesta dall'utente
uid: id utente (telefono, mac, ip)
password: ...
---------------------------------------------------------------------------------------------------
submit.x
submit.y - if it came from main.bash...
submit - if it came from some mobile device...
---------------------------------------------------------------------------------------------------
superati i necessari controlli nella fase di autenticazione si risponde al browser
dell'utente con una redirect al servizio 'login_validate' sulla tnet concentratore
con i seguenti parametri cryptati des3
Parametri
------------------------------------------------------------
uid: id utente (telefono, mac, ip)
policy: (DAILY, TRAFFIC, FLAT)
auth_domain: dominio autorizzazione (all, firenzecard)
max_time: tempo disponibile definito dalla policy
max_traffic: traffico disponibile definito dalla policy
UserDownloadRate: informazione attualmente non utilizzata
UserUploadRate: informazione attualmente non utilizzata
redir_to: url richiesta dall'utente
------------------------------------------------------------
A questo punto se l'utente e' gia' loggato viene rediretto sul portale autorizzativo al servizio GET_fake_login_validate():
GET_fake_login_validate() (http)
------------------------------------------------------------
semplicemente estrae ll parametro url di 'redir_to' e risponde con la redirect sulla stessa.
------------------------------------------------------------
altrimenti la redirect tramite il firewall ripassa dal nodog che controlla i
parametri cryptati (registra il parametro 'uid' in una lista interna che
viene usata nella validazione successiva del ticket autorizzativo) e redirige
nuovamente il browser verso il portale autorizzativo al servizio GET_login_validate()
inserendo i parametri cryptati come campo 'redirect' nei nuovi parametri della
redirect, in questo modo ritorniamo sul portale con i dati rinnovati per l'autorizzazione
GET_login_validate() (http)
------------------------------------------------------------
valida la richiesta di login controllando le risorse dell'utente
Parametri
---------------------------------------------------------------------------------------------------
come back from the gateway (NoDog) after the POST of login_request, the params CANNOT be empty
---------------------------------------------------------------------------------------------------
mac: mac address della scheda di rete dell'utente
ip: indirizzo ip assegnato dal dhcp server
redirect: dati cryptati des3
========================================
uid: id utente (telefono, mac, ip)
policy: (DAILY, TRAFFIC, FLAT)
auth_domain: dominio autorizzazione (all, firenzecard)
max_time: tempo disponibile definito dalla policy
max_traffic: traffico disponibile definito dalla policy
UserDownloadRate: informazione attualmente non utilizzata
UserUploadRate: informazione attualmente non utilizzata
redir_to: url richiesta dall'utente
========================================
gateway: indirizzo ip del gateway (nodog) che ha fatto la redirect al portale autorizzativo (es: 172.16.1.254:5280)
timeout: informazione attualmente non utilizzata
token: numero randomico che viene associato all'ip dell'utente e che viene controllato dal nodog al ricevimento del ticket autorizzativo
ap: <label local network> '@' <indirizzo ip dell'access point>
// ---------------------------------------------------------------------------------------------------
Viene preparato il ticket autorizzativo cryptato des3 inviato come redirect al nodog al servizio 'ticket'
------------------------
"Mac %.*s\n"
"Timeout %.*s\n"
"Traffic %.*s\n"
"Token %.*s\n"
"User %.*s\n"
"Policy %.*s\n"
"NoTraffic %.*s\n"
"UserUploadRate %.*s\n"
"UserDownloadRate %.*s\n"
"Redirect http://wifi-aaa.comune.fi.it/postlogin?<....>\n" => stessi parametri della richiesta (GET /login_validate?...)
------------------------
il nodog controlla le informazioni nel ticket, apre il firewall e redirige il
browser alla url indicata come 'Redirect' nel ticket che risulta essere il
servizio GET_postlogin() sul portale autorizzativo
GET_postlogin() (http)
------------------------------------------------------------
registra il login (apertura del firewall) dell'utente
Parametri
---------------------------------------------------------------------------------------------------
mac: mac address della scheda di rete dell'utente
ip: indirizzo ip assegnato dal dhcp server
redirect: dati cryptati des3
========================================
uid: id utente (telefono, mac, ip)
policy: (DAILY, TRAFFIC, FLAT)
auth_domain: dominio autorizzazione (all, firenzecard)
max_time: tempo disponibile definito dalla policy
max_traffic: traffico disponibile definito dalla policy
UserDownloadRate: informazione attualmente non utilizzata
UserUploadRate: informazione attualmente non utilizzata
redir_to: url richiesta dall'utente
========================================
gateway: indirizzo ip del gateway (nodog) che ha fatto la redirect al portale autorizzativo (es: 172.16.1.254:5280)
timeout: informazione attualmente non utilizzata
token: numero randomico che viene associato all'ip dell'utente e che viene controllato dal nodog al ricevimento del ticket autorizzativo
ap: <label local network> '@' <indirizzo ip dell'access point>
// ---------------------------------------------------------------------------------------------------
come risposta si invia un html con messaggio di login riuscito e tramite
javascript si prova ad aprire una popup per il logout e finalmente si redirige
il browser all url originale salvo per gli utenti di firenzecard che vengono
rediretti su "http://159.213.248.2/wxfi/?ap=X0067Rap"
COMUNICAZIONI NODOG <==> PORTALE
--------------------------------------------------------------
richieste from AUTH, which may be:
--------------------------------------------------------------
GET /checkZombies - check for zombies and report info
GET /checkFirewall - check firewall and report info
GET /check - check system and report info
GET /logout?ip=...&mac=... - logout specific user
--------------------------------------------------------------
HTTP/1.1 302 Moved Temporarily
Server: ULib
Date: Wed, 26 Feb 2014 16:32:40 GMT
Cache-Control: no-cache
Connection: close
Content-Length: 223
Content-Type: text/plain; charset=UTF-8
Location: http://wifi-aaa.comune.fi.it/info?Mac=00%3A00%3A00%3A00%3A00%3A00&ip=172.22.3.63&gateway=151.11.47.120%3A5280&ap=01%40151.11.47.120&User=3284020512&logout=-1&connected=360&traffic=0
The document has moved <a href="http://wifi-aaa.comune.fi.it/info?Mac=00%3A00%3A00%3A00%3A00%3A00&ip=172.22.3.63&gateway=151.11.47.120%3A5280&ap=01%40151.11.47.120&User=3284020512&logout=-1&connected=360&traffic=0">here</a>
--------------------------------------------------------------
GET /uptime - report uptime info
--------------------------------------------------------------
HTTP/1.1 200 OK
Server: ULib
Date: Wed, 26 Feb 2014 16:32:40 GMT
Content-Type: text/plain; charset=UTF-8
Content-Length: 5
95248
--------------------------------------------------------------
GET /status?ip=172.16.61.45 - report status user
--------------------------------------------------------------
HTTP/1.1 200 OK
Server: ULib
Date: Wed, 26 Feb 2014 16:16:54 GMT
Content-Length: 131
Content-Type: text/html; charset=UTF-8
<tr>
<td>ec:35:86:01:94:33</td>
<td>172.16.61.45</td>
<td>Wed, 26 Feb 2014 16:23:28 CET</td>
<td>00:49:06</td>
<td>00:00:00</td>
<td>5382 KBytes</td>
<td>292 MBytes</td>
<td><a href="http://standards.ieee.org/cgi-bin/ouisearch?ec3586">ec:35:86:01:94:33</a></td>
<td style="color:green">PERMIT</td>
</tr>
--------------------------------------------------------------
GET /status?label=ap - report status users for local network
--------------------------------------------------------------
HTTP/1.1 200 OK
Server: ULib
Date: Wed, 26 Feb 2014 16:16:54 GMT
Content-Length: 431
Content-Type: text/html; charset=UTF-8
<html>
<head>
<meta http-equiv="Cache Control" content="max-age=0">
<title>Access Point: wimoGhiberti-r29587_rspro</title></head>
<body bgcolor="#FFFFFF" text="#000000">
<h1>Access Point: wimoGhiberti-r29587_rspro</h1>
<hr noshade="1"/>
<table border="0" cellpadding="5" cellspacing="0">
<tr><td>Current Time</td><td>Wed, 26 Feb 2014 17:12:34 CET</td></tr>
<tr><td>Gateway Up Since</td><td>Wed, 12 Feb 2014 12:17:24 CET</td></tr>
<tr><td>GatewayVersion</td><td>1.2.0</td></tr>
<tr><td>ExternalDevice</td><td>eth0 tun0</td></tr>
<tr><td>InternalDevice</td><td>br-lan</td></tr>
<tr><td>LocalNetwork</td><td>172.16.61.0/24</td></tr>
<tr><td>GatewayPort</td><td>5280</td></tr>
<tr><td>AuthServiceAddr</td><td>http://wifi-aaa.comune.fi.it</td></tr>
<tr><td>Label (Local Network Mask)</td><td>ap (172.16.61.0/24)</td></tr>
</table>
<hr noshade="1"/>
<table border="0" cellpadding="5" cellspacing="0">
<tr><td>Users</td><td>2</td></tr>
<tr><td>Users Connected</td><td>1</td></tr>
<tr><td></td><td></td></tr>
<tr><td align="center"><h2>Current Users</h2></td>
<table border="1" cellpadding="5">
<tr><th>User UID</th>
<th>IP address</th>
<th>Connection time</th>
<th>Elapsed connection time</th>
<th>Left connection time</th>
<th>Consumed traffic</th>
<th>Left traffic</th>
<th>MAC address</th>
<th>Status</th></tr>
<tr>
<td>70:1a:04:df:6c:39</td>
<td>172.16.61.213</td>
<td>Thu, 20 Feb 2014 08:57:28 CET</td>
<td>01:51:32</td>
<td>00:08:28</td>
<td>72183 KBytes</td>
<td>229 MBytes</td>
<td><a href="http://standards.ieee.org/cgi-bin/ouisearch?847a88">84:7a:88:71:a3:b5</a></td>
<td style="color:red">DENY</td>
</tr>
<tr>
<td>ec:35:86:01:94:33</td>
<td>172.16.61.45</td>
<td>Wed, 26 Feb 2014 16:23:28 CET</td>
<td>00:49:06</td>
<td>00:00:00</td>
<td>5382 KBytes</td>
<td>292 MBytes</td>
<td><a href="http://standards.ieee.org/cgi-bin/ouisearch?ec3586">ec:35:86:01:94:33</a></td>
<td style="color:green">PERMIT</td>
</tr>
<tr>
</table></td></tr>
</table>
<hr noshade="1"/>
<img src=/images/auth_logo.png width="112" height="35">
<p style="text-align:right">Powered by ULib</p>
</body>
</html>
--------------------------------------------------------------
GET /users - report list of peers permitted
--------------------------------------------------------------
HTTP/1.1 200 OK
Server: ULib
Date: Wed, 26 Feb 2014 16:25:36 GMT
Content-Type: text/plain; charset=UTF-8
Content-Length: 813
10:d5:42:27:5d:4f 172.16.184.146 10:d5:42:27:5d:4f 171 4395390
04:f7:e4:c8:3c:a2 172.16.184.31 04:f7:e4:c8:3c:a2 171 2375276
88:1f:a1:a1:24:50 172.16.184.105 88:1f:a1:a1:24:50 171 24308499
e4:25:e7:04:e6:d9 172.16.184.62 e4:25:e7:04:e6:d9 171 875199
0c:3e:9f:21:d7:ee 172.16.184.163 0c:3e:9f:21:d7:ee 171 11893262
f8:27:93:2a:02:dc 172.16.184.99 f8:27:93:2a:02:dc 171 7665863
b8:e8:56:db:90:32 172.16.184.119 b8:e8:56:db:90:32 171 916099
54:ea:a8:5d:5e:ad 172.16.184.244 54:ea:a8:5d:5e:ad 171 3159367
00:f4:b9:79:53:4d 172.16.184.128 00:f4:b9:79:53:4d 171 7659066
b4:18:d1:56:66:d7 172.16.184.200 b4:18:d1:56:66:d7 171 15393744
78:a3:e4:64:d4:17 172.16.184.130 78:a3:e4:64:d4:17 171 588007
04:db:56:0f:f3:de 172.16.184.83 04:db:56:0f:f3:de 171 228625
bc:f5:ac:f7:ff:9b 172.16.184.102 bc:f5:ac:f7:ff:9b 171 684978
--------------------------------------------------------------
other kind of message (from user), which may be:
--------------------------------------------------------------
GET /cpe - specific request, force redirect via https
GET /test - force redirect even without a firewall
GET /ticket - authorization ticket with info
GET /login_validate - before authorization ticket with info
--------------------------------------------------------------