Lightswitch e la mancata autenticazione in produzione
Lasciate che vi racconti questo scenario, piuttosto realistico, dato che è quello che è successo a me.
Qualche settimana fa ho deployato su un server di produzione un’applicazione Lightswitch. L’applicazione utilizza la Forms Authentication, in modo tale che l’utente possa loggarsi, farsi riconoscere, lavorare e portare a termine i compiti che deve fare. Venerdì scorso ho aggiornato l’applicazione, solo che non ho voluto utilizzare la procedura di deploy prevista da Lightswitch, ma con un banalissimo ftp ho aggiornato e sovrascritto le varie componenti manualmente.
Mi riferisco a:
- Varie dll proprietarie di Lightswitch
- Dll esterne che utilizzo nella solution
- XAP principale dell’applicazione
Fatto questo, bello soddisfatto, apro il browser, vado all’indirizzo dell’applicazione, e tutto pimpante mi aspetto di fare login.
Panico. Panico. L’applicazione Lightswitch NON mi chiede l’autenticazione, entro direttamente come ‘test user’, e posso fare tutto di tutto. Gestire anagrafiche, fare fatture, modificare e cancellare questo & quello.
Ora, un piccolo preambolo. Chi sviluppa con Lightswitch sa che quando si decide di attivare la Forms Authentication e si esegue l’applicazione da Visual Studio 2010, in realtà l’applicazione non chiede mai login. L’applicazione viene eseguita con un ‘test user’, le cui autorizzazioni vengono impostate in un pannello di proprietà del progetto stesso.
Nello screenshot qui sopra vedete il pannello. Lo si raggiunge aprendo le proprietà del progetto. Nel rettangolo violetto si attiva la Forms Authentication. Nel rettangolo arancione si attivano i ruoli che vogliamo attivare al ‘test user’: nel nostro codice, risulterà che ‘test user’ abbia quei permessi, e quindi l’interfaccia della nostra applicazione Lightswitch reagirà di conseguenza.
Arriviamo al dunque. Quello che è successo alla mia applicazione in produzione è che ha cominciato a comportarsi come se fosse eseguita da Visual Studio 2010, utilizzando l’utente ‘test user’. Niente login, login automatico con questo utente, tutti i permessi attivi.
A cosa è dovuto tutto ciò? E’ semplice. Andate nella cartella WebManifests e cancellate il file Microsoft.LightSwitch.Design.Server.Manifest.dll. Questo file si trova ovviamente nella binRelease dell’applicazione, sul vostro PC, ma non va copiata sul server di produzione. La prima volta che ho deployato in produzione ho utilizzato la procedura standard di Lightswitch; l’aggiornamento invece l’ho fatto a mano, copiando le dll, ma non sapendolo, ho copiato anche quella dll incriminata, e questo ha causato quel problema.
Tutto è bene quel che finisce bene!