<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>autenticazione &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://wordpress.com/tag/autenticazione/</link>
	<description>Feed of posts on WordPress.com tagged "autenticazione"</description>
	<pubDate>Tue, 14 Oct 2008 03:59:02 +0000</pubDate>

	<generator>http://wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[CAS: a short introduction]]></title>
<link>http://gengish.wordpress.com/?p=4</link>
<pubDate>Mon, 28 Jul 2008 12:48:26 +0000</pubDate>
<dc:creator>gengish</dc:creator>
<guid>http://gengish.it.wordpress.com/2008/07/28/cas-a-short-introduction/</guid>
<description><![CDATA[Si tratta di un sistema di autenticazione originariamente creato dall&#8217;università di YALE, pe]]></description>
<content:encoded><![CDATA[<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">Si tratta di un sistema di autenticazione originariamente creato dall'università di YALE, per fornire una modalità di autenticazione di un utente per una applicazione. Il produttore, Ja-SIG, è un consorzio globale no-profit costituito da università e partner commerciali.<br />
Tra le sue caratteristiche tecniche si più importanti: </span></p>
<ol type="1">
<li class="MsoNormal">Un protocollo aperto e ben documentato;</li>
<li class="MsoNormal">SSO non solo WEB; Supporta anche la proxy autentication che permette per esempio anche a intere applicazioni di autenticarsi e non solo a client web.- Compliant con il procollo SAML per l’iterazione con altri sistemi SSO;</li>
<li class="MsoNormal">Una componente server open source; <span> </span>E’ possibile scaricarselo e installarselo in casa per testare l’ambiente. Funziona sia con apache 1 che apache 2.</li>
<li class="MsoNormal">Una vasta libreria di client per Java, Net, PHP, Perl, Apache, uPortal e altri ancora;</li>
<li class="MsoNormal">Integrato con uPortal, BlueSocket, TikiWiki, Mule, Liferay, ExO, Moodle e altri ancora</li>
<li class="MsoNormal">Vengono forniti molti esempi pronti all'uso.</li>
<li class="MsoNormal">Si tratta di un software con una comunità abbastanza robusta e attiva.</li>
<li class="MsoNormal">Rilasciato con aggiornamenti abbastanza cadenzati.</li>
<li class="MsoNormal">Scritto in java e open source.</li>
</ol>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"> </span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="color:#000000;">Funzionamento</span></strong></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">E' basato su cookie di sessione (come la maggior parte dei SSO).</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">CAS richiede SSL.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">CAS usa LDAP per memorizzare le informazioni degli utenti connessi.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">Quando un utente accede ad un sito CASizzato il sito lo reinderizza al server CAS. In questa fase un cookie viene salvato sulla macchina dell'utente. Questo cookie contiene un ticket univoco che lo identifica. Dopo che CAS ha verificato la sua identità lo rimanda indietro al sito di partenza. CAS aggancia un ticket unico alla URL del sito protetto.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">Il sito protetto vede il ticket e manda tale ticket al CAS server. CAS chiede al servizio protetto se il ticket è buono. Se si l’accesso è garantito.</span></p>
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"> </span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="color:#000000;">Client per CAS</span></strong></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">Net Cas Client</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">.Net Http module</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">Acegi as CAS Client</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">ASP.NET Forms Authentication</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">AuthCAS</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">CAS + Seam Web Applications</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">CAS and JSR-168</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">CAS Client for Java 3.0</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">CAS Client for Java 3.1</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">CAS Proxying with ASP.Net Forms Authentication</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">CASBar- Toolbar for Firefox 2</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">CASP — CASP is an ASP .NET CAS client implementation in C #.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">ColdFusion client script</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">Copy of CAS Client for Java 3.0</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">ISAPI Filter</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">Java Client</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">JSP Client</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">mod_auth_cas</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">MOD_CAS</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">mod_python auth module</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">PAM Module</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">Perl Client</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">phpCAS</span></p>
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"> </span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="color:#000000;">CAS e Java</span></strong></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">Per quanto riguarda la configurazione. Si mette un jar nel web-inf. Si configura un filtro (CAS in Java è gestito mediante Filter) e dovrebbe essere tutto a posto.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"><a href="http://www.ja-sig.org/wiki/display/CAS/CASifying+Tomcat+Manager"><span style="color:#800080;">http://www.ja-sig.org/wiki/display/CAS/CASifying+Tomcat+Manager</span></a></span></p>
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"> </span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="color:#000000;">CAS e .NET</span></strong></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"><a href="http://www.ja-sig.org/wiki/display/CASC/ASP.NET+Forms+Authentication">http://www.ja-sig.org/wiki/display/CASC/ASP.NET+Forms+Authentication</a></span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">In .NET viene usato un HTTPModule.</span></p>
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;"><strong>Esempio in DotNET</strong></p>
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;"><span lang="EN-GB"><strong>HTTPModule Filter Process</strong></span></p>
<p class="MsoNormal" style="margin:0;"><span lang="EN-GB">Il filtro HTTPModule è un programma C# che intercetta tutte le URL verso IIS 6.0 ed esegue le seguenti azioni:</span></p>
<p class="MsoNormal" style="margin:0;"><span lang="EN-GB">il filtro controlla se si tratta di un utente valido guardando il cookie di sessione.</span></p>
<p class="MsoNormal" style="margin:0;"><span lang="EN-GB">se un utente valido esiste (l'utente si è già autenticato all'applicazione corrente), lo USER ID è registrato nella collection degli elementi di contesto alla voce HTTP_USER e il controllo viene redirezionato alla URL richiesta. l'utente può essere prelevato in questo modo: </span><span lang="EN-GB">string user = (string)Context.Items["HTTP_USER"];</span></p>
<p class="MsoNormal" style="margin:0;"><span lang="EN-GB">Se non esiste un utente valido nel cookie di sesisone allora il filtro controlla il Ticket nel SSO Server.</span></p>
<p class="MsoNormal" style="margin:0;"><span lang="EN-GB">se il ticket esiste (l'utente è stato già autenticato) il filtro inizia con il SSOServer il processo di validazione, uno user ID viene generato e salvato e crittato nel cookie di sessione e memorizzato nella collection di contesto alla voce HTTP_USER.</span></p>
<p class="MsoNormal" style="margin:0;"><span lang="EN-GB">se la validazione fallisce viene generato un errore e il filtro torna un eccezione.</span></p>
<p class="MsoNormal" style="margin:0;"><span lang="EN-GB">se nè esiste un utente valido, nè un ticket esiste (l'utente non si è autenticato) allora il filtro inizia un processo di login redirezionando il controllo al processo di SSO Login.</span></p>
<p class="MsoNormal" style="margin:0;"><span lang="EN-GB">il filtro HTTPModule usa 2 files di configurazione per gestire questa fase:</span></p>
<p class="MsoNormal" style="margin:0;"><span lang="EN-GB">il primo definisce i nomi di directory file e le directory del file di configurazione principale, se viene richiesta SSL, se e dove loggare le informazioni sul processo di filtro.</span></p>
<p class="MsoNormal" style="margin:0;"><span lang="EN-GB">Il filtro HTTPModule è installato in ogni directory in cui si vuole intercettare la URL.</span></p>
<p class="MsoNormal" style="margin:0;"><span lang="EN-GB">Se il filtro valido l'utente l'applicazione può leggere lo userID nella server variable HTTP_user.</span></p>
<p class="MsoNormal" style="margin:0;"><span lang="EN-GB">Se il server SSO non valida l'utente l'applicazione non accederà mai alla URL richiesta.</span></p>
<p class="MsoNormal" style="margin:0;"><span lang="EN-GB"> </span></p>
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;"><strong><span style="color:#000000;">Conclusioni</span></strong></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">In buona sostanza CAS è un sistema di autenticazione puro e non di autorizzazione.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">In altre parole consente di propagare l'identità dell'utente tra diverse applicazioni eventualmente istallate su server o in domini differenti mediante dei ticket crittografati. La determinazione dell'autorizzazioni assegnate ad un utente e l'enforcing delle policy di sicurezza sono compiti che spettano all'applicazione.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;">In effetti, è prassi utilizzare CAS in combinazione con un directory server in cui sono censite sia le identità degli utenti che i ruoli assegnati, tuttavia è responsabilità di ogni singola applicazione connettersi alla directory per accedere al profilo dell'utente e quindi applicare le dovute policy. Una possibile soluzione potrebbe essere quella di inserire nel ticket / cookie informazioni supplementari. Essendo il ticket scambiato di frequente non è una procedura consigliabile dato che il profilo di un utente può essere molto articolato mentre tale ticket deve essere il più snello possibile.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"> </span></p>
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;"><strong><span style="color:#000000;">Riferimenti</span></strong></p>
<p><!--[if gte mso 9]&#62;  Normal 0 14   false false false        MicrosoftInternetExplorer4  &#60;![endif]--><!--[if gte mso 9]&#62;   &#60;![endif]--></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;">http://www.ja-sig.org/products/cas/</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;"><span style="text-decoration:none;color:#000000;">http://wiki.case.edu/Central_Authentication_Service</span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;"><span style="text-decoration:none;color:#000000;">http://www.ja-sig.org/wiki/display/CASC/.Net+Http+module</span><br />
http://www.ja-sig.org/wiki/display/CASC/ASP.NET+Forms+Authentication<br />
http://www.ja-sig.org/wiki/display/CASC/CAS+Proxying+with+ASP.Net+Forms+Authentication<br />
http://www.ja-sig.org/wiki/display/CASC/ASP.NET+Forms+Authentication+with+Role+Provider</span></p>
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;">
]]></content:encoded>
</item>
<item>
<title><![CDATA[Autenticazione tramite Public key in Linux]]></title>
<link>http://paolosblog.wordpress.com/?p=162</link>
<pubDate>Tue, 22 Jul 2008 08:38:32 +0000</pubDate>
<dc:creator>P@olo</dc:creator>
<guid>http://paolosblog.it.wordpress.com/2008/07/22/autenticazione-tramite-public-key-in-linux/</guid>
<description><![CDATA[Un ulteriore modo per rafforzare la sicurezza di un sistema Linux contro accessi non autorizzati è ]]></description>
<content:encoded><![CDATA[<p>Un ulteriore modo per rafforzare la sicurezza di un sistema Linux contro accessi non autorizzati è l'utilizzo della <strong>chiave pubblica</strong> (public key) durante la fase di login.</p>
<p align="center"><img src="http://paolosblog.files.wordpress.com/2008/07/key.jpg" alt="key" width="196" height="166" /></p>
<p><span style="color:#000000;"><em>Vantaggi</em></span></p>
<ul>
<li>Elevato grado di sicurezza nel processo di autenticazione.</li>
<li>Solo gli utenti con la chiave corretta possono autenticarsi nel sistema.</li>
<li>Ogni chiave può essere protetta da password (ulteriore protezione).<!--more--></li>
</ul>
<p><span style="color:#000000;"><em>Svantaggi</em></span></p>
<ul>
<li>Senza la giusta chiave non c'è modo di autenticarsi e quindi di accedere al sistema.</li>
<li>La gestione delle chiavi può risultare laboriosa.</li>
</ul>
<p><strong><span style="color:#000080;">PROCEDURA</span></strong></p>
<p>- generare la coppia di chiavi pubblica e privata.<br />
<span style="color:#000080;">ssh-keygen -t rsa</span></p>
<p>La <em>chiave privata</em> viene salvata nel file <strong>id_rsa</strong>.<br />
La <em>chiave pubblica</em> viene salvata nel file <strong>id_rsa.pub</strong>.</p>
<p>- creare la directory nascosta .ssh nella home user.<br />
<span style="color:#000080;">mkdir ~/.ssh</span></p>
<p>- copiare la chiave pubblica nel file authorized_keys.<br />
<span style="color:#000080;">cat id.rsa.pub &#62; ~/.ssh/authorized_keys</span></p>
<p>- impostare i permessi sul file per evitare che altri utenti possano leggere i dati della chiave.<br />
<span style="color:#000080;">chmod go-w ~/<br />
chmod 700 ~/.ssh<br />
chmod go-rwx ~/.ssh</span></p>
<p>- editare il file sshd_conf (deve essere effettuato come root).<br />
<span style="color:#000080;">su -<br />
vi /ets/ssh/sshd_conf</span></p>
<p>- identificare e modificare i parametri come indicato.</p>
<p style="padding-left:30px;"><span style="color:#000080;">PubkeyAuthentication yes<br />
AuthorizedKeysFile .ssh/authorized_keys<br />
PasswordAuthentication no</span></p>
<p>- riavviare il servizio ssh per attivare la nuova configurazione<br />
<span style="color:#000080;">service sshd restart</span></p>
<p><span style="color:#000000;">Una volta effettuato il restart del servizio ssh, l'unico modo per effettuare un login remoto è tramite l'utilizzo delle chiavi generate.</span></p>
<p><span style="color:#000000;">Per generare la chiave pubblica e privata è possibile utilizzare anche altri tools come ad esempio <a title="download puttygen" href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html" target="_blank">puttygen</a>, membro della famiglia <strong>puTTY</strong> e soggetto a licenza MIT compatibile con la GNU GPL.</span></p>
<p><em><strong><span style="color:#ff0000;"><strong><em><span style="color:#ff0000;">- p@olo</span></em></strong></span></strong></em></p>
<div style="text-align:center;"><em><strong><span style="color:#ff0000;"><a rel="license" href="http://creativecommons.org/licenses/by-nd/2.5/it/"><img class="aligncenter" style="border-width:0;" src="http://creativecommons.org/images/public/somerights20.png" alt="Creative Commons License" /></a></span></strong></em></div>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Configurare un JDBCRealm per Tomcat]]></title>
<link>http://neodimio.wordpress.com/?p=6</link>
<pubDate>Mon, 31 Mar 2008 22:14:53 +0000</pubDate>
<dc:creator>neodimio</dc:creator>
<guid>http://neodimio.it.wordpress.com/2008/04/01/configurare-un-jdbcrealm-per-tomcat/</guid>
<description><![CDATA[Fonte: tomcat.apache.org 
In un precedente tutorial abbiamo visto come usufruire degli strumenti ch]]></description>
<content:encoded><![CDATA[<p><i>Fonte: <a href="http://tomcat.apache.org/tomcat-5.5-doc/realm-howto.html" title="Realm HOWTO">tomcat.apache.org</a> </i></p>
<p>In un <a href="http://neodimio.wordpress.com/2008/03/31/autenticazione-su-apache-tomcat/" title="Autenticazione su Apache Tomcat" target="_blank">precedente tutorial</a> abbiamo visto come usufruire degli strumenti che Tomcat ci mette a disposizione per gestire l'autenticazione degli utenti del nostro sistema.</p>
<p>In questa breve guida, invece, vedremo come "istruire" Tomcat a leggere i dati degli utenti (user name, password e ruoli) da un database.</p>
<p>I prerequisiti necessari sono essenzialmente due:</p>
<ol>
<li><a href="http://tomcat.apache.org/" title="Apache Tomcat" target="_blank">Apache Tomcat</a> 5.x</li>
<li><a href="http://dev.mysql.com/" title="MySQL" target="_blank">MySQL</a> 5.0 (anche se la configurazione per altri DBMS è molto simile)</li>
</ol>
<p>Poiché sia Tomcat e MySQL sono multi-piattaforma, le istruzioni riportate di seguito saranno valide per diversi sistemi operativi (Linux, Windows, Mac, ... ).</p>
<p>Per prima cosa dobbiamo scaricare i driver JDBC che MySQL ci mette a disposizione <a href="http://dev.mysql.com/downloads/connector/j/3.0.html" title="JDBC Connector" target="_blank">qui</a>, scompattare l'archivio e copiare il file <i>mysql-connector-java-x.x.x.x-ga-bin.jar</i> nella directory <i>$CATALINA_HOME/common/lib </i>, dove per <i>$CATALINA_HOME</i> si intende il path della vostra installazione di Tomcat<i> .</i></p>
<p>Dopo di che dobbiamo inserire nel database le tabelle che conterranno rispettivamente gli utenti e i ruoli delgi utenti del nostro sistema:</p>
<p>[sourcecode language='sql']<br />
create table users (<br />
  user_name         varchar(15) not null primary key,<br />
  user_pass         varchar(15) not null<br />
);</p>
<p>create table user_roles (<br />
  user_name         varchar(15) not null,<br />
  role_name         varchar(15) not null,<br />
  primary key (user_name, role_name)<br />
);[/sourcecode]<br />
Ovviamente questo è solo un esempio, possiamo rinominare a piacimento tabelle e attributi, o aggiungerne altri.<br />
Vi faccio notare inoltre che le password degli utenti verranno memorizzate in chiaro; sarebbe meglio fare un digest delle password (md5, etc ...), ma questo esula gli scopi di questa guida.Fatto ciò, ci basta modificare il file <i>$CATALINA_HOME/conf/server.xml</i> nel seguente modo:<br />
[sourcecode language='xml']</p>
<p>...</p>
<p><!--<br />
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"<br />
             resourceName="UserDatabase"/><br />
 --></p>
<p><Realm  className="org.apache.catalina.realm.JDBCRealm"<br />
    driverName="org.gjt.mm.mysql.Driver"<br />
    connectionURL="jdbc:mysql://localhost/nome_db"<br />
    connectionName="test" connectionPassword="test"<br />
    userTable="users" userNameCol="user_name" userCredCol="user_pass"<br />
    userRoleTable="user_roles" roleNameCol="role_name" /></p>
<p>...</p>
<p>[/sourcecode]<br />
Non abbiamo fatto altro che commentare il Realm di default (righe 3-6) e inserire un nuovo Realm (righe 8-13) , lasciando inalterato il resto del file.Per ulteriore chiarezza descriverò i principali attributi del nuovo Realm:</p>
<ul>
<li><i>connectionURL</i> indica il percorso del nostro database; al posto di <i>nome_db</i> dovete inserire il nome del vostro database dove avete creato le due tabelle</li>
<li>in <i>connectionName</i> e <i>connectionPassword</i>  dovrete inserire le credenziali per l'accesso al suddetto db</li>
<li>in <i>userTable</i> e <i>userRoleTable</i> inserire rispettivamente il nome della tabella degli utenti e della tabella dei ruoli</li>
<li>intuitivamente in <i>userNameCol</i>, <i>userCredCol</i> e <i>roleNameCol</i> è necessario inserire i nomi delle rispettive colonne</li>
</ul>
<p>Ora non ci resta che riavviare Tomcat e verificare se tutto è andato per il verso giusto.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Autenticazione su Apache Tomcat]]></title>
<link>http://neodimio.wordpress.com/?p=5</link>
<pubDate>Sun, 30 Mar 2008 17:30:49 +0000</pubDate>
<dc:creator>neodimio</dc:creator>
<guid>http://neodimio.it.wordpress.com/2008/03/31/autenticazione-su-apache-tomcat/</guid>
<description><![CDATA[Fonte: java.sun.com
Implementare ex novo un sistema di autenticazione per il nostro portale web è u]]></description>
<content:encoded><![CDATA[<p><i>Fonte: <a href="http://java.sun.com/j2ee/1.4/docs/tutorial/doc/Security5.html">java.sun.com</a></i></p>
<p>Implementare ex novo un sistema di autenticazione per il nostro portale web è un processo lungo e faticoso.  Per fortuna molti servlet container ci mettono a disposizione dei sistemi di autenticazione belli e pronti.</p>
<p>Se il vostro servlet container è <a href="http://tomcat.apache.org/">Apache Tomcat</a> questa guida può fare al caso vostro.</p>
<p>Procederò dando per scontato che abbiate installato Tomcat 5.x o superiore sulla vostra macchina; inoltre tutte le modifiche proposte saranno piattaforma indipendenti ( Linux, Mac, Windows ... ).</p>
<p>Tomcat ci offre ben cinque tipi diversi di autenticazione:</p>
<ul>
<li>HTTP basic authentication</li>
<li>Form-based login authentication</li>
<li>Client certificate authentication</li>
<li>Mutual authentication</li>
<li>Digest authentication</li>
</ul>
<p>In questo breve tutorial mi concentrerò sulla "Form-Based Authentication".</p>
<p>Essa permette di gestire il login da una form da noi creata ma non prevede alcun tipo di crittografia su dati, che viaggeranno in chiaro sulla rete.</p>
<p>Il comportamento di questo meccanismo può essere facilmente compreso dando uno sguardo alla seguente immagine</p>
<p><img src="http://java.sun.com/j2ee/1.4/docs/tutorial/doc/images/security-formBasedLogin.gif" alt="Form-Based Authentication" /></p>
<p>Per utilizzare la Form-based login authentication dobbiamo innanzi tutto creare un file contenente la form per l'autenticazione che chiameremo per coerenza con l'immagine precedente "login.jsp".</p>
<p>Questo file per assolvere al suo compito deve contenere necessariamente al suo interno una form così strutturata:<br />
[sourcecode language='html']</p>
<form id="login" method="post" action="j_security_check">
	Nome Utente:<br />
<input type="text" name="j_username"/>
 	Password:<br />
<input type="password" name="j_password"/>
<input type="submit" value="ENTRA"/>
</form>
<p>[/sourcecode]<br />
Dopo di che si dovrà modificare il file "web.xml" in tre passi :</p>
<ol>
<li>Diciamo a Tomcat che vogliamo utlizzare la Form-based login authentication, dove si trova il file contenente la form e come si chiama:<br />
[sourcecode language='xml']<br />
<login-config></p>
<p>        <auth-method>FORM</auth-method></p>
<p>        <realm-name>Richiesta Autenticazione</realm-name></p>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/login.jsp</form-error-page>
</p></form-login-config>
<p></login-config>[/sourcecode]<br />
In questo esempio abbiamo indicato la pagina "login.jsp" anche come error page, sarebbe una buona cosa distinguere i due casi di modo che l'utente si accorga di avere inserito delle credenziali errate nella form.</li>
<li>Creiamo i security roles:<br />
[sourcecode language='xml']<br />
<security-role></p>
<p>       <description>Amministratore del sistema</description><br />
       <role-name>admin</role-name></p>
<p></security-role></p>
<p><security-role></p>
<p>        <description>Utente generico</description><br />
        <role-name>user</role-name><br />
</security-role>[/sourcecode]<br />
In questo caso abbiamo creato due ruoli che poi verranno assegnati a uno o più utenti, come descriverò in seguito.</li>
<li>Delimitiamo le aree che vogliamo riservare inserendo le seguenti righe:<br />
[sourcecode language='xml']<br />
<security-constraint></p>
<p>	<web-resource-collection></p>
<p>		<web-resource-name>Area Riservata 1</web-resource-name></p>
<p>		<url-pattern>/</url-pattern></p>
<p>	</web-resource-collection></p>
<p>	<auth-constraint></p>
<p>		<role-name>user</role-name></p>
<p>	</auth-constraint></p>
<p></security-constraint></p>
<p><security-constraint></p>
<p>	<web-resource-collection></p>
<p>		<web-resource-name>Area Riservata 2</web-resource-name></p>
<p>			<url-pattern>/admin</url-pattern></p>
<p>	</web-resource-collection></p>
<p>	<auth-constraint></p>
<p>		<role-name>admin</role-name></p>
<p>	</auth-constraint></p>
<p></security-constraint>[/sourcecode]<br />
Abbiamo creato due aree riservate con path "/admin" e "/" a cui possono accedere rispettivamente solo gli utenti con ruolo admin e con ruolo user.</li>
</ol>
<p>Fatto ciò non ci resta che creare gli utenti e assegnare loro dei ruoli.</p>
<p>Esistono diversi modi per fare ciò.</p>
<p>In questa guida illustrerò il più semplice, che consiste nell'editare il file "$CATALINA_HOME/conf/tomcat-users.xml", dove per "$CATALINA_HOME" si intende il path della vostra installazione di Tomcat.</p>
<p>Un esempio di file "tomcat-users.xml" può essere il seguente:</p>
<p>[sourcecode language='xml']</p>
<p><?xml version='1.0' encoding='utf-8'?></p>
<p><tomcat-users></p>
<p>	<role rolename="admin"/><br />
	<role rolename="user"/></p>
<p>	<user username="amministratore" password="tomcat" roles="admin,user"/><br />
	<user username="tizio" password="tomcat" roles="user"/><br />
	<user username="caio" password="tomcat" roles="user"/></p>
<p></tomcat-users>[/sourcecode]<br />
In <a href="http://neodimio.wordpress.com/2008/04/01/configurare-un-jdbcrealm-per-tomcat/" title="Configurare un JDBCRealm">questo breve tutorial</a> spiego come interfacciare Tomcat a un database in modo che esso, invece di leggere dal file "tomcat-users.xml", esegua delle query al DB per autenticare gli utenti.<br />
<br>Dopo tutte queste modifiche, neanche a dirlo, è necessario RIAVVIARE Tomcat.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Windows : Attivare Windows vista per 1 anno in modo gratuito e legale quante volte vuoi]]></title>
<link>http://redskull92.wordpress.com/?p=36</link>
<pubDate>Fri, 14 Mar 2008 17:05:44 +0000</pubDate>
<dc:creator>Red Skull 92</dc:creator>
<guid>http://redskull92.it.wordpress.com/2008/03/14/windows-attivare-windows-vista-per-1-anno-in-modo-gratuito-e-legale-quante-volte-vuoi/</guid>
<description><![CDATA[

E&#8217; Stato scoperto da un pò di tempo come bypassare la protezione di vista per attivare il s]]></description>
<content:encoded><![CDATA[<div align="center"><img src="http://kylefarnung.com/media/blogs/kftheblog/windows_vista_logo.jpg" alt="vista" height="300" width="300" /></div>
<div align="center"><!--more--></div>
<div align="left">E' Stato scoperto da un pò di tempo come bypassare la protezione di vista per attivare il sistema operativo per ben   1 ANNO e potete rifarlo quante volte volete,tutto completamente LEGALE,il procedimento per attivare vista è veramente facile e intuitivo.</div>
<div align="left">
<ol>
<li>Andiamo su <i>Start=&#62;Esegui</i>, digitare il comando <font color="red">regedit</font> (Registro di Sistema) e premete <font color="red">Enter</font> per lanciare l’editor del registro ( Ovviamente dovete eseguire queste operazioni su una piattaforma windows vista non ancora attivata).</li>
<li>Andiamo nella directory:<br />
<font color="red">HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ SL</font></li>
<li>Ora Clicchiamo con il tasto destro del mouse sulla chiave <font color="red">SkipRearm</font> e selezioniamo “Edit” (Modifica se avete la versione italiana) e modificate il valore di default “<font color="red">00000000</font>” in “<font color="red">00000001</font>“.Salvate(Premete F5) e chiudete il registro di sistema.</li>
<li>Ora andiamo su <b><i>Start=&#62;Esegui</i></b>, digitate <font color="RED">cmd.exe</font>(Prompt dei comandi/command) e premete Enter per avviarlo. Digitate sul prompt il seguente comando:<br />
<font color="RED">slmgr -rearm</font></li>
<li>Riavviate il PC per rendere effettive le modifiche. Dopo il riavvio  è possibile visualizzare la nuova data di scadenza lanciando da da cmd(Prompt)l comando <font color="RED">slmgr -xpr</font>  .</li>
</ol>
<div align="left">N.B : Se dopo un anno volete riattivare vista vi basta ripetere l'operazione sopra elencata.(Ovviamente prima che il tempo  per la riattivazione scada)</div>
<p><!--more--></div>
<div align="left"><a href="http://www.redskull92.wordpress.com" title="HomePage">Torna alla HomePage </a></div>
]]></content:encoded>
</item>
<item>
<title><![CDATA[WiFi, per autenticarsi basta un SMS]]></title>
<link>http://alphakappa.wordpress.com/2007/12/04/wifi-per-autenticarsi-basta-un-sms/</link>
<pubDate>Tue, 04 Dec 2007 08:10:39 +0000</pubDate>
<dc:creator>AlphaKappa</dc:creator>
<guid>http://alphakappa.it.wordpress.com/2007/12/04/wifi-per-autenticarsi-basta-un-sms/</guid>
<description><![CDATA[Una piccola notizia, di quelle che passano inosservate, ma che cambiano un bel po&#8217; la vita tec]]></description>
<content:encoded><![CDATA[<p>Una piccola notizia, di quelle che passano inosservate, ma che cambiano un bel po' la vita tecnologica (e a volte non solo) di una persona. Non sarà più necessaria tanta burocrazia per autenticarsi e utilizzare una rete wireless.</p>
<p>(Via <a href="http://punto-informatico.it/"><em>Punto Informatico</em></a>)</p>
<blockquote>
<p align="left">Roma - S'è cucinata una piccola grande rivoluzione nelle scorse ore: il ministero dell'Interno ha dichiarato in modo ufficiale e definitivo che è accettabile autenticare gli utenti delle reti WiFi <strong>anche tramite SMS</strong>, il che significa dare un calcio al grosso di quella burocrazia che sta frenando, insieme a molte altre cose, lo sviluppo del wireless italiota. [<a href="http://www.pitelefonia.it/p.aspx?i=2132112">continua a leggere</a>]</p>
</blockquote>
<p><img src="http://static.technorati.com/x/static/img/graphicresources/icn-talkbubble.gif?1149714944" border="0" /> <a href="http://technorati.com/tags/Autenticazione" rel="tag">Autenticazione</a>, <a href="http://technorati.com/tags/Wireless" rel="tag">Wireless</a></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[La libcrypt]]></title>
<link>http://ordeal.wordpress.com/2007/11/15/la-libcrypt/</link>
<pubDate>Wed, 14 Nov 2007 22:26:18 +0000</pubDate>
<dc:creator>ordeal</dc:creator>
<guid>http://ordeal.it.wordpress.com/2007/11/15/la-libcrypt/</guid>
<description><![CDATA[Oggi volevo presentarvi la libcrypt,la libreria GNU che Linux utlizza per la gestione degli account ]]></description>
<content:encoded><![CDATA[<p>Oggi volevo presentarvi la libcrypt,la libreria GNU che Linux utlizza per la gestione degli account e dei login.<br />
Quello che ho implementato è un mini-passwd,cioè una versione mooolto esemplificata del celeberrimo comando utilizzato per aggiungere in /etc/passwd le informazioni riguardante gli utenti e in /etc/shadow le loro password.Qui mi occupo solo delle password.<br />
È da notare che l'algoritmo utilizzato dalla libreria per la criptazione della password ,può essere<br />
scelto attraverso il prefisso inserito nei primi caratteri del vettore "salt" nel primo codice,da passare alla funzione crypt.<br />
Nel nostro caso il suffisso "$1$" informa la funzione di criptazione che l'algoritmo da utilizzare<br />
<!--more--> è quello basato su MD5,ma potrebbe essere anche utilizzato il vecchio DES.<br />
Tuttavia la modifica apportata all'algoritmo MD5 lo rende ancora più robusto della sua implementazione originale,conferendogli un'affidabilità maggiore del DES stesso.<br />
Il primo codice è relativo al programma per l'inserimento della password nel file shadow delle password,che verrà creato nella directory corrente.<br />
Il secondo invece gestisce un semplice esempio di login relativo ad un account.<br />
Ricordo infine che per compilare è necessario forzare il compilatore a consultare la libreria crypt con</p>
<pre>gcc -lcrypt -o eseguibile codice.c</pre>
<p>per entrambi i programmi.</p>
<p>[sourcecode lang='cpp']<br />
#include <stdio .h><br />
#include <time .h><br />
#include <unistd .h><br />
#include <crypt .h><br />
#include <stdlib .h><br />
#include <string .h></p>
<p>void insert(char*,char*);<br />
    int  main(int argc,char* argv[])<br />
     {<br />
     if(argc != 2){<br />
             printf("Usage: %s username\n",argv[0]);<br />
             return 0;<br />
     } </p>
<p>     if(strlen(argv[1])>34){<br />
        fprintf(stderr,"L'username contiene troppi caratteri,ridurne la dimensione\n");<br />
         return 1;<br />
         }</p>
<p>       unsigned long seed[2];<br />
       char salt[] = "$1$........";<br />
       const char *const seedchars =<br />
         "./0123456789ABCDEFGHIJKLMNOPQRST"<br />
         "UVWXYZabcdefghijklmnopqrstuvwxyz";<br />
       char *password;<br />
       int i;</p>
<p>       /* Genera dei seeds (non troppo) casuali. */<br />
       seed[0] = time(NULL);<br />
       seed[1] = getpid() ^ (seed[0] >> 14 & 0x30000); //usiamo il pid del processo per rendere il seme abbastanza casuale</p>
<p>       /*A partire dai due numeri pseudocasuali in seed[0] e seed[1] è possibile costruire un vettore di 10 caratteri ascii salt,da dare in pasto alla funzione crypt,grazie ad esso l'algoritmo basato su md5 può partorire la password */<br />
       for (i = 0; i < 8; i++)<br />
         salt[3+i] = seedchars[(seed[i/5] >> (i%5)*6) & 0x3f];<br />
/* getpass riceve la password dell'utente e crypt effettua il calcolo dell'hash */<br />
 password = crypt(getpass("Password:"), salt);<br />
        insert(argv[1],password);  //Inserisce la entry con nomeutente e pass sul file shadow<br />
 return 0;<br />
     }</p>
<p>void insert(char* user,char* pwd){<br />
 		 FILE *fd;<br />
 		 char buffer[35];<br />
 		 char *old;<br />
 		 char *passwd=malloc(strlen(pwd));<br />
/*il puntatore pwd punta ad un'area di memoria dove la funzione getpass precedentemente invocata ha allocato la password immessa dall'utente.Se get pass deve essere invocato per l'immissione di una nuova password è necessario spostare il contenuto di quella precedente in un'altra area di memoria.*/<br />
 	         strcpy(passwd,pwd);<br />
      if(!(fd = fopen("shadow","r+"))){ //routine standard di apertura del file in lettura<br />
                        fprintf(stderr,"Errore nell'apertura del file\n");<br />
                        exit(0);<br />
                        }<br />
       while(!feof(fd) && strcmp(buffer,user)) //scansione del file shadow<br />
                         fscanf(fd,"%s",buffer);</p>
<p>                       if(feof(fd)){ //se il puntatore al file è arrivato alla terminazione senza trovare l'utente...<br />
 		        fclose(fd);<br />
 		        char *entry=malloc(strlen(user)+2+strlen(passwd));<br />
     				strcpy(entry,user);<br />
 			strcat(entry," ");<br />
 			strcat(entry,passwd);<br />
 			strcat(entry,"\n");<br />
 		       fd = fopen("shadow","a"); //routine standard di apertura del file in lettura<br />
 /* scrivi la nuova entry su shadow nella directory corrente con lo username,uno spazio e l'hash */<br />
 		       if(fprintf(fd,"%s",entry) < strlen(entry))<br />
        			fprintf(stderr,"Errore di scrittura sul file\n");<br />
       				fclose(fd); //chiudi lo stream<br />
       				exit(0);<br />
 	      }</p>
<p>		      fscanf(fd,"%s",buffer); //se l'utente invece è stato trovato,la stringa successiva è la sua password<br />
 	       printf("Procedura di sostituzione password per l'utente %s\n",user);<br />
 	       old=crypt(getpass("Password Vecchia:"), buffer);<br />
 	     if(strcmp (buffer,old) == 0){<br />
 		      fseek(fd,-34,SEEK_CUR);<br />
 		char *entry=malloc(strlen(passwd)+1);<br />
 		strcpy(entry,passwd);<br />
 		      strcat(entry,"\n");<br />
 		      if(fprintf(fd,"%s",entry) < strlen(entry)){<br />
 			 fprintf(fd,"Errore di scrittura sul file\n");<br />
 		      	 fclose(fd);<br />
 		      }<br />
 	      }<br />
 	      else{<br />
 		      fprintf(stderr,"Spiacente,password Errata\n");<br />
 	              fclose(fd);<br />
 	      }<br />
 }[/sourcecode]<br />
[sourcecode lang='cpp']</p>
<p>#include <stdio.h><br />
#include <unistd .h><br />
#include <crypt .h><br />
#include <stdlib .h> </p>
<p>      void check(int);<br />
      void usr_in();<br />
      void pwd_r(char*,char*);<br />
     int main(int argc,char* argv[])</p>
<p>     /* Il primo e unico argomento è il nome utente*/<br />
     {<br />
     if(argc != 2){<br />
      printf("Usage: %s username\n",argv[0]);<br />
             return 0;<br />
     }</p>
<p>       char pass[35]; //utilizziamo un buffer di 35 bytes per la password criptata</p>
<p>       /*la funzione pwd_r legge il file delle password e carica sul buffer l'hash della password per quell'utente*/<br />
       pwd_r(argv[1],pass); </p>
<p>       char *result;<br />
       int ok;</p>
<p>       /* Leggi la password dell'utente e calcolane l'hash,immettendo anche la pass attesa*/<br />
       result = crypt(getpass("Password:"), pass); //getpass è una funzione di unistd che prompta la password</p>
<p>       /* Testa il risultato confrontando il buffer con l'hash della frase immessa dall'utente. */<br />
       ok = strcmp (result, pass) == 0;</p>
<p>       check(ok); //ok è 1 se l'hash della password immessa è uguale a quella reale presente nel file<br />
       }</p>
<p>     	void check(int p_chk){ //se le due hash corridpondono il processo di login procede con l'accesso dell'utente<br />
     		p_chk ? usr_in() : printf("Authentication Failure\nSpiacente.\n");<br />
 }</p>
<p>	 void pwd_r(char* user, char *buffer){<br />
 	FILE *fd;<br />
 	if(!(fd = fopen("shadow","r"))){ //routine standard di apertura del file in lettura<br />
 		fprintf(stderr,"Errore nell'apertura del file\n");<br />
 		exit(0);<br />
 		}</p>
<p>	/*stringa per stringa si effettua la ricerca dell'utente scelto fino alla terminazione del file*/<br />
                 while(!feof(fd) && strcmp(buffer,user))<br />
 	 fscanf(fd,"%s",buffer);</p>
<p>		if(feof(fd)){<br />
 		printf("L'utente non esiste\n");<br />
 		exit(0);<br />
 		}</p>
<p>		fscanf(fd,"%s",buffer); //se l'utente è stato trovato la stringa successiva è la sua password<br />
 	fclose(fd);<br />
 	}</p>
<p>    	void usr_in(){<br />
    		printf("Accesso effettuato\n");<br />
   	 }[/sourcecode]</stdlib></crypt></unistd></string></stdlib></crypt></unistd></time></stdio></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[[Ubuntu] Kerberos: installazione e configurazione...la guida completa]]></title>
<link>http://pollosky.wordpress.com/2007/07/27/ubuntu-kerberos-installazione-e-configurazionela-guida-completa/</link>
<pubDate>Fri, 27 Jul 2007 11:20:35 +0000</pubDate>
<dc:creator>LukePet</dc:creator>
<guid>http://pollosky.it.wordpress.com/2007/07/27/ubuntu-kerberos-installazione-e-configurazione-la-guida-completa/</guid>
<description><![CDATA[Negli ultimi mesi ho perso un pò di tempo a scrivere una tesina sul protocollo Kerberos. Il lavoro ]]></description>
<content:encoded><![CDATA[<p>Negli ultimi mesi ho perso un pò di tempo a scrivere una tesina sul protocollo <strong>Kerberos</strong>. Il lavoro prevedeva uno studio approfondito del sistema di autenticazione: l'obiettivo era di installare e configurare <em>Kerberos</em> su una rete, effettuare delle analisi del traffico ed approfondire eventuali vulnerabilità del sistema; il tutto è stato completamente svolto in ambiente <em>Linux</em>.</p>
<p>Mi sono reso conto ricercando documentazioni in rete che le guide disponibili sul web su come installare il protocollo sono un pò confusionarie ed incomplete (o per lo meno quelle che ho trovato io lo erano)...diciamo che per mettere su il sistema ho dovuto prendere indicazioni da più tutorials. Come se non bastasse per superare alcuni problemi che ho trovato in fase di configurazione ho comunicato direttamente (via chat e mail) con alcuni membri del <em>MIT</em> (<em>Massachusetts Institute of Technology</em>)...i creatori di <em>Kerberos,</em> per intenderci.</p>
<p>Tutte queste informazioni le ho naturalmente organizzate ed inserite nella tesina realizzata; ora...visto che alcuni di voi potrebbero averne bisogno ho deciso di estrarre una parte della tesina e metterla a disposizione, in modo che abbiate un chiaro riferimento per riuscire installare il sistema<em> Kerberos </em>sulle vostre macchine.</p>
<p>Per scaricare il documento in formato PDF vi basta cliccare su questo link: <a href="http://pollosky.wordpress.com/files/2007/07/guida-installazione-kerberos.pdf" title="Guida Kerberos">Guida Kerberos</a>.</p>
<p>Per chi non conosce ancora <em>Kerberos</em> allego anche una breve descrizione presa da <em>Wikipedia</em>: "<em><strong>Kerberos</strong> è un <a href="http://it.wikipedia.org/wiki/Protocollo_di_rete" title="Protocollo di rete">protocollo di rete</a> per l'<a href="http://it.wikipedia.org/wiki/Autenticazione" title="Autenticazione">autenticazione</a> tramite <a href="http://it.wikipedia.org/wiki/Crittografia" title="Crittografia">crittografia</a> che permette a diversi terminali di comunicare su una <a href="http://it.wikipedia.org/wiki/Rete_informatica" title="Rete informatica">rete informatica</a> insicura provando la propria identità e cifrando i dati. Kerberos previene l'<a href="http://it.wikipedia.org/wiki/Man_in_the_middle" title="Man in the middle">intercettazione</a> e i <a href="http://it.wikipedia.org/wiki/Replay_attack" title="Replay attack">replay attack</a>, e assicura l'integrità dei dati. I suoi progettisti mirarono soprattutto ad un modello <a href="http://it.wikipedia.org/wiki/Client-server" title="Client-server">client-server</a>, e fornisce una mutua autenticazione — sia l'utente che il fornitore del servizio possono verificare l'identità dell'altro. Kerberos si basa sulla <a href="http://it.wikipedia.org/wiki/Crittografia_simmetrica" title="Crittografia simmetrica">crittografia simmetrica</a> e richiede una terza parte affidabile.</em>"</p>
<p>Spero che queste informazioni possano esservi utili.</p>
]]></content:encoded>
</item>

</channel>
</rss>
