![image](https://hackmd.io/_uploads/B1pGj6D4a.png) Sviluppo di un portale per autoprovisioning in **PassPoint** Note: benvenuti in questa presentazione riguardante il lavoro che ho svolto in stage. La mia relazione riguarda lo sviluppo di un portale di autoprovisioning in Passpoint! --- Caso in analisi ![initmap](https://hackmd.io/_uploads/BJUe6eONT.png) Note: - azienda frenetico, connettivita - un altra sede dell'azienda Immaginate di lavorare in una grande azienda. È un ambiente frenetico e produttivo, con un flusso costante di informazioni e una necessità continua di connettività. Un giorno, voi e il vostro team dovete recarvi in un'altra sede dell'azienda, situata in un'altra città. --- Caso in analisi ![wifi_it](https://hackmd.io/_uploads/ryrBCedEp.png) Note: - accedere alla rete Wifi - cercare, inserire, connessioni instabili Tuttavia, una volta arrivati, vi trovate di fronte a un problema comune: l'accesso alla rete Wi-Fi. Ogni volta, è la stessa storia: cercare la rete giusta, inserire lunghe e complesse password, e spesso, affrontare connessioni lente o instabili. --- Caso in analisi <table style='border: 0px'> <tr> <td> <ul>Sistema: <li>Automatico</li> <li>Sicuro</li> <li>Unificato</li> </td> <td><img src='https://hackmd.io/_uploads/r1qTWWuNT.png'> </table> Note: - Passpoint - Automatizza la connesione alla rete - Lo fa in modo sicuro - Utilizzando un unico tipo di server specializzato allo scopo: il server AAA (Authentication, Authorization e Accounting) - Roaming senza interruzioni E qui che entra in gioco Passpoint, che fornisce un servizio di autenticazione unificato, automatico e sicuro tra più reti Wi-Fi. Non più password da ricordare, non più reti non sicure. Passpoint permette un roaming Wi-Fi senza interruzioni, mantenendo la connessione forte e sicura, proprio come se foste ancora nella sede da dove si proviene. --- Passpoint Note: - tecnologia, con focus su un pubblico aziendale - semplifica alcuni passi, quali? Durante il mio stage ho studiato a fondo questa tecnologia e ho sviluppato un **applicazione**, destinata principalmente ad un pubblico **aziendale**, che ne semplifica alcuni passi. **Ma come funziona passpoint?** --- Autenticazione tramite Passpoint ![fsdfsdfsdfs](https://hackmd.io/_uploads/ByuDmATHT.png) Note: Passpoint ha 4 fasi principali: discovery, registration, provisioning e secure access. Nella fase di discovery il dispositivo dell'utente ottiene le informazioni della rete, in registration e provisioning, si registra e ottiene le credenziali. Infine in secure access effettua l'accesso vero e proprio. --- Scopo del Lavoro ![ujtgdjkhgfchbliyu](https://hackmd.io/_uploads/rJatN0TrT.png) Note: - Semplificare la fase di registration e provisioning, - entrare, creare , scaricarlo, quando vicino connettersi Il mio obiettivo è stato quello di semplificare la fase di registration e provisioning, sviluppando un portale di autoprovisioning. Lidea e quella che un utente debba entrare nell applicazione, creare il profilo per il proprio dispositivo, e infine scaricarlo e quando vicino ad una rete supportata autenticarsi in automatico. --- Tecnologie <img src='https://hackmd.io/_uploads/BygcT-O4a.png' style='width: 50%;'> Note: In questo viaggio, ho usato molte tecnologie che mi hanno aiutato a crescere a livello di competenze e sicuramente hanno soddisfatto la mia curiosità! --- Analisi del profilo <table style='border: 0px; width: 100%;'> <tr> <td style='width: 80%;'> <ul> <li>Reverse Engineering</li> <li>Decodifica Base64</li> </td> <td style='width: 20%;'><img src='https://hackmd.io/_uploads/SyoUS7uN6.png' style='width: 100%;'> </table> Note: Tutto è iniziato dall'analisi di un file dal contenuto illegibile, che doveva essere un esempio di un profilo passpoint (per intenderci quello che **si crea nella fase di registration** e si ottiene dalla fase di provisioning). Ho cominciato facendo un reverse engineering per capirne la struttura. Ho provato a fare delle decodifiche in vari formati, fino ad arrivare a quella giusta... --- Analisi del profilo <table style='border: 0px; width: 100%;'> <tr> <td style='width: 70%;'> <ul> <li>File di configurazione .xml</li> <li>Certificato digitale</li> </td> <td style='width: 30%;'><img src='https://hackmd.io/_uploads/Byv-v7dNT.png' style='width: 100%;'> </table> Note: E finalmente capirne la struttura. il documento, era stato decodificato in base64 più volte, ed era composto principalmente da 2 file, un file di configurazione della rete in .xml, e un certificato digitale, appartenente al server di autenticazione. --- Analisi del profilo ![hhhhhh](https://hackmd.io/_uploads/rJoZKWRrp.png) Note: Ora che ho compreso la creazione dell'output, devo approfondire la provenienza esatta degli input e il funzionamento generale del sistema. --- Analisi del profilo ![anqp](https://hackmd.io/_uploads/HJFXK1IrT.png) Note: Il certificato, abbiamo detto che appartiene al server di autenticazione... --- Analisi del profilo <table style='border: 0px; width: 100%;'> <tr> <td style='width: 40%; font-size: 60%;'> <ul>Serve: <li >Un modo di sincronizzare le utenze Passpoint</li> <li>Un modo per mantenere conforme il sistema con l'ecosistema degli access point</li> </td> <td style='width: 60%;'><img src='https://hackmd.io/_uploads/Hk5WWZABa.png' style='width: 100%;'> </table> Note: Mentre nel file xml, che contiene le informazioni relative al file di configurazione della rete occorre un entita centralizzata che possa sincronizzare le informazioni dell utenza sul server AAA e rimanere conforme alla configurazione di rete sull ecosistema degli access point. --- Analisi del profilo ![kokokokmmmm](https://hackmd.io/_uploads/HkY5g-CBT.png) Note: Questa entita, e cio che ho sviluppato durante lo stage. --- Autenticazione e provisioning <ul> <li >Uso aziendale</li> <li>Piu complesso, ma piu semplice per l'utente</li> </ul> <img src='https://hackmd.io/_uploads/B1EE7ZIB6.png' style='width: 100%;'> Note: L'applicazione è progettata per uso aziendale e, di frequente, le aziende utilizzano sistemi di Single Sign-On (SSO) personalizzati per accedere alle proprie applicazioni. Questo rende ancora più semplice l'intero processo, in quanto non è necessario effettuare una nuova registrazione per accedere all'applicazione, avendo già le credenziali aziendali. Di conseguenza, ho integrato l'accesso all'applicazione con Keycloak (un sistema di gestione dell'identità e dell'accesso open source). --- Architettura del portale <table style='border: 0px; width: 100%;'> <tr> <td style='width: 70%; font-size: 60%;'> <ul>Framework Vaadin <li >Interfaccia Utente, components</li> <li>Backend, DB, Business Logic</li> </td> <td style='width: 30%;'><img src='https://hackmd.io/_uploads/SJNp9zUrp.png' style='width: 100%;'></td> </table> Note: Per creare il sistema in se ho usato vaadin, un framework che permette di creare applicazioni web in Java. In questo modo l'applicazione sarebbe stata accessibile direttamente da una pagina web migliorando la compatibilita tra dispositivi. --- Architettura del portale <table style='border: 0px; width: 100%;'> <tr> <td style='width: 50%;'> <img src='https://hackmd.io/_uploads/ByNuGXUS6.png' style='width: 100%;'> </td> <td style='width: 50%; font-size: 60%;'> <ul> <li >Libreria con singola responsabilità</li> <li>Unico DBMS, Database logici separati</li> </ul> </td> </table> Note: L'applicazione è strutturata attorno a un'entità principale (posizionata in alto a sinistra), la quale impiega una libreria appositamente sviluppata denominata "passpoint core". Questa libreria è responsabile della generazione dei profili. La sincronizzazione tra i profili generati e FreeRADIUS è garantita dalla connessione a un unico server di database, lo stesso usato da FreeRADIUS, sebbene operi con database logici distinti. --- Architettura del portale <table style='border: 0px; width: 100%;'> <tr> <td style='width: 50%; font-size: 60%;'> Configurazione della rete manuale con pagina dedicata </td> <td style='width: 50%;'><img src='https://hackmd.io/_uploads/SkU9d7LHT.png' style='width: 100%;'> </table> Note: Per quanto riguarda al configurazione di rete, verra prima impostata sull'ecosistema degli access point e poi replicata in una pagina dedicata sull'applicativo. --- Schermate <table style='border: 0px; width: 100%;'> <tr> <td style='width: 40%; font-size: 60%;'> <ul> <li >Utente entra nell'applicazione</li> <li>Crea il profilo per il suo dispositivo</li> <li>Scarica il profilo e lo installa</li> </td> <td style='width: 60%;'><img src='https://hackmd.io/_uploads/ByLeZW8Ha.png' style='width: 100%;'> <img src='https://hackmd.io/_uploads/ryLuWZUSa.png' style='width: 100%;'> </table> Note: Questa ad esempio e la schermata che mostra i profili creati, con la possibilita di scaricarli e installarli sui propri dispositivi. Nel momento in cui si crea il profilo poi si puo scegliere il sitema operativo e dare un nome al profilo per infine poterlo scaricare come gli altri. --- Deployment <table style='border: 0px; width: 100%;'> <tr> <td style='width: 50%; font-size: 60%;'> <ul>Applicazione Web Java <li >Avvio del Jar</li> <li>Creazione servizio systemd</li> </td> <td style='width: 50%;'><img src='https://hackmd.io/_uploads/SkOy4CoHT.png' style='width: 100%;'> </table> Note: Infine arriviamo al deploy dell'applicazione. per fare cio ho generato un jar compilando l'applicazione vaadin, caricato nella VPS fornita dall'azienda, e ho creato un servizio systemd che la tenesse sempre attiva. --- Deployment <table style='border: 0px; width: 100%;'> <tr> <td style='width: 50%; font-size: 60%;'> <ul>Nginx per: <li >Reverse Proxy</li> <li>Certificati HTTPS</li> </td> <td style='width: 50%;'><img src='https://hackmd.io/_uploads/B1RPr0iB6.png' style='width: 100%;'> </table> Note: Poi ho aggiunto NGINX come reverse proxy per la gestione delle richieste esterne e ho fatto puntare l'indirizzo e la porta locale dell'applicazione ad un certo sottodominio fornito dall'azienda. Questo mi ha permesso anche di mantenere l'applicazione sicura fornendo un certificato per la crittografia HTTPS, usato nell'interazione con l'applicazione. --- Deployment <table style='border: 0px; width: 100%;'> <tr> <td style='width: 50%; font-size: 60%;'> <ul>Docker: <li >Server AAA</li> <li>DBMS</li> </td> <td style='width: 50%;'><img src='https://hackmd.io/_uploads/SyiPh-RBT.png' style='width: 100%;'> </table> Note: Infine, ho configurato i container per FreeRADIUS e per il database sulla VPS, utilizzando il layer di Docker, e ho collegato quest'ultimo al portale. --- Responsabilita <!-- .element: class="fragment" data-fragment-index="1" --> - Reverse engineering, creazione ambiente di test <!-- .element: class="fragment" data-fragment-index="2" --> - Sviluppo dell'applicazione Vaadin <!-- .element: class="fragment" data-fragment-index="3" --> - Deploy sul server <!-- .element: class="fragment" data-fragment-index="4" --> Note: I miei compiti --- # Risultato finale ![lllll](https://hackmd.io/_uploads/ryXZReRST.png) Note: e dato che in ogni rete wifi dell'azienda esiste la stesa configurazione Passpoint, si connettera ovunque --- Sviluppi futuri <table style='border: 0px; width: 100%;'> <tr> <td style='width: 50%;'><img src='https://hackmd.io/_uploads/BJN8a0oHp.png' style='width: 100%;'> </td> <td style='width: 50%; font-size: 60%;'> <ul> <li>Maggiori dettagli profilativi</li> <li>Azioni remote per la disabilitazione dei profili</li> </table> Note: Questo progetto e attualmente in continuo sviluppo e l'azienda lo sta migliorando, ad esempio aggiungendo feature come la sincronizzazione diretta dell'access point con cambium, o aggiungendo maggiori dettagli profilativi sull utilizzo dei profili generati dagli utenti, o addirittura la possibilita di disabilitarli con un account amministratore. --- Grazie per l'attenzione! ---
{"description":"Presentazione tesi","slideOptions":"{\"controls\":false,\"theme\":\"white\"}","lang":"it-IT","contributors":"[{\"id\":\"b198c231-6fed-409c-be89-989908c549f3\",\"add\":21413,\"del\":8643}]","title":"Talk colaci"}
    277 views