<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mauro Dalfreddo &#187; Delegation</title>
	<atom:link href="http://www.maurodalfreddo.it/archives/tag/delegation/feed" rel="self" type="application/rss+xml" />
	<link>http://www.maurodalfreddo.it</link>
	<description>My work, my life... my Blog</description>
	<lastBuildDate>Thu, 24 Jun 2010 12:10:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Double Hop ovvero Abilitare la delegation su SqlServer</title>
		<link>http://www.maurodalfreddo.it/archives/178/double-hop-ovvero-abilitare-la-delegation-su-sqlserver</link>
		<comments>http://www.maurodalfreddo.it/archives/178/double-hop-ovvero-abilitare-la-delegation-su-sqlserver#comments</comments>
		<pubDate>Thu, 19 Mar 2009 16:14:49 +0000</pubDate>
		<dc:creator>Mauro Dalfreddo</dc:creator>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Kerberos]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Delegation]]></category>
		<category><![CDATA[Impersonation]]></category>
		<category><![CDATA[SPN]]></category>

		<guid isPermaLink="false">http://www.maurodalfreddo.it/?p=178</guid>
		<description><![CDATA[Come implementare un double hop con SQL Server, ovvero implementare la delegation kerberos]]></description>
			<content:encoded><![CDATA[<p style="TEXT-ALIGN: left">Dopo aver analizzato come applicare la delega in uno schema 3 tier IE-IIS/ASP.NET-SQL Server nel mio articolo precedente <a href="/archives/112/impersonate-delegate"><strong>Impersonate &amp; delegate</strong></a>, passiamo alla sua applicazione nel solo contesto SQL Server.</p>
<p style="TEXT-ALIGN: left">Applicare il paradigma della delega (delegation) a SQL Server significa permettere ad un client collegato ad un&#8217;istanza di SQL Server di connettersi implicitamente ad un&#8217;altra istanza di SQL Server inviandogli le credenziali kerberos dell&#8217;utente autenticato da Windows.  Questo paradigma, applicato a Server SQL, è chiamato <em>double hop</em>.</p>
<p><img class="alignnone size-full wp-image-187" title="kerb_09" src="http://www.maurodalfreddo.it/wp-content/uploads/2009/03/kerb_09.jpg" alt="kerb_09" width="501" height="363" /></p>
<p>Sotto delegation è proprio l&#8217;istanza di SQL Server alla quale l&#8217;utente Windows si è connesso (usando l&#8217;autenticazione integrata), che impersona quell&#8217;utente stesso nelle comunicazioni con altre istanze.  La delegation è richiesta soprattutto nelle query distribuite che utilizzano linked servers.</p>
<h2>Implementazione di un double hop</h2>
<p>Consideriamo il caso seguente: un utente si logga una workstation e che si connette (per esempio con SQL Management Studio) ad un server all&#8217;istanza di SQL Server  SQLSERVER1. L&#8217;utente vuole eseguire query distribuite anche verso un database sul linked server SQLSERVER2.</p>
<p><strong>Requisiti per il Client:</strong></p>
<ul>
<li>la login dell&#8217;utente deve essere di tipo Windows</li>
<li>tale login deve aver diritti di accesso su SQLSERVER1 e SQLSERVER2.</li>
<li>in Active Directory,  bisogna verificare che la proprietà &#8221;Account is sensitive and cannot be delegated&#8221; non deve essere selezionata.</li>
<li>il computer client deve utilizzare per connettersi al DB il protocollo TCP/IP o named pipes.</li>
</ul>
<p><strong>Requisiti per il primo serverSQLSERVER1</strong> (o in generale per i server intermedi):</p>
<ul>
<li>deve essere stato registrato l&#8217;SPN per il server.</li>
<li>l&#8217;account col quale viene eseguito SQL deve essere &#8220;trusted for delegation&#8221;.</li>
<li>il server deve utilizzare il protocollo TCP/IP o named pipes.</li>
<li>il secondo server, SQLSERVER2,  deve essere aggiunto come linked server. Può essere fatto anche eseguendo la stored procedure sp_addlinkedserver:</li>
</ul>
<pre>EXEC sp_addlinkedserver 'SQLSERVER2', N'SQL Server'</pre>
<ul>
<li>il linked server deve essere configurato per effettuare il self mapping sulle login interessate (cioè deve essere passato il contesto di sicurezza della login connessa). Si può usare la stored procedure sp_addlinkedsrvlogin:</li>
</ul>
<pre>EXEC sp_addlinkedsrvlogin 'SQLSERVER2', 'true'</pre>
<p>La finestra delle proprietà di sicurezza del linked server dovrà essere simile alla seguente figura:</p>
<p style="TEXT-ALIGN: center"><a href="http://www.maurodalfreddo.it/wp-content/uploads/2009/03/kerb_10.jpg" target="_blank"><img class="size-medium wp-image-184 aligncenter" title="kerb_10" src="http://www.maurodalfreddo.it/wp-content/uploads/2009/03/kerb_10-280x300.jpg" alt="kerb_10" width="280" height="300" /></a></p>
<p>Sotto riporto un utile script da me creato ed utilizzato nella creazione e nella verifica dei linked server utilizzati negli hop.</p>
<p> </p>
<p><strong>Requisiti per il secondo server SQLSERVER2:</strong></p>
<ul>
<li>Se viene utilizzato il protocollo TCP/IP, bisogna registrare un SPN  in AD.</li>
<li>il server deve utilizzare il protocollo TCP/IP o named pipes.</li>
</ul>
<p> </p>
<pre><span style="color: #008000;">DECLARE @sname as nvarchar(50)
SET @sname ='SERVER2' -- Il nome del linked server</span></pre>
<pre><span style="color: #008000;">
-- Se il linkedsrv esiste ià, viene droppato
IF  EXISTS (SELECT srv.name FROM sys.servers srv
WHERE srv.server_id != 0 AND srv.name = @sname)
EXEC master.dbo.sp_dropserver @server=@sname, @droplogins='droplogins'
IF  EXISTS (SELECT srv.name FROM sys.servers srv
WHERE srv.server_id != 0 AND srv.name = @sname)
EXEC master.dbo.sp_dropserver @server=@sname, @droplogins='droplogins'</span></pre>
<pre><span style="color: #008000;">
DECLARE @providerstr as varchar(255)
SET @providerstr= 'DRIVER={SQL Server};SERVER='+ @sname +
';Integrated Security=SSPI;'</span></pre>
<pre><span style="color: #008000;">
-- Creazione del Linked server
EXEC sp_addlinkedserver  
  @server=@sname,   
  @srvproduct='',    
  @provider='SQLNCLI',   
  @datasrc=@sname, 
  @provstr= @providerstr </span></pre>
<pre><span style="color: #008000;">
EXEC sp_addlinkedsrvlogin @sname, 'true'</span></pre>
<pre><span style="color: #008000;">
-- Verifica se viene utilizzato il self mapping
SELECT uses_self_credential as delegation , S.name
FROM sys.linked_logins as L, sys.servers as S
WHERE S.server_id=L.server_id and S.name=@sname</span></pre>
<pre><span style="color: #008000;">
-- Esecuzione di una query distribuita
-- (bisogna avere i diritti sul secondo server)
EXECUTE('select * from '+@sname+'.master.dbo.sysdatabases')</span></pre>
<pre><span style="color: #008000;">
-- La prossima query deve restituire:
-- net_transport=TCP e auth_scheme=KERBEROS
SELECT net_transport, auth_scheme
FROM sys.dm_exec_connections
WHERE session_id=@@spid</span></pre>
<pre><span style="color: #008000;">
-- La prossima query deve elencare il linked server creato
SELECT * FROM sys.servers where name=@sname
</span></pre>
<p> </p>
<h2>Contesti di applicazione simili</h2>
<p>Lo schema della delegation può facilmente essere implenmentato per gli altri servizi SQL come Analysis Services, Reporting Services ed Integration Services; bisogna solamente fare attenzione alla fase di registrazione dell&#8217;SPN e ai diritti da applicate agli user account ed ai computer account coinvolti.</p>
<p>Per esempio per quanto riguarda Analysis Services l&#8217;SPN che deve essere registrato è del tipo:</p>
<pre>Setspn.exe -A MSOLAPSvc.3/Fqdn:InstanceName OLAP_Service_Account</pre>
<p> </p>
<h2>Riferimenti</h2>
<p>MSDN &#8211; <a href="http://msdn.microsoft.com/en-us/library/ms175537.aspx" target="_blank">Security for Linked Servers</a> , <a href="http://msdn.microsoft.com/en-us/library/ms189580.aspx" target="_blank">Configuring Linked Servers for Delegation</a></p>
<p>Microsoft &#8211; <a href="http://support.microsoft.com/kb/917409/en-us" target="_blank">How to configure SQL Server 2005 Analysis Services to use Kerberos authentication</a></p>
<p>MS Technet &#8211; <a href="http://blogs.technet.com/askds/archive/2008/06/13/understanding-kerberos-double-hop.aspx" target="_self">Understanding Kerberos Double Hop</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.maurodalfreddo.it/archives/178/double-hop-ovvero-abilitare-la-delegation-su-sqlserver/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Impersonate &amp; delegate</title>
		<link>http://www.maurodalfreddo.it/archives/112/impersonate-delegate</link>
		<comments>http://www.maurodalfreddo.it/archives/112/impersonate-delegate#comments</comments>
		<pubDate>Fri, 13 Mar 2009 15:55:46 +0000</pubDate>
		<dc:creator>Mauro Dalfreddo</dc:creator>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Kerberos]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Windows Autentication]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Delegation]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[Impersonation]]></category>
		<category><![CDATA[integrated authentication]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[NTLM]]></category>
		<category><![CDATA[security context]]></category>
		<category><![CDATA[SPN]]></category>
		<category><![CDATA[trusted connection]]></category>

		<guid isPermaLink="false">http://www.maurodalfreddo.it/?p=112</guid>
		<description><![CDATA[Implementare la delegation: come il security context di un utente può essere veicolato a partire dal client, per il middle tier fino al backend server con l'aiuto di Kerberos.]]></description>
			<content:encoded><![CDATA[<p>Finalmente trovo un po&#8217; di tempo per continuare la trattazione iniziata in un mio articolo precedente dei <a title="Motivi per veicolare il contesto utente fino al database" href="http://www.maurodalfreddo.it/archives/59"><strong>Motivi per veicolare il contesto utente fino al database</strong></a>, e a questo rimando dando per scontati alcuni argomenti.</p>
<p>Sono già stati evidenziati i benefici e le caratteristiche dell&#8217;utilizzo dell&#8217;autenticazione integrata e del contesto utente anche fino all&#8217;ultimo livello applicativo (tier). E&#8217; stata poi spiegata la configurazione da  utilizzare in un&#8217;archiettura a 3-tier (IE-IIS-SQL) tutta implementata in un unica macchina (single server).</p>
<p>Per capire come il security context di un utente possa essere veicolato esternamente ad un server da un servizio ad un altro,  bisogna comprendere i protocolli di autenticazione utilizzati.</p>
<p style="text-align: center;"><img class="size-full wp-image-131 aligncenter" title="kerb_00" src="http://www.maurodalfreddo.it/wp-content/uploads/2009/03/kerb_00.jpg" alt="kerb_00" width="325" height="87" /></p>
<p style="text-align: center;"><a href="http://www.maurodalfreddo.it/wp-content/uploads/2009/03/kerb_00.jpg"></a></p>
<p><strong></strong></p>
<h2>NTLM e Kerberos a confronto</h2>
<p>Il protocolli di autenticazione supportati da Windows sono NTLM (NT Lan Manager, fino dalla versione 4.0)  e Kerberos (da Win 2000 in poi).  Mentre NTLM si basa su un meccanismo di  challenge/response (ovvero lo scambio di un hash criptato tra client e server), Kerberos basa la sua architettura sull&#8217;esistenza di server autenticatori (KDC, Key distribuition center), che distribuiscono tikets (cifrati e firmati e quindi affidabili) ai client per utilizzare specifici servizi.</p>
<p>I pregi di Kerberos sono:</p>
<ul>
<li>lo standard aperto, basato sull&#8217;RFC 4120</li>
<li>la maggiore velocità, poiché, diversamente da NTLM, il servizio non deve verificare la validità dell&#8217;utente/client presso un DC, ma gli basta semplicemente il ticket stesso</li>
<li>la mutua autenticazione, poichè non solo il client si autentica al servizio (come NTLM),  ma il client stesso è certo dell&#8217;identità del servizio, poichè solo quello può leggere il ticket fornito</li>
<li>supporto per il logon tramite smart card</li>
<li>supporto per la delega dell&#8217;autenticazione (Authentication delegation o Authentication forwarding): grazie a questa caratteristica un servizio può accedere ad un risorsa remota per conto di un utente.</li>
</ul>
<p>Quet&#8217;ultimo punto sta a significare che un utente A può dare diritti ad un&#8217;entità intermedia B per autenticarsi ad un terzo server C, come se<br />
l&#8217;entità B fosse l&#8217;utente A stesso. Il server C baserà le sue decisioni autorizzative sull&#8217;identità di A invece che su quella di B.</p>
<p>E&#8217; possibile iterare questo schema per più livelli applicativi distribuiti (multi-tier applications) solamente utilizzando Kerberos e non NTLM, semplicemente perchè NTLM non supporta la delegation! Quindi NTLM funziona su un&#8217;architettura a single server solo perchè il security context dell&#8217;utente viene creato alla sua connessione al primo livello sul server (dopo l&#8217;autenticazione) ed è disponibile poi per i livelli applicativi sucessivi.</p>
<p>Nell&#8217;implementazione Microsoft di Kerberos, il servizio stesso è altamente integrato con Active Directory (AD) e tutti i dati e le credenziali sono memorizzati in essa</p>
<p><span id="more-112"></span></p>
<p> </p>
<h2>Negotiate</h2>
<p>Quando è attivata l&#8217;autenticazione Kerberos, tra Internet Explorer (MSIE) e Internet Information Server (IIS) vengono scambiati alcuni pacchetti per negoziare il protocollo più sicuro (RFC 4559): viene utilizzato l&#8217;algoritmo HTTP/SPNEGO che tenta dapprima di utilizzare Kerberos (Negotiate) e in caso negativo (fallback) poi i protocolli meno sicuri come NTLM, Digest e BASIC.</p>
<p>Per capire bene il meccanismo rimando all&#8217;interesante articolo <a href="http://www.adopenstatic.com/cs/blogs/ken/archive/2006/08/02/Two-easy-_2800_easier_3F002900_-ways-to-determine-Kerberos-from-NTLM-in-a-HTTP-capture.aspx" target="_blank">Two easy ways to determine kerberos from NTLM in a HTTP capture</a> di Ken Schaefer.</p>
<p> </p>
<h2>Service Principal Names (SPN)</h2>
<p>Un <em>service principal name</em> (SPN) è il nome col quale un servizio si registra in Kerberos e anche col quale un client identifica univocamente un&#8217;istanza di un servizio. Quando un client vuole connettersi ad un servizio, ne localizza un&#8217;istanza, ne ricava un SPN, si connette al servizio e presenta l&#8217;SPN del servizio per autenticarsi.</p>
<p>Un SPN è definito nel formato <em>serviceclass/host:port/servicename</em> . Se nome e porta non sono standard devono essere specificate. Ad esempio:</p>
<p>Se il servizio si chiama  MyService ed è eseguito sul computer DCA  e usa le porte TCP o UDP  8088 ed è localizzato in AD con il nome MyS nella UO denominata CS,  nel dominio cpandl.com, allora l&#8217;SPN sarà</p>
<pre>MyService/DCA.cpandl.com:8088/CN=MyS,OU=CS,DC=cpandl,DC=com</pre>
<p>Se il server WS2003A sta erogando un servizio di desktop remoto (RDP) sulla porta standard (TCP 3389). Allora i 2 SNP associati in AD saranno semplicemente:</p>
<pre>TERMSRV/WS2003A</pre>
<pre>TERMSRV/WS2003A.cpandl.com</pre>
<p>Per registrare un SPN è possibile utilizzare l&#8217;utility <a href="http://technet.microsoft.com/en-us/library/cc773257.aspx" target="_blank">setspn.exe</a> disponibile in Windows Server 2003, Windows Server 2008 o su XP/Vista con i Windows Server 2003 Support Tools.</p>
<p>Ad esempio per aggiungere un SPN per il servizio web-IIS di Machine (il cui pool gira con l&#8217;account di dominio &#8220;domain\user&#8221;) usare:</p>
<pre> Setspn.exe -A HTTP/Machine domain\user</pre>
<pre> Setspn.exe -A HTTP/Machine.domain.com domain\user </pre>
<p>Notare che deve essere registrato due volte sia per il nome NetBios cheper il FQDN. Nel caso in cui il servizio giri con il Local System Account/Network Service usare invece:</p>
<pre> Setspn.exe -A HTTP/Machine Machine</pre>
<pre> Setspn.exe -A HTTP/Machine.domain.com Machine </pre>
<p>L&#8217;utility setspn può essere utilizzata per conoscere quali SPN siano registrati in AD:</p>
<pre>setspn -l Machine</pre>
<pre>setspn -l domain\user</pre>
<p>Rimando comunque a  <a href="http://technet.microsoft.com/en-us/library/cc755413.aspx" target="_blank">Technet</a> per ulteriori esempi, opzioni ed utilizzi di setspn.</p>
<p> </p>
<h2>Abilitare la delegation</h2>
<p>Per abilitare la delegation tra i livelli applicativi è necessario abilitarla:</p>
<ul>
<li>per l&#8217;utente che usufruisce del servizio (non deve essere <em>sensitive</em>)</li>
<li>sull&#8217;utente con cui viene eseguito il servizio</li>
<li>per il conmputer account del server</li>
</ul>
<p>Bisogna verificare che gli user accounts non siano disabilitati per la delegation:</p>
<p style="TEXT-ALIGN: center"><a href="http://www.maurodalfreddo.it/wp-content/uploads/2009/03/kerb_02.jpg"></a><img class="size-full wp-image-129 aligncenter" title="kerb_02" src="http://www.maurodalfreddo.it/wp-content/uploads/2009/03/kerb_02.jpg" alt="kerb_02" width="404" height="484" /></p>
<p style="text-align: left;">Poi  bisogna abilitare il computer account e l&#8217;user account del servizio (dopo che è stato registrato l&#8217;SPN compare il Tab sul profilo).</p>
<p style="TEXT-ALIGN: center"><img class="size-full wp-image-128 aligncenter" title="kerb_01" src="http://www.maurodalfreddo.it/wp-content/uploads/2009/03/kerb_01.jpg" alt="kerb_01" width="404" height="484" /></p>
<p>La delegation può essere abilitata per tutti i servizi o per alcuni specifici; nella figura sopra all&#8217; utente-servizio IIS è stata abilitata la delega limitatamente per le connessioni al servizio SQL Server.</p>
<p>Bisogna inoltre verificare che siano impostati i giusti rights agli utenti interessati (ovvero a quelli con cui vengono eseguiti i servizi):</p>
<ul>
<li><em>Act as part of the operating system</em> per poter impersonare l&#8217;utente</li>
<li><em>Impersonate a client after authentication</em> per ogni account che dovrà delegare le credenziali (ovvero su tutti i middle tier intermedi), come l&#8217;account IIS</li>
</ul>
<p>Tali right possono essere impostati nelle local security policy dei singoli server o in qualche GPO di AD a seconda delle policy implementate e del contesto.</p>
<p> </p>
<h2> Un comune scenario: IE &#8211; IIS (ASP.NET) &#8211; SQL</h2>
<p>La seguente figura riassume tutte le attività che devono essere fatte o verificate per abilitare la delegation in questo tipico scenario.</p>
<p><img class="alignnone size-full wp-image-135" title="kerb_03" src="http://www.maurodalfreddo.it/wp-content/uploads/2009/03/kerb_03.jpg" alt="kerb_03" width="531" height="461" /></p>
<p>A) A livello di dominio:</p>
<ul>
<li>Gli user account non devono essere sentive (Tab Account)</li>
<li>Registrare gli SPN per i servizi IIS e SQL, specificatamente agli account con cui vengono eseguiti, usando comandi simili a:</li>
</ul>
<pre>Setspn.exe -A HTTP/MachineIIS domain\userIIS</pre>
<pre>Setspn.exe -A HTTP/MachineIIS.domain.com  domain\userIIS</pre>
<pre>Setspn.exe -A MSSQLSvc/MachineSQL:1433 domain\userSQL</pre>
<pre>Setspn.exe -A MSSQLSvc/MachineSQL.domain.com:1433 domain\userSQL</pre>
<ul>
<li>L&#8217;account IIS e quello del pool Asp.net deve essere Trusted for delegation (Tab Delegation)</li>
</ul>
<p> B) Sui client Internet Explorer</p>
<ul>
<li>Enable Window Authentication</li>
<li>In Strumenti-Opzioni Internet-Protezione verificare che il server IIS (o il dominio legato al virtualhost) sia censito nell&#8217;Intranet Zone</li>
</ul>
<p>C) Web Server; nella console di IIS sul Web Server</p>
<ul>
<li>impostare a livello di Site e Virtual directory unicamente l&#8217;opzione di Autenticazione integrata. Per evitare problematiche di instabilità o di malfunzionamenti impredicibili, bisogna assicurarsi che tutte le applicazioni web (virtual directory) che si appoggiano al Pool ASP.NET (per il quale è stato registrato l&#8217;SPN) abbiano abilitata solo questa impostazione.</li>
<li> Nel web.config della web application impostare: </li>
</ul>
<pre>&lt;authentication mode="Windows"/&gt;
&lt;identity impersonate="true"/&gt;</pre>
<ul>
<li>Nel web.config della web application impostare la connection string opportunamente in modo similare:</li>
</ul>
<pre>connectionString="Server=MachineSQL;Database=MYDB;Integrated Security=True"</pre>
<p> D) Database; con SQL Server Management studio</p>
<ul>
<li>Devono essere dati i diritti opportuni agli utenti  sul database </li>
</ul>
<p> </p>
<h2>Utility e debugging</h2>
<p>Una preziosa utility che permette di visualizzare i ticket kerberos attualmente presenti sul client è <a href="http://www.microsoft.com/downloads/details.aspx?familyid=4E3A58BE-29F6-49F6-85BE-E866AF8E7A88&amp;displaylang=en" target="_self">kerbtray</a> disponibile sul sito Microsoft. da citare anche l&#8217;utility testuale <a href="http://www.microsoft.com/downloads/details.aspx?familyid=1581E6E7-7E64-4A2D-8ABA-73E909D2A7DC&amp;displaylang=en" target="_blank">klist</a> che oltre a listare permette anche di cancellare i ticket presenti.</p>
<p><img class="alignnone size-full wp-image-142" title="kerb_04" src="http://www.maurodalfreddo.it/wp-content/uploads/2009/03/kerb_04.jpg" alt="kerb_04" width="390" height="459" /></p>
<p>Per abilitare invece i logging del client kerberos nel system log e per poterli visualizzare con Event Viewer bisogna valorizzare la seguente chiave di registro:</p>
<pre>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters</pre>
<pre>Registry Value: LogLevel
Value Type: REG_DWORD
Value Data: 0x1</pre>
<p>Una volta risolti i problemi conviene eliminare tale chiave di registro, poichè il logging  influenza le performance.</p>
<p> </p>
<h2>Riferimenti</h2>
<p>IETF &#8211; <a href="http://www.ietf.org/rfc/rfc4120.txt" target="_blank">The Kerberos Network Authentication Service (V5)</a></p>
<p>IETF &#8211; <a href="http://www.ietf.org/rfc/rfc4559.txt" target="_blank">SPNEGO-based Kerberos and NTLM HTTP Authentication in Microsoft Windows</a></p>
<p>Microsoft Download - <a href="http://download.microsoft.com/download/1/e/e/1ee86ce4-8234-4aa1-94f4-a37039837729/Troubleshooting_Kerberos_Delegation.DOC" target="_blank">Troubleshooting Kerberos Delegation in Windows 2000 and Windows Server 2003</a></p>
<p>Microsoft &#8211; <a href="http://support.microsoft.com/kb/929650/en-us" target="_blank">How to use SPNs when you configure Web applications that are hosted on IIS 6.0</a></p>
<p>MSDN &#8211; <a href="http://msdn.microsoft.com/en-us/library/ms998351.aspx" target="_blank">How To: Use Impersonation and Delegation in ASP.NET 2.0</a></p>
<p>MSDN &#8211; <a href="http://msdn.microsoft.com/en-us/library/ms998355.aspx" target="_blank">How To: Use Protocol Transition and Constrained Delegation in ASP.NET 2.0</a></p>
<p>MS Technet &#8211; <a href="http://technet.microsoft.com/en-us/library/cc773257.aspx" target="_blank">Setspn Overview</a></p>
<p>Ken Shaefer &#8211; <a href="http://www.adopenstatic.com/cs/blogs/ken/archive/2006/08/02/Two-easy-_2800_easier_3F002900_-ways-to-determine-Kerberos-from-NTLM-in-a-HTTP-capture.aspx" target="_blank">Two easy (easier?) ways to determine Kerberos from NTLM in a HTTP capture</a></p>
<p> Microsoft &#8211; <a href="http://support.microsoft.com/kb/215383/en-us" target="_blank">How to configure IIS to support both the Kerberos protocol and the NTLM protocol for network authentication</a></p>
<p>Microsoft &#8211; <a href="http://support.microsoft.com/kb/907272/en-us" target="_blank">Kerberos authentication and troubleshooting delegation issues</a></p>
<p>MS Technet &#8211; <a href="http://technet.microsoft.com/en-us/library/cc786325.aspx" target="_blank">Troubleshooting Kerberos Problems</a></p>
<p>Microsoft Download &#8211; <a href="http://www.microsoft.com/downloads/details.aspx?familyid=4E3A58BE-29F6-49F6-85BE-E866AF8E7A88&amp;displaylang=en" target="_blank">Windows 2000 Resource Kit Tool: Kerbtray.exe </a></p>
<p><a href="http://www.microsoft.com/DownLoads/details.aspx?FamilyID=99b0f94f-e28a-4726-bffe-2f64ae2f59a2&amp;displaylang=en"></a></p>
<p><a href="http://technet.microsoft.com/en-us/library/cc779070.aspx"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.maurodalfreddo.it/archives/112/impersonate-delegate/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
