Webduino Based Authentication. Accedere ad una pagina privata

Come utilizzare la Based Authentication per accedere a una pagina protetta

La libreria Webduino implementa una semplice autenticazione basata sul protocollo http. Certamente non offre un livello di sicurezza impenetrabile ma può comunque essere utile utilizzare questa funzione per le nostre applicazioni.

Nell’esempio, viene caricata la pagina index.htm dove è presente un link che punta a una pagina protetta. per poter visualizzarne il contenuto è necessario inserire nome utente e password.

La based authentication si basa sulla codifica Base64. Il nume utente e la password, nella forma numeutente:password, vengono convertiti in un unica stringa  di caratteri.  Per la conversione, potete utilizzare diversi servizi online oppure scaricare la mia app ConvertBase64.

based authentication

Il codice seguente è pronto all’uso, dovete cambiare solamente l’indirizzo ip, adattando lo alla vostra rete locale.

[c]
#include "SPI.h"
#include "Ethernet.h"
#include "WebServer.h"

//definisco mac address e indirizzo ip
static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
static uint8_t ip[] = { 192, 168, 1, 10};

//creo un oggetto webduino
WebServer webserver("", 80);

//funzione che crea la pagina principale del sito
void defaultCmd(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
server.httpSuccess();
if (type != WebServer::HEAD)
{
//invio al browser la pagina principale
P(helloMsg) = "<h4>Accedi:</h4><a href=\"private.html\">Pagina Privata</a>";
server.printP(helloMsg);
}
}

//questa funzione permette di verificare il nome utente e la password
//e in caso di successo di visualizzare la pagina privata
void privateCmd(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
//user= admin
//password= admin

//verifico nome utente e password
if (server.checkCredentials("YWRtaW46YWRtaW4="))
{
//in caso affermativo…
server.httpSuccess();
if (type != WebServer::HEAD)
{
//invio al browser la pagina privata
P(helloMsg) = "<h3>Buongiorno Admin!</h3>";
server.printP(helloMsg);
}
}
else
{
//creo una risposta http
//nel caso in cui si tenta un accesso
//no autorizzato
server.httpUnauthorized();
}
}

void setup()
{
//inizializzo la ethernet shield
Ethernet.begin(mac, ip);
//definisco funzione che gestisce
//la pagina principale del sito
webserver.setDefaultCommand(&defaultCmd);
webserver.addCommand("index.html", &defaultCmd);
//definisco la funzione che gestisce la pagina privata
webserver.addCommand("private.html", &privateCmd);

//inizializzo la libreria webduino
webserver.begin();
}

void loop()
{
char buff[64];
int len = 64;

webserver.processConnection(buff, &len);
}
[/c]

La libreria Webduino è molto flessibile e permette di realizzare applicazioni interessanti in modo molto veloce.

3 risposte a Webduino Based Authentication. Accedere ad una pagina privata

  • Buongiorno, volevo farti i complimenti per gli ottimi lavori e per da disponibilità a condivederli con tutti noi. Volevo sapere se è possibile e come “fondere” i tuoi progetti ” Webduino Based Authentication. Accedere ad una pagina privata ” e ” Scheda relè remota con Arduino e Webduino ” per ottenere un controllo a distanza protetto.
    Grazie e continua così
    Stefano

  • Buongiorno, complimenti per tutti i tutorial disponibili! Ho una domanda: come si fa a far eseguire il logout, o comunque a far richiedere di nuovo il login quando si ricarica la pagina di questo progetto? Perchè se non si esce dal browser, esso rimane loggato! Grazie

    • Ciao
      la base authentication non dispone di logout, l’unica cosa che si potrebbe fare è usare un pulsante che permette di spedire una pagina 401 unauthorized.

Preferiti
Rimani aggiornato

Sondaggi
Sorry, there are no polls available at the moment.
Seguimi su Twitter