giovedì 10 ottobre 2013

Configurare sicurezza con autenticazione BASIC in IIS 7.5

Essendo nuovo del mondo Microsoft mi sono trovato un pò in difficoltà nel configurare l'autenticazione BASIC su IIS.
La documentazione sul sito Microsoft è esauriente ma sono incappato in alcuni problemi risolti grazie ai forum e alla pazienza.
Per prima cosa occorre installare IIS sulla propria macchina con le principali componenti aggiuntive (filtri ISAPI, ASP net, Autenticazione BASIC compresa che di default non la mette).
Per farlo da Windows 7 procedere in Pannello di controllo/Programmi/Attivazione Disattivazione componenti di Windows e quindi selezionare IIS.

A questo punto, dopo aver creato un semplice Web Service con Visual Studio 2010, task banale, copiare il contenuto del progetto in una directory e da dentro IIS , sul pannello di sinistra, creare un nuovo sito in questo modo:

Quindi specificare il percorso fisico della directory, e fin qui tutto risulta molto intuitivo.

Per prima cosa adesso bisogna configurare la sicurezza sul sito, quindi una volta cliccato sul sito nella parte centrale dello schermo clicchiamo su "Autenticazione"

Qui occorre DISABILITARE l'autenticazione anonima ed abilitare l'autenticazione di base semplicemente selezionando le scelte multiple:


DIFFERENZE CON JAVA

A questo punto una nota importante.
In una web app Java per configurare l'autenticazione basic occorre impostare la security sul web.xml dell'applicazione, utilizzando il nodo < login-config> e quindi il <security-constraint> per vincolare la sicurezza solo ad alcuni metodi o url pattern oppure ruoli.
Sul server poi si attiva il realm inserendo gli utenti abilitati su file o su db.
Con IIS invece bisogna configurare soltanto il server, senza toccare la web app e in più (cosa che mi sembra strana e sono sicuro si possa cambiare ma io non so farlo) gli utenti abilitati possono essere solo utenti abilitati sul pc con pieni diritti sulla cartella.

IMPOSTAZIONE REALM

Si può impostare il realm facendo tasto destro su Autenticazione di base e settando il parametro Area Autenticazione:


In questo caso cercando di entrare nel sito da URL comparirà il seguente prompt del browser
:


PRINCIPALI PROBLEMI RISCONTRATI

Innanzitutto il primo problema è stato attivare la componente ASP net e l'autenticazione BASIC, che come scritto precedentemente non sono installati di default con IIS.

L'errore che si verificava in questo caso diceva chiaramente che non era possibile interpetare gli script, quindi IIS non avendo il modulo asp.net non riusciva ad interpetare le pagine.

Poi ho avuto un problema dovuto al fatto che l'applicazione utilizzava il .NET Framework 4.0 mentre il default di IIS 7.5 è il .NET Framework 2.0.
L'errore in questo caso si riferiva all'attributo targetFramework presente sul web.config.
Per sistemarlo ho creato un nuovo "pool di applicazioni" sul menu di sinistra sopra la voce Siti


ovviamente modificando la versione del .NET Framework utilizzato (scegliere Integrata come modalità pipeline).

Quindi cliccando sul tasto destro del nostro sito accedere alla voce Gestisci sito Web/Impostazioni avanzate

e quindi impostare il pool di applicazioni corretto.

L'ultimo errore, questo davvero rognoso, lo ho avuto una volta risolti tutti i precedenti.
Praticamente dopo essermi autenticato avevo il messaggio:

Nell'elenco moduli del gestore "WebServiceHandlerFactory-Integrated" è presente un modulo "ManagedPipelineHandler" non valido


Spulciando alcuni forum ho visto che si tratta di un problema relativo all'installazione di asp.net.

Ho risolto lanciando da dos il seguente comando:

%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

e riavviando IIS











1 commento:

  1. Many thanks per il suggerimento relativo al managed pipe!

    RispondiElimina