Visualizzazione post con etichetta IIS. Mostra tutti i post
Visualizzazione post con etichetta IIS. Mostra tutti i post

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











mercoledì 17 ottobre 2012

Configurare filtro ISAPI su IIS 7.5 per Tomcat 7.0

L'operazione di configurazione del filtro isapi  consente di avere IIS come Web Server e di delegare l'esecuzione di codice Java Server Side (servlet,jsp, etc.) direttamente a Tomcat.
Le  entità necessarie per questa configurazione sono:
  • isapi_redirect.dll  plug in per iis (scaricabili qui ) prestando attenzione alle versioni a 64 bit o 32 bit a seconda del sistema operativo;
  • workers.properties , file dove si indicano host e porte usate dai cosiddetti "workers";
  • uriworkermap.properties, file che effettua la mappatura URL-workers;
  • isapi_redirect.properties,  file che definisce la locazione dei file uriworkermap e workers così come il percorso del file di log e i livelli di log
Si noti che in versioni precedenti di IIS non esisteva la possibilità di specificare il file isapi_redirect.properties e era necessario inserire chiavi di registro sul S.O.

Esempio di file .reg per il registro di Windows


REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0]
"server_root"="C:\\connettore\\"
"extension_uri"="/jakarta/isapi_redirector.dll"
"worker_file"="c:\\connettore\\conf\\workers.properties"
"log_file"="c:\\connettore\\logs\\isapi_redirect.log" 
"worker_mount_file"="c:\\connettore\\conf\\uriworkermap.properties"
"log_level"="DEBUG"


Tale opzione è ancora possibile ma sconsigliata in quanto il meccanismo del file di properties è più flessibile.
La isapi_redirect.dll può essere messa in una qualsiasi directory del server.
In questo esempio si trova sotto c:\connettore e il sistema operativo è windows Server 2008 a 64 bit.

isapi_redirect.properties

extension_uri=/jakarta/isapi_redirect.dll
log_file=c:\connettore\logs\isapi.log
log_level=debug
worker_file=c:\connettore\conf\workers.properties
worker_mount_file=c:\connettore\conf\uriworkermap.properties

L' extension_uri indica il path all'extension dell'isapi redirect, il nome jakarta in questo caso dovrà essere il nome della directory virtuale definita sotto IIS.
Da IIS infatti, nel Web Site scelto, si crea tale directory virtuale e quindi si aggiunge il filtro isapi che punta al percorso del file system dove si trova la isapi_redirect.dll ( vedi qui per ulteriori dettagli).

workers.properties


worker.list=myWorker
worker.myWorker.port=8009
worker.myWorker.host=localhost
worker.myWorker.type=ajp13
Questi dati si riferiscono alla configurazione del Tomcat che vogliamo esporre.
La porta utilizzata è la porta del connettore AJP di Tomcat. Tale configurazione si trova nel file server.xml dentro la directory conf di Tomcat. Il valore 8009 è quello di default.

uriworkermap.properties


/myApp=myWorker
/myApp/*=myWorker

Dove myApp sarà il nome del nostro war dentro Tomcat.


A questo punto se tutto è andato a buon fine digitando http://NOME_SERVER/myApp si verrà ridirezionati direttamente alla porta 8080 di Tomcat (http://NOME_SERVER:8080/myApp ), ovviamente l'indicazione ella porta non comparirà più nell'url perchè il raccordo tra indirizzo e applicazione deployata sotto Tomcat è fatto dal  filtro ISAPI