<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Legacy Things]]></title><description><![CDATA[Le radici nascoste dell’IT moderno]]></description><link>https://www.legacythings.it</link><image><url>https://substackcdn.com/image/fetch/$s_!kkFJ!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf5f5b73-cbd0-43af-957a-01e6c2c39191_1024x1024.png</url><title>Legacy Things</title><link>https://www.legacythings.it</link></image><generator>Substack</generator><lastBuildDate>Sat, 13 Jun 2026 03:31:09 GMT</lastBuildDate><atom:link href="https://www.legacythings.it/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Marco Lelli]]></copyright><language><![CDATA[it]]></language><webMaster><![CDATA[legacythings@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[legacythings@substack.com]]></itunes:email><itunes:name><![CDATA[Marco Lelli]]></itunes:name></itunes:owner><itunes:author><![CDATA[Marco Lelli]]></itunes:author><googleplay:owner><![CDATA[legacythings@substack.com]]></googleplay:owner><googleplay:email><![CDATA[legacythings@substack.com]]></googleplay:email><googleplay:author><![CDATA[Marco Lelli]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Capitolo #3 - Il Domain Controller che diceva il falso]]></title><description><![CDATA[La fonte autorevole di una verit&#224; distorta]]></description><link>https://www.legacythings.it/p/capitolo-3-il-domain-controller-che</link><guid isPermaLink="false">https://www.legacythings.it/p/capitolo-3-il-domain-controller-che</guid><dc:creator><![CDATA[Marco Lelli]]></dc:creator><pubDate>Thu, 28 May 2026 07:01:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OH7c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059fb944-e706-4bdc-8c1d-1c6d403f6bc8_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>English version available here &#8594;<a href="https://www.legacythings.it/p/chapter-3-the-domain-controller-that"> [EN]</a></em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OH7c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059fb944-e706-4bdc-8c1d-1c6d403f6bc8_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OH7c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059fb944-e706-4bdc-8c1d-1c6d403f6bc8_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!OH7c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059fb944-e706-4bdc-8c1d-1c6d403f6bc8_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!OH7c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059fb944-e706-4bdc-8c1d-1c6d403f6bc8_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!OH7c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059fb944-e706-4bdc-8c1d-1c6d403f6bc8_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OH7c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059fb944-e706-4bdc-8c1d-1c6d403f6bc8_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/059fb944-e706-4bdc-8c1d-1c6d403f6bc8_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4701061,&quot;alt&quot;:&quot;Illustrazione concettuale sul tema della verit&#224; distorta e delle fonti autorevoli nel troubleshooting.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/199052394?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059fb944-e706-4bdc-8c1d-1c6d403f6bc8_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Illustrazione concettuale sul tema della verit&#224; distorta e delle fonti autorevoli nel troubleshooting." title="Illustrazione concettuale sul tema della verit&#224; distorta e delle fonti autorevoli nel troubleshooting." srcset="https://substackcdn.com/image/fetch/$s_!OH7c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059fb944-e706-4bdc-8c1d-1c6d403f6bc8_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!OH7c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059fb944-e706-4bdc-8c1d-1c6d403f6bc8_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!OH7c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059fb944-e706-4bdc-8c1d-1c6d403f6bc8_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!OH7c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059fb944-e706-4bdc-8c1d-1c6d403f6bc8_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Estate 1998</strong>, primo vero lavoro: sottomano mi passano centinaia di Motorola 8700, il telefono con il flip che tutti volevano. Nel giro di poco riesco a connettere i sistemi in un dominio Windows NT, trasformando il modo di lavorare disconnesso degli operatori in qualcosa di moderno.</p><p>Fuori da quella stanza, il mondo stava vivendo un&#8217;estate intensa.</p><p>Nelle sale italiane <strong>The Truman Show</strong> teneva banco: un uomo che viveva una vita perfetta, ignaro del fatto che ogni dettaglio intorno a lui era costruito a tavolino. Una realt&#224; impeccabile nella forma, falsa nella sostanza. Nei <strong>Mondiali di calcio in Francia</strong> si consumava invece un altro piccolo mistero: si diceva che il sorteggio del girone, presieduto da <strong>Platini</strong>, non fosse poi cos&#236; casuale come appariva. La distinta ufficiale parlava chiaro, i numeri erano l&#236; a disposizione, eppure il risultato sembrava scritto prima ancora di iniziare. Qualcosa non tornava e l&#8217;ammissione arriver&#224; solo 20 anni dopo. E mentre i ragazzi consumavano le ore su <strong>FIFA Road to World Cup 98</strong> con <strong>Song 2</strong> dei <strong>Blur</strong> nelle orecchie, dall&#8217;altra parte dell&#8217;Atlantico <strong>Bill Clinton,</strong> a gennaio, guardava dritto in camera e dichiarava al mondo intero di non aver avuto alcuna relazione con <strong>Monica Lewinsky</strong>. Verr&#224; smentito il 17 agosto.</p><p>Tre storie diverse, un unico filo: una fonte attendibile che restituisce <em><strong>una risposta che non corrisponde alla realt&#224;</strong></em>.</p><p>In quegli stessi giorni, in un datacenter Microsoft, veniva rilasciato silenziosamente Windows NT 4.0 Terminal Server Edition, nome in codice <strong>Hydra</strong>. Con lui nasceva quello che tutti avrebbero chiamato <strong>Terminal Services</strong>, e che il mondo conosce oggi come <strong>RDP</strong>.</p><p>Quasi ventisette anni dopo, su un sistema protetto da una delle piattaforme di sicurezza pi&#249; avanzate al mondo, un utente prova ad aprire una sessione RDP e si trova davanti un messaggio inequivocabile: <strong>&#8220;A user account restriction is preventing you from logging on.&#8221;</strong></p><p>Il Domain Controller ha parlato, l&#8217;IP &#232; quello giusto, la fonte &#232; attendibile.</p><p>Eppure anche qui, qualcosa non tornava.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.legacythings.it/subscribe?&quot;,&quot;text&quot;:&quot;Iscriviti ora&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.legacythings.it/subscribe?"><span>Iscriviti ora</span></a></p><h2>Lo scenario</h2><p>A differenza dei capitoli precedenti, in questo articolo non parleremo della tecnologia in s&#233;, il protocollo RDP &#232; solamente l&#8217;innesco di una situazione pi&#249; intrecciata, per questo motivo andremo invece ad approfondire lo specifico scenario che si &#232; rivelato essere molto interessante.</p><p>Iniziamo descrivendo il contesto che, a una prima occhiata, non ha legami con tecnologie cloud, risulta essere molto comune, quasi banale.</p><p>&#200; uno di quegli ambienti che chi lavora con Active Directory incontra spesso, soprattutto nel mondo enterprise:</p><p>Una filiale italiana di una multinazionale, forte focus <strong>on&#8209;premise</strong>, con un&#8217;infrastruttura Active Directory stratificata nel tempo. Le linee guida arrivano dall&#8217;HQ.<br>Un <strong>child domain</strong>, eredit&#224; di una riorganizzazione avvenuta anni prima, e una manciata di <strong>Domain Controller distribuiti su pi&#249; siti</strong>: alcuni fisicamente in sede, altri ospitati su infrastruttura cloud, integrati nel disegno come semplice estensione del perimetro aziendale.</p><p>Niente di particolare. Niente che, sulla carta, faccia pensare a problemi imminenti.</p><p>Sembra quasi l&#8217;incipit di &#8220;<em>Un giorno di ordinaria follia</em>&#8221;, ma quello &#232; un altro film&#8230;</p><p>Da anni, per le attivit&#224; operative quotidiane sull&#8217;applicativo <em><strong>XYZ</strong></em>, viene utilizzato un <strong>account amministrativo generico</strong>, condiviso tra pi&#249; persone: <em><strong>XYZ-admin</strong></em>.<br>Una scelta che oggi farebbe storcere il naso a chiunque parli di Identity governance o Zero Trust, ma che nel tempo aveva sempre fatto il suo lavoro e per la logica del <em>&#8220;funziona = non si tocca&#8221; </em>&#232; rimasto come eredit&#224;.<br>Accessi RDP, attivit&#224; di manutenzione, interventi urgenti: tutto &#232; passato di l&#236; per anni, senza intoppi.</p><p>Finch&#233;, un giorno, <strong>smette di funzionare</strong>.</p><p>Non gradualmente. Non &#8220;a volte s&#236;, a volte no&#8221;. Improvvisamente non si accede pi&#249;.</p><p>Ogni tentativo di accesso RDP con quell&#8217;account restituisce lo stesso risultato:</p><p><em><strong>&#8220;A user account restriction is preventing you from logging on.&#8221;</strong></em></p><p>Nessun cambiamento apparente, nessuna modifica dichiarata, nessun alert che indichi cosa stia succedendo.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gHN2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a497d5a-e2f9-44b6-ac11-f92d5a2eb46f_603x401.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gHN2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a497d5a-e2f9-44b6-ac11-f92d5a2eb46f_603x401.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gHN2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a497d5a-e2f9-44b6-ac11-f92d5a2eb46f_603x401.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gHN2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a497d5a-e2f9-44b6-ac11-f92d5a2eb46f_603x401.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gHN2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a497d5a-e2f9-44b6-ac11-f92d5a2eb46f_603x401.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gHN2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a497d5a-e2f9-44b6-ac11-f92d5a2eb46f_603x401.jpeg" width="603" height="401" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a497d5a-e2f9-44b6-ac11-f92d5a2eb46f_603x401.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:401,&quot;width&quot;:603,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:31781,&quot;alt&quot;:&quot;Schermata di errore RDP con il messaggio &#8220;A user account restriction is preventing you from logging on.&#8221;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/199052394?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a497d5a-e2f9-44b6-ac11-f92d5a2eb46f_603x401.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Schermata di errore RDP con il messaggio &#8220;A user account restriction is preventing you from logging on.&#8221;" title="Schermata di errore RDP con il messaggio &#8220;A user account restriction is preventing you from logging on.&#8221;" srcset="https://substackcdn.com/image/fetch/$s_!gHN2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a497d5a-e2f9-44b6-ac11-f92d5a2eb46f_603x401.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gHN2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a497d5a-e2f9-44b6-ac11-f92d5a2eb46f_603x401.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gHN2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a497d5a-e2f9-44b6-ac11-f92d5a2eb46f_603x401.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gHN2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a497d5a-e2f9-44b6-ac11-f92d5a2eb46f_603x401.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><strong>Un errore RDP apparentemente chiaro pu&#242; essere solo il primo livello del problema.</strong></figcaption></figure></div><p>La problematica scala al personale IT del cliente che inizia un primo troubleshooting. Il primo istinto &#232; quello pi&#249; naturale: <strong>provare a cambiare Domain Controller</strong>.<br>Forzare l&#8217;autenticazione verso DC diversi, magari su site differenti, per escludere un problema puntuale.<br>Ma il risultato non cambia, stessa risposta, stesso errore.</p><p>Nel frattempo, emerge una coincidenza temporale difficile da ignorare: <strong>nei giorni precedenti &#232; stato eseguito un ciclo di patching sui Domain Controller</strong>.<br>La pista sembra promettente.<br>Il cliente controlla gli aggiornamenti installati, si cercano articoli su internet, si confrontano versioni, si ipotizzano bug diffusi spulciando i forum IT.<br>&#200; una spiegazione logica e rassicurante: qualcosa &#232; cambiato, quindi qualcosa si &#232; &#8220;rotto&#8221;.</p><p>Il problema &#232; che, anche scavando, <strong>non emerge nulla</strong>:</p><p>&#183; Le patch sui DC sono allineate</p><p>&#183; Non ci sono altri utenti che si lamentano di mancato accesso</p><p>&#183; Non ci sono errori evidenti nei log che giustifichino un comportamento cos&#236; selettivo</p><p>A questo punto le idee del cliente iniziano ad esaurirsi.<br>Le ipotesi pi&#249; ovvie sono state esplorate, le verifiche standard eseguite, non sono emerse soluzioni rapide.</p><p>&#200; solo allora che il cliente decide di aprire il ticket verso il nostro supporto.</p><p>Ed &#232; proprio qui che la situazione diventa interessante.</p><h2>L&#8217;analisi</h2><p>La problematica viene quindi assegnata ad uno dei consulenti del mio team, che inizia ad approfondire. Come prima cosa ri-verifica il percorso fatto dal cliente, per la logica del &#8220;fidarsi &#232; bene ma non fidarsi &#232; meglio&#8221;. Nulla di nuovo.</p><p>Passa quindi ad analizzare in dettaglio il messaggio di errore: <em><strong>&#8220;A user account restriction is preventing you from logging on.&#8221;</strong></em></p><p>Le &#8220;<em>user account restriction</em>&#8221; sono impostazioni che arrivano da lontano, dai tempi di <strong>Windows NT 4</strong>, quelle che hanno un effetto diretto sulle sessioni RDP di solito sono: <em>Logon Time Restriction</em> e <em>Workstation Restriction</em>.</p><p>Viene controllato l&#8217;utente ma nessuna traccia di quelle impostazioni, sembra tutto in ordine, idem per le GPO applicate allo stesso.</p><p>Si controllano quindi gli eventi sul <em>Target System</em>, ma anche l&#236; nulla.</p><p>Si cambia quindi prospettiva passando a prove empiriche con altri account, scoprendo comportamenti curiosi:</p><p>&#183; Provando ad accedere in RDP allo stesso server <em><strong>con l&#8217;utente del consulente</strong></em>, l&#8217;accesso <strong>va a buon fine</strong></p><p>&#183; Provando a creare <em><strong>un nuovo utente</strong></em> e ad accedere con questo in RDP, si ottiene lo <strong>stesso errore</strong></p><p>&#183; Provando a usare <em><strong>un Source System differente</strong></em> e l&#8217;utente <em><strong>XYZ-admin </strong></em>l&#8217;accesso <strong>va a buon fine</strong></p><p>Non &#232; quindi una questione di solo utente, ma una combinazione di: <strong>utente + Source System + Target System</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T3kp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9009fb14-ea36-4087-8666-d708df4504cb_541x471.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T3kp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9009fb14-ea36-4087-8666-d708df4504cb_541x471.jpeg 424w, https://substackcdn.com/image/fetch/$s_!T3kp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9009fb14-ea36-4087-8666-d708df4504cb_541x471.jpeg 848w, https://substackcdn.com/image/fetch/$s_!T3kp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9009fb14-ea36-4087-8666-d708df4504cb_541x471.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!T3kp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9009fb14-ea36-4087-8666-d708df4504cb_541x471.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T3kp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9009fb14-ea36-4087-8666-d708df4504cb_541x471.jpeg" width="541" height="471" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9009fb14-ea36-4087-8666-d708df4504cb_541x471.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:471,&quot;width&quot;:541,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38022,&quot;alt&quot;:&quot;Schema della relazione tra utente, Source System e Target System nel flusso di accesso RDP.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/199052394?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9009fb14-ea36-4087-8666-d708df4504cb_541x471.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Schema della relazione tra utente, Source System e Target System nel flusso di accesso RDP." title="Schema della relazione tra utente, Source System e Target System nel flusso di accesso RDP." srcset="https://substackcdn.com/image/fetch/$s_!T3kp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9009fb14-ea36-4087-8666-d708df4504cb_541x471.jpeg 424w, https://substackcdn.com/image/fetch/$s_!T3kp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9009fb14-ea36-4087-8666-d708df4504cb_541x471.jpeg 848w, https://substackcdn.com/image/fetch/$s_!T3kp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9009fb14-ea36-4087-8666-d708df4504cb_541x471.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!T3kp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9009fb14-ea36-4087-8666-d708df4504cb_541x471.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Quando l&#8217;errore dipende dalla combinazione tra utente, sistema sorgente e sistema di destinazione, il troubleshooting cambia scala.</figcaption></figure></div><p>Anche in questo caso la questione arriva sul mio tavolo per un parere. Iniziamo ad andare a fondo, partendo da quelle che considero <em>le tavole della legge</em> del troubleshooting:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LMAR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16b0071e-3702-4796-903e-9da366d90586_261x340.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LMAR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16b0071e-3702-4796-903e-9da366d90586_261x340.png 424w, https://substackcdn.com/image/fetch/$s_!LMAR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16b0071e-3702-4796-903e-9da366d90586_261x340.png 848w, https://substackcdn.com/image/fetch/$s_!LMAR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16b0071e-3702-4796-903e-9da366d90586_261x340.png 1272w, https://substackcdn.com/image/fetch/$s_!LMAR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16b0071e-3702-4796-903e-9da366d90586_261x340.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LMAR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16b0071e-3702-4796-903e-9da366d90586_261x340.png" width="261" height="340" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16b0071e-3702-4796-903e-9da366d90586_261x340.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:340,&quot;width&quot;:261,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:170762,&quot;alt&quot;:&quot;Immagine simbolica delle tavole della legge usata come metafora del metodo di troubleshooting.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/199052394?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16b0071e-3702-4796-903e-9da366d90586_261x340.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Immagine simbolica delle tavole della legge usata come metafora del metodo di troubleshooting." title="Immagine simbolica delle tavole della legge usata come metafora del metodo di troubleshooting." srcset="https://substackcdn.com/image/fetch/$s_!LMAR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16b0071e-3702-4796-903e-9da366d90586_261x340.png 424w, https://substackcdn.com/image/fetch/$s_!LMAR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16b0071e-3702-4796-903e-9da366d90586_261x340.png 848w, https://substackcdn.com/image/fetch/$s_!LMAR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16b0071e-3702-4796-903e-9da366d90586_261x340.png 1272w, https://substackcdn.com/image/fetch/$s_!LMAR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16b0071e-3702-4796-903e-9da366d90586_261x340.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Le tavole della legge del troubleshooting</figcaption></figure></div><p>Si passa quindi a fare una traccia di rete sul Source System, iniziando a scoprire cose interessanti:</p><p>&#183; La sessione RDP non arriva a dialogare con il <em>Target System</em>, il blocco avviene prima</p><p>&#183; Viene individuata la corrispondenza con il messaggio di errore:</p><blockquote><p>o Il <em>Source System</em> inizia una sessione RDP verso il <em>Target System</em></p><p>o il <em>Source System</em> dialoga quindi con un <em>Domain Controller</em> chiedendo autorizzazione all&#8217;accesso <strong>RDP</strong> per l&#8217;utente <em>XYZ-admin@domain.xyz </em>verso il<em> Target System</em></p><p>o A quel punto il <em>Domain Controller</em> risponde con un errore Kerberos: <strong>KDC_ERR_POLICY</strong></p></blockquote><p>&#183; Quando la connessione avviene dal <em>Source System 2</em>, non vi &#232; traccia dell&#8217;errore Kerberos</p><p>&#183; Quando la connessione avviene dal <em>Source System</em>, ma con l&#8217;utente del consulente non si ottiene alcun errore Kerberos</p><p>Si passa quindi a verificare cosa succede sul <em>Domain Controller</em> in questione, analizzandone i log in dettaglio. Qui succede una cosa incomprensibile: viene tracciato un evento che corrisponde in maniera precisa, per data, ora e ambito, a quello presente nella traccia di rete, peccato che abbia esito affermativo: <em><strong>&#232; un&#8217;autorizzazione lecita all&#8217;accesso!</strong></em></p><p>Il <em>Domain Controller</em> &#232; quindi convinto di aver rilasciato un <strong>OK</strong>, mentre il <em>Source System</em> riceve in risposta un <strong>KO</strong>. Chi o cosa nel mezzo sta mentendo???</p><p>L&#8217;analisi prosegue e facendo altre tracce di rete si scoprono altre cose curiose:</p><p>&#183; Tutte le chiamate che vanno a buon fine dal <em>Source System 2</em> richiedono <em>sempre autorizzazione ad uno specifico <strong>Domain Controller.</strong></em></p><p>&#183; Tutte le chiamate che vanno in errore dal <em>Source System</em> non chiedono mai autorizzazione al Domain Controller con cui dialoga il <em>Source System 2</em>, anzi <em>vengono contattati <strong>Domain Controller</strong> a caso nel mondo.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lJKl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e2ebdb4-5847-425d-a592-82b4628b4287_602x365.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lJKl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e2ebdb4-5847-425d-a592-82b4628b4287_602x365.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lJKl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e2ebdb4-5847-425d-a592-82b4628b4287_602x365.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lJKl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e2ebdb4-5847-425d-a592-82b4628b4287_602x365.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lJKl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e2ebdb4-5847-425d-a592-82b4628b4287_602x365.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lJKl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e2ebdb4-5847-425d-a592-82b4628b4287_602x365.jpeg" width="602" height="365" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0e2ebdb4-5847-425d-a592-82b4628b4287_602x365.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:365,&quot;width&quot;:602,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:42098,&quot;alt&quot;:&quot;Schema dei Domain Controller contattati dai sistemi sorgente, con differenze tra percorso corretto e percorso in errore.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/199052394?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e2ebdb4-5847-425d-a592-82b4628b4287_602x365.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Schema dei Domain Controller contattati dai sistemi sorgente, con differenze tra percorso corretto e percorso in errore." title="Schema dei Domain Controller contattati dai sistemi sorgente, con differenze tra percorso corretto e percorso in errore." srcset="https://substackcdn.com/image/fetch/$s_!lJKl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e2ebdb4-5847-425d-a592-82b4628b4287_602x365.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lJKl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e2ebdb4-5847-425d-a592-82b4628b4287_602x365.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lJKl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e2ebdb4-5847-425d-a592-82b4628b4287_602x365.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lJKl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e2ebdb4-5847-425d-a592-82b4628b4287_602x365.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">La differenza tra successo ed errore era nascosta nel percorso verso il Domain Controller &#8220;giusto&#8221;.</figcaption></figure></div><p>Abbiamo quindi identificato la sequenza di errore ma la causa non &#232; ancora chiara, anzi le prove non fanno altro che confondere le idee.</p><p>Con la convinzione che &#8220;ci sia qualcosa nel mezzo&#8221;, supportata dal mancato dialogo con l&#8217;unico <em>Domain Controller</em> &#8220;buono&#8221;, si torna ad indagare sulla rete aprendo questa volta un ticket al supporto network di HQ.</p><p>Rimangono comunque dubbi sul come mai l&#8217;account del consulente funzioni regolarmente.</p><p>Passa qualche giorno e da HQ arriva un messaggio interessante: <em>ho sistemato l&#8217;account, riprovate adesso.</em></p><p>Aspetta&#8230; come &#8220;ho sistemato l&#8217;account&#8221;, qual &#232; la spiegazione con tutto questo?</p><p>Ad ogni modo si procede con un nuovo test e, meraviglia, tutto funziona!</p><p>Vengono quindi richiesti maggiori chiarimenti, dopo tutta questa fatica abbiamo bisogno di capire.</p><p>La risposta &#232; disarmante: &#232; colpa di <strong>CrowdStrike</strong>, che aveva marcato l&#8217;utente come &#8220;non umano&#8221;.</p><p>Quindi avevamo ragione, c&#8217;era veramente qualcosa nel mezzo! Solo che nessuno aveva visibilit&#224; su cosa.</p><p>Ma andiamo con ordine e ricostruiamo quello che &#232; successo, perch&#233; &#232; una di quelle situazioni interessanti dove il caos e le incomprensioni la fanno da padrona:</p><p>&#183; CrowdStrike ha un modulo che si chiama &#8220;<a href="https://www.crowdstrike.com/products/identity-protection/">Identity Protection</a>&#8221;</p><p>&#183; HQ ha distribuito l&#8217;agente di CrowdStrike sui Domain Controller, tutti tranne quello con cui parlava <em>Source System 2</em></p><p>&#183; CrowdStrike ha fatto una scansione e ha identificato XYZ-admin come Non-Human Identity</p><p>&#183; L&#8217;agente sui Domain Controller ha preso il controllo delle risposte Kerberos, modificandole in corsa secondo i propri parametri</p><p>&#183; I Domain Controller erano quindi convinti di avere risposto OK, ma l&#8217;agente lo convertiva in KO</p><p>&#183; A complicare tutto c&#8217;&#232; stato effettivamente un problema di rete, il Source System aveva la strada bloccata verso il Domain Controller &#8220;buono&#8221; ottenendo un regolare KO per le sessioni RDP di XYZ-admin</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zK5z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37382298-2bb8-4573-918f-403bcceaef24_602x365.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zK5z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37382298-2bb8-4573-918f-403bcceaef24_602x365.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zK5z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37382298-2bb8-4573-918f-403bcceaef24_602x365.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zK5z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37382298-2bb8-4573-918f-403bcceaef24_602x365.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zK5z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37382298-2bb8-4573-918f-403bcceaef24_602x365.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zK5z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37382298-2bb8-4573-918f-403bcceaef24_602x365.jpeg" width="602" height="365" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/37382298-2bb8-4573-918f-403bcceaef24_602x365.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:365,&quot;width&quot;:602,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:47638,&quot;alt&quot;:&quot;Schema finale del caso con interazione tra rete, Domain Controller, Kerberos e controllo delle risposte da parte dell&#8217;agente.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/199052394?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37382298-2bb8-4573-918f-403bcceaef24_602x365.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Schema finale del caso con interazione tra rete, Domain Controller, Kerberos e controllo delle risposte da parte dell&#8217;agente." title="Schema finale del caso con interazione tra rete, Domain Controller, Kerberos e controllo delle risposte da parte dell&#8217;agente." srcset="https://substackcdn.com/image/fetch/$s_!zK5z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37382298-2bb8-4573-918f-403bcceaef24_602x365.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zK5z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37382298-2bb8-4573-918f-403bcceaef24_602x365.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zK5z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37382298-2bb8-4573-918f-403bcceaef24_602x365.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zK5z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37382298-2bb8-4573-918f-403bcceaef24_602x365.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">La verit&#224; era nel mezzo: rete, Kerberos e controllo delle risposte si erano intrecciati nello stesso errore.</figcaption></figure></div><p>La cosa che pi&#249; mi ha colpito di questo strano caso &#232; questa: siamo di fronte ad una tecnologia Cloud moderna (<strong>CrowdStrike</strong>) che governa tecnologie legacy senza tenere conto dei reali effetti sulle stesse, generando comportamenti strani ed errori fuorvianti.</p><p>Entra inoltre nell&#8217;equazione il concetto di <strong>Non-Human Identity</strong>, che ha radici profonde negli ambienti legacy, ma &#232; diventato attualissimo sotto la spinta dei sistemi <strong>AI</strong>.</p><p>E per la cronaca, il povero Domain Controller non aveva colpe: lui la verit&#224; stava provando a dirla veramente&#8230;</p><h2>Cosa ci ha insegnato</h2><p>La prima lezione che questo caso ci lascia &#232; semplice solo in apparenza: anche le fonti pi&#249; autorevoli possono raccontare una verit&#224; distorta. E dietro non c&#8217;&#232; sempre un bug o una cattiva configurazione, ma spesso c&#8217;&#232; il fatto che il contesto in cui operano &#232; cambiato, mentre loro continuano a svolgere il proprio lavoro con coerenza implacabile.</p><p>Il povero Domain Controller non era guasto o &#8220;bugiardo&#8221;.<br>Stava facendo il proprio mestiere rispondendo con sicurezza.<br>Eppure la risposta che arrivava non era quella utile. Era formalmente corretta, sostanzialmente sbagliata.</p><p>La seconda lezione riguarda il modo in cui interpretiamo gli errori.<br>Messaggi fuorvianti, log senza errori, comportamenti incoerenti tra sistemi identici: il troubleshooting moderno a volte non offre indizi diretti. I meccanismi legacy si intrecciano con livelli di protezione sempre pi&#249; sofisticati e &#8220;governati dall&#8217;alto&#8221;, creando scenari in cui ogni pezzo della catena sembra funzionare&#8230; ma il risultato continua a non tornare.</p><p>Infine, riagganciandoci al <a href="https://www.legacythings.it/p/capitolo-2-una-questione-di-fiducia?r=7oz2wp">capitolo 2</a>, c&#8217;&#232; un insegnamento pi&#249; grande: <strong>la fiducia nel sistema</strong> &#232; spesso data per scontata.<br>Ci fidiamo del Domain Controller, del DNS, del network, degli agent, dei layer di protezione cloud. Ma ogni elemento introduce il proprio modello di verit&#224;, costruito nel proprio perimetro. Quando questi modelli non sono allineati o non dialogano tra di loro in maniera coerente, ci&#242; che riceviamo non &#232; un errore esplicito, ma una risposta &#8220;corretta&#8221; che non rappresenta pi&#249; la realt&#224;.</p><p>E questo vale non solo per gli account umani.<br>Sempre pi&#249; spesso, nelle infrastrutture moderne, le identit&#224; realmente critiche non sono quelle delle persone, ma quelle dei processi, dei servizi, dei connettori, dei job schedulati. Le <strong>Non&#8209;Human Identities</strong> operano sottotraccia, con privilegi spesso invisibili, e prendono decisioni in autonomia. Sarebbe ingenuo pensare che non possano incappare negli stessi paradossi, o crearne di nuovi.<br><a href="https://www.microsoft.com/en-us/security/business/security-101/what-are-non-human-identities">What Are Non-human Identities? | Microsoft Security</a></p><p>Per ora, la lezione resta chiara:<br>nei sistemi complessi la verit&#224; non sparisce in maniera netta. Si nasconde in silenzio, finch&#233; qualcuno non decide di guardare nel posto giusto.</p><p>Questo capitolo &#232; per <strong>Denys</strong>, che ha trovato la verit&#224; nel posto giusto. Spero che anche ora sia nel posto giusto.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.legacythings.it/subscribe?&quot;,&quot;text&quot;:&quot;Iscriviti&quot;,&quot;language&quot;:&quot;it&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Grazie per aver letto Legacy Things! Iscriviti gratuitamente per supportare il mio lavoro.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digita la tua email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Iscriviti"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Chapter #3 - The Domain Controller That Lied]]></title><description><![CDATA[The authoritative source of a distorted truth]]></description><link>https://www.legacythings.it/p/chapter-3-the-domain-controller-that</link><guid isPermaLink="false">https://www.legacythings.it/p/chapter-3-the-domain-controller-that</guid><dc:creator><![CDATA[Marco Lelli]]></dc:creator><pubDate>Thu, 28 May 2026 06:50:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ZXrJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f42e45c-b9be-4d34-869e-555d448405bb_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Versione italiana disponibile qui &#8594;</em><a href="https://www.legacythings.it/p/capitolo-1-adminsdholder-il-guardiano"> </a><em><a href="https://www.legacythings.it/p/capitolo-3-il-domain-controller-che">[IT]</a></em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZXrJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f42e45c-b9be-4d34-869e-555d448405bb_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZXrJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f42e45c-b9be-4d34-869e-555d448405bb_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!ZXrJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f42e45c-b9be-4d34-869e-555d448405bb_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!ZXrJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f42e45c-b9be-4d34-869e-555d448405bb_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!ZXrJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f42e45c-b9be-4d34-869e-555d448405bb_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZXrJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f42e45c-b9be-4d34-869e-555d448405bb_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6f42e45c-b9be-4d34-869e-555d448405bb_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4701061,&quot;alt&quot;:&quot;Conceptual illustration about distorted truth and authoritative sources in troubleshooting.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/199053556?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f42e45c-b9be-4d34-869e-555d448405bb_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Conceptual illustration about distorted truth and authoritative sources in troubleshooting." title="Conceptual illustration about distorted truth and authoritative sources in troubleshooting." srcset="https://substackcdn.com/image/fetch/$s_!ZXrJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f42e45c-b9be-4d34-869e-555d448405bb_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!ZXrJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f42e45c-b9be-4d34-869e-555d448405bb_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!ZXrJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f42e45c-b9be-4d34-869e-555d448405bb_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!ZXrJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f42e45c-b9be-4d34-869e-555d448405bb_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Summer 1998</strong>, my first real job: I find myself handling hundreds of Motorola 8700s, the flip phone everybody wanted. Before long, I manage to connect the systems into a Windows NT domain, transforming the operators&#8217; disconnected way of working into something modern.</p><p>Outside that room, the world was living through an intense summer.</p><p>In Italian cinemas, <strong>The Truman Show</strong> was all anyone talked about: a man living a perfect life, unaware that every detail around him had been carefully constructed. A reality flawless in form, false in substance. In the <strong>1998 World Cup in France</strong>, another small mystery was unfolding: people said the group-stage draw, presided over by <strong>Platini</strong>, was not as random as it looked. The official sheet was crystal clear, the numbers were there for everyone to see, and yet the outcome seemed written before it had even begun. Something did not add up, and the admission would only come 20 years later. And while kids were spending hours playing <strong>FIFA Road to World Cup 98</strong> with <strong>Song 2</strong> by <strong>Blur</strong> in their ears, on the other side of the Atlantic <strong>Bill Clinton</strong>, in January, looked straight into the camera and told the whole world that he had not had any relationship with <strong>Monica Lewinsky</strong>. He would be contradicted on August 17.</p><p>Three different stories, one common thread: a trustworthy source returning <em><strong>an answer that does not match reality.</strong></em></p><p>In those same days, in a Microsoft datacenter, Windows NT 4.0 Terminal Server Edition, codenamed <strong>Hydra</strong>, was quietly released. With it, what everyone would later call <strong>Terminal Services</strong> was born, and what the world now knows as <strong>RDP</strong>.</p><p>Almost twenty seven years later, on a system protected by one of the most advanced security platforms in the world, a user tries to open an RDP session and is met with an unmistakable message: <strong>&#8220;A user account restriction is preventing you from logging on.&#8221;</strong></p><p>The Domain Controller has spoken, the IP is the right one, the source is trustworthy.</p><p>And yet here too, something did not add up.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.legacythings.it/subscribe?&quot;,&quot;text&quot;:&quot;Iscriviti ora&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.legacythings.it/subscribe?"><span>Iscriviti ora</span></a></p><h2>The scenario</h2><p>Unlike the previous chapters, in this article we will not be talking about the technology itself, the RDP protocol is only the trigger for a more tangled situation, which is why we will instead dig into the specific scenario, one that turned out to be very interesting.</p><p>Let us begin by describing the context which, at first glance, has no connection with cloud technologies and appears to be very common, almost ordinary.</p><p>It is one of those environments that anyone working with Active Directory encounters often, especially in the enterprise world:</p><p>An Italian branch of a multinational company, with a strong <strong>on premises</strong> focus, and an Active Directory infrastructure layered over time. The guidelines come from HQ.<br>A <strong>child domain</strong>, inherited from a reorganization that took place years earlier, and a handful of <strong>Domain Controllers distributed across multiple sites</strong>: some physically on premises, others hosted on cloud infrastructure, integrated into the design as a simple extension of the corporate perimeter.</p><p>Nothing unusual. Nothing that, on paper, would suggest imminent problems.</p><p>It almost sounds like the opening of <em>Falling Down</em>, but that is another film entirely&#8230;</p><p>For years, the daily operational work on the <em><strong>XYZ</strong></em> application had been carried out using a shared <strong>generic administrative account</strong>: <em><strong>XYZ-admin</strong></em>.<br>A choice that today would make anyone who talks about Identity governance or Zero Trust wince, but which had always done its job over time and, by the logic of <em>&#8220;if it works, do not touch it&#8221;</em>, remained there as a legacy inheritance.<br>RDP access, maintenance activities, urgent interventions: everything had gone through that account for years, without issues.</p><p>Until one day, <strong>it stops working</strong>.</p><p>Not gradually. Not &#8220;sometimes yes, sometimes no&#8221;. Suddenly, access is gone.</p><p>Every RDP logon attempt with that account returns the same result:</p><p><em><strong>&#8220;A user account restriction is preventing you from logging on.&#8221;</strong></em></p><p>No apparent change, no declared modification, no alert explaining what is happening.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0LaC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F536dbed8-40fe-462d-99c1-e614391ff3e5_603x401.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0LaC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F536dbed8-40fe-462d-99c1-e614391ff3e5_603x401.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0LaC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F536dbed8-40fe-462d-99c1-e614391ff3e5_603x401.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0LaC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F536dbed8-40fe-462d-99c1-e614391ff3e5_603x401.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0LaC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F536dbed8-40fe-462d-99c1-e614391ff3e5_603x401.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0LaC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F536dbed8-40fe-462d-99c1-e614391ff3e5_603x401.jpeg" width="603" height="401" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/536dbed8-40fe-462d-99c1-e614391ff3e5_603x401.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:401,&quot;width&quot;:603,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:31781,&quot;alt&quot;:&quot;RDP error screen showing the message &#8220;A user account restriction is preventing you from logging on.&#8221;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/199053556?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F536dbed8-40fe-462d-99c1-e614391ff3e5_603x401.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="RDP error screen showing the message &#8220;A user account restriction is preventing you from logging on.&#8221;" title="RDP error screen showing the message &#8220;A user account restriction is preventing you from logging on.&#8221;" srcset="https://substackcdn.com/image/fetch/$s_!0LaC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F536dbed8-40fe-462d-99c1-e614391ff3e5_603x401.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0LaC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F536dbed8-40fe-462d-99c1-e614391ff3e5_603x401.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0LaC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F536dbed8-40fe-462d-99c1-e614391ff3e5_603x401.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0LaC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F536dbed8-40fe-462d-99c1-e614391ff3e5_603x401.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">An apparently clear RDP error can be only the first layer of the problem.</figcaption></figure></div><p>The issue escalates to the customer&#8217;s IT staff, who begin an initial round of troubleshooting. The first instinct is the most natural one: <strong>try a different Domain Controller</strong>.<br>Force authentication toward different DCs, perhaps in different sites, to rule out a localized problem.<br>But the result does not change, same answer, same error.</p><p>Meanwhile, a timing coincidence emerges that is hard to ignore: <strong>in the previous days a patching cycle had been carried out on the Domain Controllers</strong>.<br>The lead seems promising.<br>The customer checks the installed updates, looks for articles on the internet, compares versions, and starts to suspect widespread bugs by digging through IT forums.<br>It is a logical and reassuring explanation: something changed, therefore something &#8220;broke&#8221;.</p><p>The problem is that, even after digging, <strong>nothing emerges</strong>:</p><p>&#183; The patches on the DCs are aligned</p><p>&#183; No other users are complaining about access failures</p><p>&#183; There are no obvious errors in the logs that would justify such selective behaviour</p><p>At this point the customer&#8217;s ideas begin to run out.<br>The most obvious hypotheses have been explored, the standard checks completed, and no quick solutions have emerged.</p><p>Only then does the customer decide to open a ticket with our support team.</p><p>And that is exactly where the situation becomes interesting.</p><h2>The analysis</h2><p>The issue is then assigned to one of the consultants on my team, who starts digging deeper. The first thing he does is retrace the path already taken by the customer, following the old logic that &#8220;trust is good, not trusting is better&#8221;. Nothing new.</p><p>He then turns to a detailed analysis of the error message: <em><strong>&#8220;A user account restriction is preventing you from logging on.&#8221;</strong></em></p><p>These &#8220;<em>user account restrictions</em>&#8221; are settings that come from far away, from the days of <strong>Windows NT 4</strong>. The ones that usually have a direct effect on RDP sessions are <em>Logon Time Restriction</em> and <em>Workstation Restriction</em>.</p><p>The user is checked, but there is no trace of those settings, everything seems in order, and the same goes for the GPOs applied to it.</p><p>The events on the <em>Target System</em> are then checked, but again, nothing.</p><p>The perspective then shifts to empirical testing with other accounts, revealing some curious behaviour:</p><p>&#183; Trying to log on through RDP to the same server <em><strong>with the consultant&#8217;s user account</strong></em>, access <strong>succeeds</strong></p><p>&#183; Trying to create<em><strong> a new user </strong></em>and log on through RDP with it results in the <strong>same error</strong></p><p>&#183; Trying to use <em><strong>a different Source System</strong></em> and the user <em><strong>XYZ-admin</strong></em>, access <strong>succeeds</strong></p><p>So, it is not just a user issue, but a combination of: <strong>user + Source System + Target System</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Lnrt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c0c2907-70fd-49d5-bba2-67f0d7617dfb_541x471.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Lnrt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c0c2907-70fd-49d5-bba2-67f0d7617dfb_541x471.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Lnrt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c0c2907-70fd-49d5-bba2-67f0d7617dfb_541x471.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Lnrt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c0c2907-70fd-49d5-bba2-67f0d7617dfb_541x471.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Lnrt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c0c2907-70fd-49d5-bba2-67f0d7617dfb_541x471.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Lnrt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c0c2907-70fd-49d5-bba2-67f0d7617dfb_541x471.jpeg" width="541" height="471" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c0c2907-70fd-49d5-bba2-67f0d7617dfb_541x471.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:471,&quot;width&quot;:541,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38022,&quot;alt&quot;:&quot;Diagram showing the relationship between user, Source System and Target System in the RDP access flow.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/199053556?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c0c2907-70fd-49d5-bba2-67f0d7617dfb_541x471.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagram showing the relationship between user, Source System and Target System in the RDP access flow." title="Diagram showing the relationship between user, Source System and Target System in the RDP access flow." srcset="https://substackcdn.com/image/fetch/$s_!Lnrt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c0c2907-70fd-49d5-bba2-67f0d7617dfb_541x471.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Lnrt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c0c2907-70fd-49d5-bba2-67f0d7617dfb_541x471.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Lnrt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c0c2907-70fd-49d5-bba2-67f0d7617dfb_541x471.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Lnrt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c0c2907-70fd-49d5-bba2-67f0d7617dfb_541x471.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">When the error depends on the combination of user, source system and target system, troubleshooting changes scale.</figcaption></figure></div><p>In this case as well, the matter ends up on my desk for an opinion. We begin to dig deeper, starting from what I consider <em>the tablets of the law</em> of troubleshooting:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vXOr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4520275-5918-47e9-96c8-55c15ff8bac4_261x340.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vXOr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4520275-5918-47e9-96c8-55c15ff8bac4_261x340.png 424w, https://substackcdn.com/image/fetch/$s_!vXOr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4520275-5918-47e9-96c8-55c15ff8bac4_261x340.png 848w, https://substackcdn.com/image/fetch/$s_!vXOr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4520275-5918-47e9-96c8-55c15ff8bac4_261x340.png 1272w, https://substackcdn.com/image/fetch/$s_!vXOr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4520275-5918-47e9-96c8-55c15ff8bac4_261x340.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vXOr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4520275-5918-47e9-96c8-55c15ff8bac4_261x340.png" width="261" height="340" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4520275-5918-47e9-96c8-55c15ff8bac4_261x340.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:340,&quot;width&quot;:261,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:170762,&quot;alt&quot;:&quot;Symbolic image of stone tablets used as a metaphor for the troubleshooting method.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/199053556?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4520275-5918-47e9-96c8-55c15ff8bac4_261x340.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Symbolic image of stone tablets used as a metaphor for the troubleshooting method." title="Symbolic image of stone tablets used as a metaphor for the troubleshooting method." srcset="https://substackcdn.com/image/fetch/$s_!vXOr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4520275-5918-47e9-96c8-55c15ff8bac4_261x340.png 424w, https://substackcdn.com/image/fetch/$s_!vXOr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4520275-5918-47e9-96c8-55c15ff8bac4_261x340.png 848w, https://substackcdn.com/image/fetch/$s_!vXOr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4520275-5918-47e9-96c8-55c15ff8bac4_261x340.png 1272w, https://substackcdn.com/image/fetch/$s_!vXOr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4520275-5918-47e9-96c8-55c15ff8bac4_261x340.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The tablets of the law of troubleshooting</figcaption></figure></div><p>A network trace is then taken on the Source System, and interesting things start to emerge:</p><p>&#183; The RDP session never gets to talk to the <em>Target System</em>, the block happens earlier</p><p>&#183; A correlation with the error message is found:</p><blockquote><p>o The <em>Source System</em> starts an RDP session toward the <em>Target System</em></p><p>o The <em>Source System</em> then talks to a <em>Domain Controller</em>, asking for authorization for <strong>RDP</strong> access for user <em>XYZ-admin@domain.xyz</em> toward the <em>Target System</em></p><p>o At that point the <em>Domain Controller</em> responds with a Kerberos error: <strong>KDC_ERR_POLICY</strong></p></blockquote><p>&#183; When the connection comes from <em>Source System 2</em>, there is no trace of the Kerberos error</p><p>&#183; When the connection comes from the <em>Source System</em>, but using the consultant&#8217;s user account, no Kerberos error is returned</p><p>Attention then shifts to what is happening on the specific <em>Domain Controller</em>, by analyzing its logs in detail. And here something incomprehensible happens: an event is recorded that matches precisely, by date, time and scope, the one seen in the network trace, except that it has a positive outcome: <em><strong>it is a legitimate authorization to access!</strong></em></p><p>So, the <em>Domain Controller</em> is convinced it returned an <strong>OK</strong>, while the <em>Source System</em> receives a <strong>KO</strong> in response. Who or what in the middle is lying???</p><p>The analysis continues and, with more network traces, other curious things come to light:</p><p>&#183; All the successful calls from <em>Source System 2</em> <em>always request authorization from one specific<strong> Domain Controller.</strong></em></p><p>&#183; All the failing calls from the <em>Source System</em> never request authorization from the Domain Controller that <em>Source System 2</em> talks to, in fact <em>they contact random <strong>Domain Controllers</strong> around the world.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tapt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6806672-60c7-45e5-9bef-fee2d3300fc0_602x365.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tapt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6806672-60c7-45e5-9bef-fee2d3300fc0_602x365.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tapt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6806672-60c7-45e5-9bef-fee2d3300fc0_602x365.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tapt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6806672-60c7-45e5-9bef-fee2d3300fc0_602x365.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tapt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6806672-60c7-45e5-9bef-fee2d3300fc0_602x365.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tapt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6806672-60c7-45e5-9bef-fee2d3300fc0_602x365.jpeg" width="602" height="365" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f6806672-60c7-45e5-9bef-fee2d3300fc0_602x365.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:365,&quot;width&quot;:602,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:42098,&quot;alt&quot;:&quot;Diagram of the Domain Controllers contacted by the source systems, highlighting the difference between successful and failing paths.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/199053556?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6806672-60c7-45e5-9bef-fee2d3300fc0_602x365.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagram of the Domain Controllers contacted by the source systems, highlighting the difference between successful and failing paths." title="Diagram of the Domain Controllers contacted by the source systems, highlighting the difference between successful and failing paths." srcset="https://substackcdn.com/image/fetch/$s_!tapt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6806672-60c7-45e5-9bef-fee2d3300fc0_602x365.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tapt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6806672-60c7-45e5-9bef-fee2d3300fc0_602x365.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tapt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6806672-60c7-45e5-9bef-fee2d3300fc0_602x365.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tapt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6806672-60c7-45e5-9bef-fee2d3300fc0_602x365.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The difference between success and failure was hidden in the path to the &#8220;right&#8221; Domain Controller.</figcaption></figure></div><p>We have therefore identified the error sequence, but the cause is still not clear. If anything, the evidence only makes things more confusing.</p><p>With the conviction that &#8220;there is something in the middle&#8221;, supported by the lack of dialogue with the only &#8220;good&#8221; <em>Domain Controller</em>, the investigation turns back to the network, and this time a ticket is opened with HQ network support.</p><p>There is still, however, the question of why the consultant&#8217;s account works normally.</p><p>A few days go by, and an interesting message arrives from HQ: <em>I fixed the account, try again now.</em></p><p>Wait&#8230; what do you mean by &#8220;I fixed the account&#8221;, what is the explanation behind all this?</p><p>In any case, a new test is run and, wonder of wonders, everything works!</p><p>Further clarification is then requested, after all this effort we need to understand.</p><p>The answer is disarming: it is <strong>CrowdStrike</strong>&#8217;s fault, which had marked the user as &#8220;non-human&#8221;.</p><p>So, we were right, there really was something in the middle. Only no one had visibility into what it was.</p><p>But let us go in order and reconstruct what happened, because this is one of those interesting situations where chaos and misunderstandings rule the scene:</p><p>&#183; CrowdStrike has a module called &#8220;<a href="https://www.crowdstrike.com/products/identity-protection/">Identity Protection</a>&#8221;</p><p>&#183; HQ deployed the CrowdStrike agent on the Domain Controllers, all except the one that <em>Source System 2</em> was talking to</p><p>&#183; CrowdStrike ran a scan and identified XYZ-admin as a Non-Human Identity</p><p>&#183; The agent on the Domain Controllers took control of the Kerberos responses, modifying them on the fly according to its own parameters</p><p>&#183; The Domain Controllers were therefore convinced they had answered OK, but the agent converted that into KO</p><p>&#183; To make matters worse, there really was a network problem: the Source System had its path blocked toward the &#8220;good&#8221; Domain Controller, obtaining a regular KO for the RDP sessions of XYZ-admin</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!75uq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa452c-8db6-4ecf-8c36-d48e4d24679b_602x365.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!75uq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa452c-8db6-4ecf-8c36-d48e4d24679b_602x365.jpeg 424w, https://substackcdn.com/image/fetch/$s_!75uq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa452c-8db6-4ecf-8c36-d48e4d24679b_602x365.jpeg 848w, https://substackcdn.com/image/fetch/$s_!75uq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa452c-8db6-4ecf-8c36-d48e4d24679b_602x365.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!75uq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa452c-8db6-4ecf-8c36-d48e4d24679b_602x365.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!75uq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa452c-8db6-4ecf-8c36-d48e4d24679b_602x365.jpeg" width="602" height="365" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/74aa452c-8db6-4ecf-8c36-d48e4d24679b_602x365.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:365,&quot;width&quot;:602,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:47638,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/199053556?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa452c-8db6-4ecf-8c36-d48e4d24679b_602x365.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!75uq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa452c-8db6-4ecf-8c36-d48e4d24679b_602x365.jpeg 424w, https://substackcdn.com/image/fetch/$s_!75uq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa452c-8db6-4ecf-8c36-d48e4d24679b_602x365.jpeg 848w, https://substackcdn.com/image/fetch/$s_!75uq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa452c-8db6-4ecf-8c36-d48e4d24679b_602x365.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!75uq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa452c-8db6-4ecf-8c36-d48e4d24679b_602x365.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The truth was in the middle: network, Kerberos and response control had become entangled in the same error.</figcaption></figure></div><p>The thing that struck me most about this strange case is this: we are facing a modern cloud technology, <strong>CrowdStrike</strong>, governing legacy technologies without taking their real effects into account, generating strange behavior and misleading errors.</p><p>The concept of <strong>Non-Human Identity</strong> also enters the equation, something with deep roots in legacy environments, yet one that has become extremely current under the pressure of <strong>AI</strong> systems.</p><p>And for the record, the poor Domain Controller was not to blame: it really was trying to tell the truth&#8230;</p><h2>Lessons learned</h2><p>The first lesson this case leaves us is only simple in appearance: even the most authoritative sources can tell a distorted truth. And behind it there is not always a bug or a bad configuration, but often the fact that the context in which they operate has changed, while they continue to do their job with implacable consistency.</p><p>The poor Domain Controller was not broken or &#8220;a liar&#8221;.<br>It was doing its job, answering with confidence.<br>And yet the answer that arrived was not the useful one. It was formally correct, substantially wrong.</p><p>The second lesson concerns the way we interpret errors.<br>Misleading messages, logs without errors, inconsistent behaviour across identical systems: modern troubleshooting sometimes offers no direct clues. Legacy mechanisms become intertwined with ever more sophisticated layers of protection, &#8220;governed from above&#8221;, creating scenarios where every piece of the chain seems to be working&#8230; but the result still does not add up.</p><p>Finally, reconnecting with <a href="https://www.legacythings.it/p/chapter-2-a-matter-of-trust?r=7oz2wp">chapter 2</a>, there is a larger lesson: <strong>trust in the system</strong> is often taken for granted.<br>We trust the Domain Controller, DNS, the network, the agents, the cloud protection layers. But every element introduces its own model of truth, built within its own perimeter. When those models are not aligned or do not talk to one another coherently, what we receive is not an explicit error, but a &#8220;correct&#8221; answer that no longer represents reality.</p><p>And this applies not only to human accounts.<br>More and more often, in modern infrastructures, the truly critical identities are not those of people, but those of processes, services, connectors and scheduled jobs. <strong>Non-Human Identities</strong> operate under the surface, often with privileges that remain invisible, and they make decisions on their own. It would be naive to think they cannot run into the same paradoxes or create new ones.<br><a href="https://www.microsoft.com/en-us/security/business/security-101/what-are-non-human-identities">What Are Non-human Identities? | Microsoft Security</a></p><p>For now, the lesson remains clear:<br>in complex systems, truth does not disappear cleanly. It hides in silence, until someone decides to look in the right place.</p><p>This chapter is for <strong>Denys</strong>, who found the truth in the right place. I hope that even now he is in the right place.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.legacythings.it/subscribe?&quot;,&quot;text&quot;:&quot;Iscriviti&quot;,&quot;language&quot;:&quot;it&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Legacy Things! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digita la tua email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Iscriviti"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Legacy MCP: La scommessa]]></title><description><![CDATA[Cosa pu&#242; realizzare un vecchio sistemista con 20 euro in un mese?]]></description><link>https://www.legacythings.it/p/legacy-mcp-la-scommessa</link><guid isPermaLink="false">https://www.legacythings.it/p/legacy-mcp-la-scommessa</guid><dc:creator><![CDATA[Marco Lelli]]></dc:creator><pubDate>Tue, 28 Apr 2026 16:31:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DQjm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826f9dc1-beac-4ce7-97b4-15ef155d6b3e_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>English version available here &#8594;<a href="https://www.legacythings.it/p/legacy-mcp-the-bet"> [EN]</a></em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DQjm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826f9dc1-beac-4ce7-97b4-15ef155d6b3e_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DQjm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826f9dc1-beac-4ce7-97b4-15ef155d6b3e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!DQjm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826f9dc1-beac-4ce7-97b4-15ef155d6b3e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!DQjm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826f9dc1-beac-4ce7-97b4-15ef155d6b3e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!DQjm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826f9dc1-beac-4ce7-97b4-15ef155d6b3e_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DQjm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826f9dc1-beac-4ce7-97b4-15ef155d6b3e_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/826f9dc1-beac-4ce7-97b4-15ef155d6b3e_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3186187,&quot;alt&quot;:&quot;Immagine con il titolo &#8220;LEGACY MCP&#8221; in stile neon rosso su uno sfondo verde sfocato. Al centro della scena cresce una giovane pianta con due foglie. La parte superiore &#232; visibile in superficie, mentre sotto il terreno &#232; mostrato un apparato radicale luminoso e ramificato.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/194906792?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826f9dc1-beac-4ce7-97b4-15ef155d6b3e_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Immagine con il titolo &#8220;LEGACY MCP&#8221; in stile neon rosso su uno sfondo verde sfocato. Al centro della scena cresce una giovane pianta con due foglie. La parte superiore &#232; visibile in superficie, mentre sotto il terreno &#232; mostrato un apparato radicale luminoso e ramificato." title="Immagine con il titolo &#8220;LEGACY MCP&#8221; in stile neon rosso su uno sfondo verde sfocato. Al centro della scena cresce una giovane pianta con due foglie. La parte superiore &#232; visibile in superficie, mentre sotto il terreno &#232; mostrato un apparato radicale luminoso e ramificato." srcset="https://substackcdn.com/image/fetch/$s_!DQjm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826f9dc1-beac-4ce7-97b4-15ef155d6b3e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!DQjm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826f9dc1-beac-4ce7-97b4-15ef155d6b3e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!DQjm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826f9dc1-beac-4ce7-97b4-15ef155d6b3e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!DQjm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826f9dc1-beac-4ce7-97b4-15ef155d6b3e_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Venerd&#236; 13 marzo 2026</strong>, una data che sembra anonima, se vista dal lato scaramantico in alcune culture c&#8217;&#232; chi crede che porti sfortuna, ma per me ha un significato particolare: mi &#232; venuta un&#8217;idea e la voglio realizzare.</p><p>In realt&#224; i semi di quell&#8217;idea arrivano da un percorso iniziato qualche tempo prima.</p><p>Il primo risale al 6 maggio 2025: European Identity Conference a Berlino, seconda sessione della giornata, tra i top trend previsti per il 2025 c&#8217;&#232; l&#8217;esplosione degli MCP Server.</p><p>Guardo in faccia il mio collega e ci facciamo la stessa domanda: cosa diavolo &#232; un MCP Server? Dobbiamo assolutamente approfondire!</p><p>Passano mesi e come da perfetta profezia gli MCP Server iniziano a spuntare come funghi.</p><p>Il secondo seme risale al 25 febbraio 2026: &#232; da un po&#8217; che sento l&#8217;esigenza di scrivere su &#8220;roba legacy&#8221;, parlo con un collega e finalmente trovo la &#8220;casa&#8221; giusta per il mio progetto. Immediatamente decido di aprire questo blog su Substack e nel giro di una settimana pubblico il primo articolo. &#200; il 1&#176; marzo 2026.</p><p>L&#8217;essere su questa piattaforma mi ha per&#242; dato la possibilit&#224; di leggere cose molto interessanti negli altri blog della piattaforma. Molto spesso sono argomenti distanti tecnicamente dal mio lavoro, ma che risuonano bene con il mio modo di vedere le cose.</p><p>Ma torniamo al 13 marzo 2026, leggo un post dove si parla dell&#8217;evoluzione di Claude.ai. Parla di quanto i suoi nuovi modelli siano potenti e di un esperimento di Vibe Coding estremo.</p><p>Ecco, quello &#232; l&#8217;ultimo seme&#8230;</p><p>L&#8217;idea inizia a germogliarmi in testa, arrivato a sera inizio la mia prima chiacchierata con l&#8217;app Claude, breve botta e risposta ed ecco che trova la sua forma:</p><div><hr></div><p style="text-align: center;">E se volessi scrivere una interfaccia MCP per Active Directory?</p><div><hr></div><p>Ci dormo sopra (si fa per dire) e mi sveglio con un disegno piuttosto chiaro in testa.</p><p>Dopo colazione inizio a bombardare l&#8217;AI facendo un &#8220;dump&#8221; della mia memoria e lei tiene il ritmo. Arriviamo ad una prima bozza, ma c&#8217;&#232; un bel sole e l&#8217;erba alta mi chiama, &#232; tempo di uscire.</p><p>Taglio, medito, scarico, taglio, medito, scarico e cos&#236; via&#8230;</p><p>Pomeriggio secondo round con l&#8217;AI, altro dump massivo ed arriviamo ad un disegno molto chiaro, decido che &#232; ora da fare una <strong>scommessa</strong>:</p><p><em><strong>pu&#242; un vecchio sistemista, con un passato di programmazione che si &#232; fermato a Visual Basic 6, ma che conosce bene i sistemi, creare da zero un progetto per un MCP Server open source?</strong></em></p><p>&#200; in quel momento che investo 20 euro per accedere a Claude Code e <strong>ufficialmente nasce il progetto Legacy MCP.</strong></p><p>Domenica 15 marzo 2026, mi sveglio e mi dedico alla mia passione per la Formula 1, e faccio bene.</p><p>Una giovane promessa dell&#8217;automobilismo italiano, a soli 19 anni, parte dalla pole position, domina la gara e ottiene la sua prima vittoria, centrando una <strong>scommessa</strong> fatta dalla Mercedes quando aveva solo 11 anni. &#200; Andrea Kimi Antonelli.</p><p>Sono euforico e penso che sar&#224; una grande giornata, mi metto quindi all&#8217;opera per impostare i lavori e dopo pranzo &#8220;accendo le macchine&#8221;, tempo un paio d&#8217;ore ed ho il primo prototipo funzionante.</p><p>Quando vedo che posso interrogare i dati esattamente come mi ero immaginato mi casca la mascella e rimango letteralmente a bocca aperta, pensando: s&#236; questa &#232; una <strong>scommessa</strong> che va portata a termine!</p><p>Questo articolo non nasce per spiegare una tecnologia, ma per raccontare un percorso.<br>&#200; il racconto di cosa succede quando un&#8217;idea legacy incontra strumenti nuovi, e qualcuno decide <strong>di provarci davvero</strong>, mettendo in contatto i due mondi.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.legacythings.it/subscribe?&quot;,&quot;text&quot;:&quot;Iscriviti ora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.legacythings.it/subscribe?"><span>Iscriviti ora</span></a></p><h2>Perch&#233; serviva farlo</h2><p>Se avete letto i miei articoli precedenti (<a href="https://www.legacythings.it/p/capitolo-1-adminsdholder-il-guardiano">Capitolo 1</a>, <a href="https://www.legacythings.it/p/capitolo-2-una-questione-di-fiducia">Capitolo 2</a> ) saprete gi&#224; il mio punto di vista, per i nuovi lettori lo riassumo brevemente: nonostante la spinta al cloud, le tecnologie legacy continuano a sopravvivere. Solo che, col tempo, stanno iniziando a diventare misteriose e quindi serve un modo per tramandarle.</p><p>Ogni progetto che viene avviato dal mio team parte sempre dallo stesso punto: dobbiamo fare un assessment e produrre un documento.</p><p>E nella stragrande maggioranza dei casi, il cuore dell&#8217;assessment &#232; sempre lui: <strong>Active Directory</strong>.</p><p>Per anni ci si &#232; affidati alla fedele <strong>PowerShell</strong> con soluzioni scripting pi&#249; o meno standard, ma con un punto fermo: l&#8217;uso dell&#8217;ottimo <a href="https://github.com/CarlWebster/Active-Directory-V3">ADDS_Inventory_V3.ps1</a> del mitico Carl Webster.</p><p>Il problema &#232; che lo sviluppo e la manutenzione di questi script stanno diventando sempre pi&#249; onerosi, mentre fuori il mondo surfa veloce sull&#8217;onda dell&#8217;AI.</p><p>Non volevo buttare via quel patrimonio: volevo renderlo interrogabile, modulare e riutilizzabile.</p><p>E allora mi sono fatto una domanda semplice: <em>perch&#233; non provare a mettere in contatto questi due mondi?</em></p><p>La chiave di volta l&#8217;ho trovata nel protocollo <strong>MCP</strong>. Molto spesso viene descritto come &#8220;la porta USB per l&#8217;AI&#8221;: uno standard aperto che permette di &#8220;connettere&#8221; i sistemi di AI a moduli esterni di qualsiasi tipo.</p><p>Per chi vuole approfondire rimando alla documentazione ufficiale: <a href="https://modelcontextprotocol.io/docs/getting-started/intro">What is the Model Context Protocol (MCP)? - Model Context Protocol</a></p><p>Da qui nasce l&#8217;idea di realizzare un <strong>Server MCP</strong> che faccia da ponte tra il mondo <strong>Active Directory</strong> e i sistemi di <strong>AI</strong>: <a href="https://github.com/Marco-Lelli/legacy-mcp">Legacy MCP</a>.</p><p>In pratica: un modo standard per interrogare AD usando strumenti AI, spostando il focus dal <em><strong>come</strong></em> al <em><strong>cosa</strong></em>.</p><p>Come anticipato, durante i primi due giorni ho avuto intense sessioni con Claude Chat: ho definito principi e linee guida che mi hanno permesso di vedere risultati tangibili in meno di 48 ore.</p><p>Tra questi c&#8217;&#232; la distinzione netta tra progetto <strong>open core</strong> ed <strong>enterprise</strong>: va bene che sono &#8220;solo&#8221; 20 euro, ma fare le cose bene richiede tempo, quindi serve anche darsi un limite.<br>La scelta &#232; stata piuttosto semplice, naturale e coerente:</p><div><hr></div><p style="text-align: center;">se il progetto prende spunto dal grande lavoro di Carl Webster, allora l&#8217;open core deve coprire tutto quello che per anni ha coperto lo script ADDS_Inventory_V3.ps1.</p><div><hr></div><p>&#200; un modo per restituire alla community una parte di quello che ho ricevuto, ma portandolo al passo con le tecnologie attuali.</p><p>Su queste basi, verr&#224; poi portato avanti uno strato enterprise che richiede sforzi ed investimenti differenti, e che coprir&#224; funzionalit&#224; pi&#249; avanzate e sofisticate:</p><p>&#183; <strong>open core</strong> = inventario e interrogazioni fondamentali</p><p>&#183; <strong>enterprise</strong> = analisi avanzate / report / integrazioni</p><h2>Cosa pu&#242; fare per te</h2><p>Legacy MCP nasce per un obiettivo semplice: rendere interrogabile Active Directory, permettendo correlazioni incrociate tra i dati e spostando il focus sul <em><strong>che cosa mi serve capire</strong></em>.</p><p>A seconda del contesto (offline, rete locale, internet) lo stesso approccio si declina in <strong>profili di deployment</strong> diversi, pensati per bilanciare praticit&#224; e sicurezza: <strong>A / B-core / B-enterprise / C.</strong></p><p>In tutti i profili, comunque, il flusso logico &#232; lo stesso: porto i dati in un workspace, poi interrogo. Cambia solo <em><strong>dove</strong></em> girano server e dati, e <em><strong>quanto</strong></em> &#232; governato l&#8217;accesso.</p><p>Tutti i dettagli operativi li trovate nel <a href="https://github.com/Marco-Lelli/legacy-mcp">repository</a>, adesso concentriamoci su casi d&#8217;uso reali.</p><p>Tre scenari, tre livelli di fiducia: <em>file, LAN, internet.</em></p><h3>Caso d&#8217;uso #1 - Assessment remoto offline + report</h3><p><strong>Profilo:</strong> A (open core)</p><p><strong>Scenario:</strong> Un consulente deve analizzare un ambiente AD remoto, a volte pu&#242; avere accesso diretto in VPN o sessione condivisa, in altri casi la raccolta &#232; demandata al cliente.</p><p><strong>Approccio:</strong> Invece di generare un report statico, raccoglie i dati in modo standard con un collector PowerShell, o chiede al cliente di farlo. L&#8217;output &#232; un <strong>JSON</strong> con dati e metadati di sessione.</p><p><strong>Analisi:</strong> Sul proprio PC configura Legacy MCP in locale, &#8220;monta&#8221; il JSON nel workspace e interroga l&#8217;ambiente tramite Claude Desktop.</p><p><strong>Risultato.</strong> Ottiene un&#8217;analisi strutturata sulle aree di proprio interesse e, quando serve, un output documentale (nel progetto sono gi&#224; stati prodotti alcuni report DOCX su ambienti reali).</p><p>Un esempio reale, questa &#232; la risposta che LegacyMCP permette di ottenere in pochi secondi a una domanda concreta sull&#8217;ambiente:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aW9_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c21a810-0bd1-4b12-8ddb-31510e25076e_940x929.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aW9_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c21a810-0bd1-4b12-8ddb-31510e25076e_940x929.png 424w, https://substackcdn.com/image/fetch/$s_!aW9_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c21a810-0bd1-4b12-8ddb-31510e25076e_940x929.png 848w, https://substackcdn.com/image/fetch/$s_!aW9_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c21a810-0bd1-4b12-8ddb-31510e25076e_940x929.png 1272w, https://substackcdn.com/image/fetch/$s_!aW9_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c21a810-0bd1-4b12-8ddb-31510e25076e_940x929.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aW9_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c21a810-0bd1-4b12-8ddb-31510e25076e_940x929.png" width="940" height="929" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c21a810-0bd1-4b12-8ddb-31510e25076e_940x929.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:929,&quot;width&quot;:940,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:629578,&quot;alt&quot;:&quot;Screenshot di una conversazione in chat con un sistema di intelligenza artificiale. In alto &#232; mostrata una domanda sull&#8217;aggiornamento dei Domain Controller. Sotto &#232; presente una risposta strutturata che elenca i principali rischi e blocchi, inclusi sistema operativo fuori supporto, ruoli FSMO concentrati, necessit&#224; di adprep e coordinamento tra siti.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/194906792?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c21a810-0bd1-4b12-8ddb-31510e25076e_940x929.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot di una conversazione in chat con un sistema di intelligenza artificiale. In alto &#232; mostrata una domanda sull&#8217;aggiornamento dei Domain Controller. Sotto &#232; presente una risposta strutturata che elenca i principali rischi e blocchi, inclusi sistema operativo fuori supporto, ruoli FSMO concentrati, necessit&#224; di adprep e coordinamento tra siti." title="Screenshot di una conversazione in chat con un sistema di intelligenza artificiale. In alto &#232; mostrata una domanda sull&#8217;aggiornamento dei Domain Controller. Sotto &#232; presente una risposta strutturata che elenca i principali rischi e blocchi, inclusi sistema operativo fuori supporto, ruoli FSMO concentrati, necessit&#224; di adprep e coordinamento tra siti." srcset="https://substackcdn.com/image/fetch/$s_!aW9_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c21a810-0bd1-4b12-8ddb-31510e25076e_940x929.png 424w, https://substackcdn.com/image/fetch/$s_!aW9_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c21a810-0bd1-4b12-8ddb-31510e25076e_940x929.png 848w, https://substackcdn.com/image/fetch/$s_!aW9_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c21a810-0bd1-4b12-8ddb-31510e25076e_940x929.png 1272w, https://substackcdn.com/image/fetch/$s_!aW9_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c21a810-0bd1-4b12-8ddb-31510e25076e_940x929.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">L'analisi va oltre i semplici dati</figcaption></figure></div><p>Questo &#232; il profilo pi&#249; semplice: massimizza portabilit&#224; e ripetibilit&#224;, e minimizza la dipendenza dall&#8217;ambiente del cliente. Permette anche analisi incrociate tra ambienti correlati.</p><h3>Caso d&#8217;uso #2 - Dialogo interattivo live + confronto storico (snapshot)</h3><p><strong>Profilo:</strong> B-core o B-enterprise (in base al livello di sicurezza richiesto).</p><p><strong>Scenario:</strong> Team IT o consulenti vogliono interrogare l&#8217;ambiente &#8220;dal vivo&#8221;, con la comodit&#224; del dialogo in chat, senza esportare continuamente file.</p><p><strong>Approccio:</strong> Legacy MCP viene eseguito in rete locale su un server dell&#8217;ambiente Active Directory (member server). Le comunicazioni sono cifrate e il modello di autenticazione &#232; coerente con il profilo scelto.</p><p><strong>Interazione:</strong> I client (Claude Desktop) si collegano al server MCP tramite modulo bridge (mcp-remote) in LAN. Nel progetto questo pattern &#232; gi&#224; stato testato end&#8209;to&#8209;end su Profilo B-core con HTTPS e autenticazione basata su token/chiavi protette.</p><p><strong>Valore extra:</strong> Quando serve &#8220;memoria&#8221;, si generano snapshot nel tempo. Questo permette di montare snapshot e live insieme chiedendo la domanda pi&#249; semplice (e pi&#249; potente): <strong>cosa &#232; cambiato?</strong></p><p>Il profilo B, lavorando su dato live, ha requisiti di sicurezza pi&#249; stringenti (account dedicato, cifratura end-to-end e accesso governato). I dettagli sono nel <a href="https://github.com/Marco-Lelli/legacy-mcp">repository</a>.</p><p><strong>Nota importante: </strong>Legacy MCP espone funzioni di sola lettura (read-only).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!A8bt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c4d08d-d208-4e2e-9147-98cd9a5d974e_1024x1024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!A8bt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c4d08d-d208-4e2e-9147-98cd9a5d974e_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!A8bt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c4d08d-d208-4e2e-9147-98cd9a5d974e_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!A8bt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c4d08d-d208-4e2e-9147-98cd9a5d974e_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!A8bt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c4d08d-d208-4e2e-9147-98cd9a5d974e_1024x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!A8bt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c4d08d-d208-4e2e-9147-98cd9a5d974e_1024x1024.jpeg" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b1c4d08d-d208-4e2e-9147-98cd9a5d974e_1024x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:157809,&quot;alt&quot;:&quot;Illustrazione con il titolo &#8220;LEGACY MCP&#8221; in stile neon rosso. Al centro &#232; rappresentato un portale in pietra diviso verticalmente. Da un lato sono visibili elementi grafici legati al codice e all&#8217;analisi dei dati, dall&#8217;altro un server e una creatura mitologica a tre teste. Alla base del portale si estende un sistema di radici luminose.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/194906792?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c4d08d-d208-4e2e-9147-98cd9a5d974e_1024x1024.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Illustrazione con il titolo &#8220;LEGACY MCP&#8221; in stile neon rosso. Al centro &#232; rappresentato un portale in pietra diviso verticalmente. Da un lato sono visibili elementi grafici legati al codice e all&#8217;analisi dei dati, dall&#8217;altro un server e una creatura mitologica a tre teste. Alla base del portale si estende un sistema di radici luminose." title="Illustrazione con il titolo &#8220;LEGACY MCP&#8221; in stile neon rosso. Al centro &#232; rappresentato un portale in pietra diviso verticalmente. Da un lato sono visibili elementi grafici legati al codice e all&#8217;analisi dei dati, dall&#8217;altro un server e una creatura mitologica a tre teste. Alla base del portale si estende un sistema di radici luminose." srcset="https://substackcdn.com/image/fetch/$s_!A8bt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c4d08d-d208-4e2e-9147-98cd9a5d974e_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!A8bt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c4d08d-d208-4e2e-9147-98cd9a5d974e_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!A8bt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c4d08d-d208-4e2e-9147-98cd9a5d974e_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!A8bt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c4d08d-d208-4e2e-9147-98cd9a5d974e_1024x1024.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Live (Kerberos) e offline (JSON) nello stesso workspace</figcaption></figure></div><h3>Caso d&#8217;uso #3 - Portale di analisi esposto su Internet</h3><p><strong>Profilo:</strong> C (solo enterprise)</p><p><strong>Scenario:</strong> si vuole rendere l&#8217;assessment scalabile e fruibile come servizio: pi&#249; team, pi&#249; clienti, accesso da ovunque, ma senza necessit&#224; di accessi live all&#8217;infrastruttura.</p><p><strong>Approccio:</strong> Si lavora solo su dati offline. &#200; possibile effettuare upload dei JSON, gestione dei workspace via web. L&#8217;analisi avviene tramite agenti che consumano MCP su endpoint pubblici.</p><p><strong>Sicurezza:</strong> Questo profilo richiede un layer di protezione su rete pubblica: API gateway (es. APIM) + WAF. L&#8217;autenticazione &#232; demandata ad un Identity Provider (tipicamente Entra ID) con MFA all&#8217;accesso ed RBAC sui dati caricati.</p><p><strong>Perch&#233; ha senso:</strong> &#200; il passo che trasforma un tool in una piattaforma, con lo stesso modello logico (profili, workspace, snapshot/offline), ma con governance e accesso enterprise.</p><p>Al momento questo &#232; solamente un caso d&#8217;uso teorico, ma con specifiche gi&#224; ben definite. Va bene il Vibe Coding, ma da solo in un mese di lavoro non sarei riuscito ad arrivare a tanto.</p><h2>Roma non &#232; stata fatta in un giorno</h2><p>Pensare al concetto di Vibe Coding mi fa andare in modalit&#224; <strong>Legacy Things</strong> e nelle orecchie mi inizia a suonare un famoso pezzo uscito nel 2000: <strong>Rome Wasn&#8217;t Built in a Day</strong> dei <strong>Morcheeba</strong>.</p><p>&#200; la colonna sonora perfetta per descrivere il percorso che ho affrontato durante il mese della scommessa.</p><p>Ovunque leggo articoli e proclami che suonano pi&#249; o meno cos&#236;:</p><div><hr></div><p style="text-align: center;">come ho creato qualcosa da zero in 35 minuti grazie all&#8217;AI e il Vibe Coding.</p><div><hr></div><p>Dal mio punto di osservazione, quella &#232; una mezza verit&#224;, fatta per catturare l&#8217;attenzione. Forse ci mettiamo anche la mia scelta di non usare un motore di coding estremo (Claude Sonnet 4.6), ma vi voglio raccontare come ho realmente vissuto l&#8217;esperienza.</p><h3>Punto primo</h3><p>&#200; sicuramente vero che una volta fornite le istruzioni il motore di coding ci mette pochi minuti a creare il risultato, ma la vera questione &#232;: quanto tempo ho impiegato tra ideare, ragionare in autonomia e conversare con una chat di AI prima di arrivare alle istruzioni?</p><p>Se prendiamo come esempio l&#8217;idea iniziale ve l&#8217;ho gi&#224; svelato: due giorni.</p><p>E ne sono serviti altri 28 per arrivare ad un risultato che mi facesse dire &#8220;ok lo possiamo pubblicare&#8221;.</p><p>Chiaro, dipende molto da &#8220;che cosa&#8221; voglio realizzare, lo sforzo &#232; proporzionale all&#8217;ambizione del progetto.</p><h3>Punto secondo</h3><p>Oltre al tempo, serve avere una direzione chiara e polso fermo, altrimenti l&#8217;AI ti porta a spasso dove vuole lei.</p><p>Per fare un esempio, durante una lunga e faticosa sessione di debug sull&#8217;autenticazione live verso i Domain Controller, l&#8217;AI ha provato di farmi semplificare l&#8217;approccio scalando dal protocollo Kerberos ad NTLM. <br>A quel punto sono rimasto fermo rimarcando i miei principi di sicurezza e alla fine siamo arrivati a farlo funzionare come volevo.</p><p>Adesso nella memoria di progetto leggo: <em><strong>NTLM must never be used</strong> &#8212; deprecated; Kerberos only for Live Mode</em></p><h3>Punto terzo</h3><p>Non sempre l&#8217;AI da sola ti trova la soluzione migliore, a volte perde di vista il dettaglio chiave.</p><p>Portando un altro esempio, durante la configurazione dell&#8217;accesso sicuro lato client MCP, mi sono scontrato su come gestire al meglio la chiave API senza esporla. La soluzione trovata &#232; stata quella di passare da un PowerShell e usare le <a href="https://learn.microsoft.com/en-us/windows/win32/seccng/cng-dpapi">DPAPI</a>.</p><p>Tutto bello fino a che l&#8217;avvio del PowerShell da Claude Chat moriva miseramente con uno strano errore. Dopo un&#8217;altra intensa sessione di troubleshooting &#232; stata mia l&#8217;intuizione di avviare il codice PowerShell dentro un caro vecchio file BAT, risolvendo immediatamente.</p><p>La sessione rimane nella memoria di progetto come &#8220;<strong>BAT is King</strong>&#8221; in perfetto stile Legacy Things, dove una tecnologia &#8220;antica&#8221; risolve un problema di AI.</p><h3>Timeline</h3><p>Di seguito vi lascio una timeline di cosa sono riuscito ad ottenere ed in che tempi, se la guardo sono veramente impressionato, ma non &#232; una roba da 35 minuti:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vek4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55289d07-9e57-4d4e-8fe0-e36b3fa6cc59_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vek4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55289d07-9e57-4d4e-8fe0-e36b3fa6cc59_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!vek4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55289d07-9e57-4d4e-8fe0-e36b3fa6cc59_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!vek4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55289d07-9e57-4d4e-8fe0-e36b3fa6cc59_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!vek4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55289d07-9e57-4d4e-8fe0-e36b3fa6cc59_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vek4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55289d07-9e57-4d4e-8fe0-e36b3fa6cc59_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55289d07-9e57-4d4e-8fe0-e36b3fa6cc59_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2944761,&quot;alt&quot;:&quot;Infografica con il titolo &#8220;Legacy MCP &#8211; From Idea to Production in 28 Days&#8221;. In alto &#232; mostrata una timeline orizzontale con tappe e date che descrivono l&#8217;evoluzione del progetto da modalit&#224; offline a repository pubblico. In basso a sinistra &#232; presente una sezione &#8220;Key Numbers&#8221; con metriche tecniche, mentre a destra &#232; visibile il logo del progetto Legacy MCP.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/194906792?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55289d07-9e57-4d4e-8fe0-e36b3fa6cc59_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Infografica con il titolo &#8220;Legacy MCP &#8211; From Idea to Production in 28 Days&#8221;. In alto &#232; mostrata una timeline orizzontale con tappe e date che descrivono l&#8217;evoluzione del progetto da modalit&#224; offline a repository pubblico. In basso a sinistra &#232; presente una sezione &#8220;Key Numbers&#8221; con metriche tecniche, mentre a destra &#232; visibile il logo del progetto Legacy MCP." title="Infografica con il titolo &#8220;Legacy MCP &#8211; From Idea to Production in 28 Days&#8221;. In alto &#232; mostrata una timeline orizzontale con tappe e date che descrivono l&#8217;evoluzione del progetto da modalit&#224; offline a repository pubblico. In basso a sinistra &#232; presente una sezione &#8220;Key Numbers&#8221; con metriche tecniche, mentre a destra &#232; visibile il logo del progetto Legacy MCP." srcset="https://substackcdn.com/image/fetch/$s_!vek4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55289d07-9e57-4d4e-8fe0-e36b3fa6cc59_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!vek4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55289d07-9e57-4d4e-8fe0-e36b3fa6cc59_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!vek4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55289d07-9e57-4d4e-8fe0-e36b3fa6cc59_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!vek4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55289d07-9e57-4d4e-8fe0-e36b3fa6cc59_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Un mese, tante milestone</figcaption></figure></div><p>Roma non &#232; stata fatta in un giorno e nemmeno questo progetto. L&#8217;AI accelera tutto, ma senza una guida non farebbe altro che schiantarsi.</p><p>Ti permette di raggiungere vette altissime, ma una volta in cima ci dobbiamo chiedere: <strong>chi ha veramente scalato la montagna?</strong></p><h2>Chi ha veramente scalato la montagna?</h2><p>Quando l&#8217;idea ha preso forma e mi sono deciso a dedicare tempo sul serio al progetto, mi sono sentito un po&#8217; come se avessi avuto una montagna da scalare. Questo all&#8217;inizio un po&#8217; mi ha spaventato, ma non avevo nulla da perdere e sapevo di poter contare su strumenti veramente all&#8217;avanguardia in ambito AI.</p><p>Sono partito con una base standard sull&#8217;uso di AI chat, ma non sapevo nulla di coding con AI, un vero &#8220;newbie&#8221;.<br>Strada facendo mi sono per&#242; messo in gioco, mi sono documentato ed ho capito che per fare un buon lavoro, serve una buona dote di soft skill: idee chiare, forti capacit&#224; comunicative, tenacia e tanto metodo.<br>Volutamente mi sono spinto a scrivere codice in un linguaggio che non conosco (python) perch&#233; quello che mi interessava non era il codice, ma il risultato ottenuto.</p><p>Dopo le prime settimane mi sono reso conto che il limite tecnico principale era quello del &#8220;credito&#8221;, le sessioni di lavoro andavano distribuite ed ottimizzate, nel corso della giornata e della settimana. Senza una gestione oculata si rimaneva presto &#8220;senza benzina&#8221; sul pi&#249; bello.</p><p>Per tenere bassi i consumi nel credito di Claude il punto chiave &#232; stato quello di ridurre il contesto: usare la stessa chat per giorni saturava la finestra di contesto e consumava tantissimi token.</p><p>Col tempo ho quindi messo insieme un flusso di lavoro strutturato in tre livelli che vi voglio raccontare.</p><p>Strumenti utilizzati: <strong>Claude.ai</strong> (piano pro, per un mese) a cui ho aggiunto <strong>Perplexity.ai</strong>, un piano pro che con una promozione avevo in uso per un anno.</p><p>Ho poi creato un <strong>progetto</strong> dentro <strong>Claude</strong> ed uno <strong>spazio</strong> dentro <strong>Perplexity</strong>. In entrambe ho allegato un file <strong>status.md</strong> con il riepilogo totale. Il file viene allegato anche nella root di progetto ad uso di <strong>Claude Code</strong>.</p><p>Per il codice ho usato <strong>VS Code</strong> con l&#8217;estensione di <strong>Claude Code</strong>.</p><p>Il flusso in <strong>ingresso</strong> &#232; stato di questo tipo:</p><p>1. Prima <strong>bozza</strong> di ragionamento su <strong>Perplexity</strong> con motore <strong>Sonnet 4.6</strong> per coerenza con i passaggi successivi</p><p>2. La <strong>bozza</strong> di istruzioni di <strong>Perplexity</strong> viene passata a <strong>Claude Chat</strong> per una valutazione e successivo affinamento. <strong>Claude Chat</strong> apre una <strong>nuova sessione</strong> dallo <strong>status.md</strong> e genera le <strong>istruzioni</strong> per <strong>Claude Code</strong>.</p><p>3. <strong>Claude Code</strong> esegue e genera un <strong>riepilogo</strong></p><p>4. <strong>Claude Chat</strong> valuta il riepilogo e quando arrivati ad un risultato stabile <strong>chiude la sessione</strong> aggiornando il file <strong>status.md</strong></p><p>5. Il file aggiornato <strong>status.md</strong> viene allegato ovunque come nuovo riferimento univoco.</p><p>Questo il flusso in <strong>uscita</strong>:</p><p>1. Il <strong>riepilogo</strong> di <strong>Claude Chat</strong> viene passato a <strong>Perplexity</strong> come feedback</p><p>2. Vengono avviate le sessioni di <strong>test</strong> e <strong>debug</strong></p><p>3. Quando necessaria qualche <strong>variazione</strong> si torna al flusso di ingresso verso <strong>Claude Chat</strong></p><p>Come sono arrivato a questo metodo? Leggendo in giro e dialogando con l&#8217;AI. Serve molta autocritica e pensiero laterale, chiedendosi ogni tanto: posso migliorare qualcosa?</p><p>Ma torniamo alla domanda iniziale: <em><strong>chi ha veramente scalato la montagna?</strong></em></p><p>Per rispondere uso una metafora: mi sento come se avessi scalato una montagna molto alta, arrivando dove non avrei pensato, ma ero dotato di un <strong>sofisticato esoscheletro</strong> (l&#8217;AI) che ha <strong>amplificato</strong> enormemente le mie capacit&#224;.<br>Ma l&#8217;esoscheletro da solo non va da nessuna parte. E pi&#249; diventi bravo a sfruttarne le potenzialit&#224;, pi&#249; procedi spedito.</p><h2>Cosa ho osservato ed imparato</h2><p><strong>Luned&#236; 13 aprile</strong>, il repository &#232; ufficialmente pubblico, la <strong>scommessa</strong> &#232; conclusa ed &#232; ora di tracciare un bilancio.</p><p>Sono riuscito nel mio obiettivo? Decisamente s&#236;!</p><p>Ce l&#8217;avrei fatta senza l&#8217;aiuto dell&#8217;AI? Decisamente no!</p><p>Il primo aspetto chiave da evidenziare &#232; la <strong>relazione di collaborazione</strong> che si instaura tra te e l&#8217;AI.</p><p>C&#8217;&#232; di mezzo un processo di continuo apprendimento reciproco. Pi&#249; tu impari ad utilizzare lo strumento nel contesto del progetto, pi&#249; lui impara a conoscerti, con in mezzo una parola chiave: <em><strong>comunicazione</strong></em>.</p><p>L&#8217;AI applicata alla programmazione ha ribaltato un paradigma: non sei pi&#249; tu a dover imparare un linguaggio, &#232; lo strumento che ha imparato il tuo.</p><p>Questo sposta il focus dal <em><strong>come</strong></em> ottenere un risultato al <em><strong>cosa</strong></em> voglio realmente ottenere.</p><p>Perch&#233; questo meccanismo funzioni serve per&#242; che chi avvia la comunicazione (tu) sia capace di farlo nella maniera migliore.</p><p>Ho capito infatti che l&#8217;AI &#232; un potente <strong>amplificatore</strong>: se escono idee confuse il risultato sar&#224; estremamente confuso, se sono precise il risultato sar&#224; estremamente preciso.</p><p>Il secondo aspetto fondamentale su cui ragionare &#232; la <strong>conoscenza della materia</strong>: senza sapere esattamente come funzionano le cose si rischiano risultati divergenti dall&#8217;obiettivo senza rendersene conto, vedi il caso <strong>NTLM</strong> citato in precedenza.</p><p>Questo significa che con l&#8217;AI non ci si pu&#242; adagiare &#8220;tanto ci pensa lei&#8221;, anzi bisogna concentrarsi nell&#8217;imparare il pi&#249; possibile come funzionano le cose. Questo valorizzer&#224; il ruolo di <em><strong>architetto</strong></em> che sar&#224; sempre pi&#249; importante.</p><p>Il terzo aspetto su cui ragionare &#232; che i sistemi di AI sono alla fine degli <strong>strumenti</strong>, e come tali vanno impiegati al meglio.</p><p>Per questo motivo bisogna approcciarli con <strong>metodo</strong>, provando, sbagliando e mettendosi in discussione per migliorarlo. Ma attenzione, <em><strong>non esiste un solo metodo giusto</strong></em>, ognuno trover&#224; quello migliore per s&#233; stesso e per lo specifico contesto nel quale si trova ad operare.</p><p>Il mio metodo ha funzionato perch&#233; non era gi&#224; scritto in partenza, ma l&#8217;ho costruito passo-passo chiedendomi: <strong>cosa posso fare meglio?</strong></p><p>Chiudo i ragionamenti con un motto che mi porto dietro da 25 anni e che oggi trovo pi&#249; attuale che mai:</p><div><hr></div><p style="text-align: center;">i sistemi informatici non fanno quello che vuoi, ma quello che gli dici di fare.</p><div><hr></div><p>Spero che questo racconto ti abbia appassionato almeno quanto ha appassionato me realizzarlo. La storia per&#242; non finisce qui. Quando leggerai questo articolo il codice si sar&#224; gi&#224; evoluto, e non posso andare avanti da solo.</p><p>L&#224; fuori c&#8217;&#232; un <a href="https://github.com/Marco-Lelli/legacy-mcp">repository</a> che aspetta di essere provato. Mettilo alla prova e fammi sapere come ti sei trovato.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.legacythings.it/subscribe?&quot;,&quot;text&quot;:&quot;Iscriviti&quot;,&quot;language&quot;:&quot;it&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Grazie per aver letto Legacy Things! Iscriviti gratuitamente per supportare il mio lavoro.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digita la tua email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Iscriviti"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Legacy MCP: The Bet]]></title><description><![CDATA[What can an old sysadmin build with 20 euros in one month?]]></description><link>https://www.legacythings.it/p/legacy-mcp-the-bet</link><guid isPermaLink="false">https://www.legacythings.it/p/legacy-mcp-the-bet</guid><dc:creator><![CDATA[Marco Lelli]]></dc:creator><pubDate>Tue, 28 Apr 2026 16:20:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!McmZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d92bc64-111c-4e74-a3e7-84c8d77bcfee_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Versione italiana disponibile qui &#8594;</em><a href="https://www.legacythings.it/p/capitolo-1-adminsdholder-il-guardiano"> </a><em><a href="https://www.legacythings.it/p/legacy-mcp-la-scommessa">[IT]</a></em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!McmZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d92bc64-111c-4e74-a3e7-84c8d77bcfee_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!McmZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d92bc64-111c-4e74-a3e7-84c8d77bcfee_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!McmZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d92bc64-111c-4e74-a3e7-84c8d77bcfee_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!McmZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d92bc64-111c-4e74-a3e7-84c8d77bcfee_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!McmZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d92bc64-111c-4e74-a3e7-84c8d77bcfee_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!McmZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d92bc64-111c-4e74-a3e7-84c8d77bcfee_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1d92bc64-111c-4e74-a3e7-84c8d77bcfee_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3186187,&quot;alt&quot;:&quot;Image showing the text &#8220;LEGACY MCP&#8221; in red neon style over a blurred green background. At the centre, a young plant with two leaves grows from the ground. Above the surface the stem and leaves are visible, while below the soil a glowing, branched root system is shown.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/194910869?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d92bc64-111c-4e74-a3e7-84c8d77bcfee_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image showing the text &#8220;LEGACY MCP&#8221; in red neon style over a blurred green background. At the centre, a young plant with two leaves grows from the ground. Above the surface the stem and leaves are visible, while below the soil a glowing, branched root system is shown." title="Image showing the text &#8220;LEGACY MCP&#8221; in red neon style over a blurred green background. At the centre, a young plant with two leaves grows from the ground. Above the surface the stem and leaves are visible, while below the soil a glowing, branched root system is shown." srcset="https://substackcdn.com/image/fetch/$s_!McmZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d92bc64-111c-4e74-a3e7-84c8d77bcfee_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!McmZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d92bc64-111c-4e74-a3e7-84c8d77bcfee_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!McmZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d92bc64-111c-4e74-a3e7-84c8d77bcfee_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!McmZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d92bc64-111c-4e74-a3e7-84c8d77bcfee_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p><strong>Friday, 13 March 2026</strong>, a date that might look ordinary. Some cultures consider it unlucky, but for me it has a very specific meaning: I had an idea, and I wanted to make it real.</p><p>In fact, the seeds of that idea came from a path that started earlier.</p><p>The first seed goes back to 6 May 2025: European Identity Conference in Berlin, second session of the day. Among the top trends expected for 2025 there was the rise of MCP Servers.</p><p>I looked at my colleague, and we asked the same question: what on earth is an MCP Server? We need to dig into this!</p><p>Months passed and exactly as predicted, MCP Servers started popping up everywhere.</p><p>The second seed goes back to 25 February 2026: for a while I had felt the need to write about &#8220;legacy stuff&#8221;, I spoke with a colleague and finally found the right home for my project. I immediately decided to open this Substack blog and, within a week, I published my first article. It was 1 March 2026.</p><p>Being on this platform also gave me the chance to read many interesting posts from other authors. Most of the time these topics are technically far from my day job, yet they resonate deeply with the way I look at things.</p><p>But let&#8217;s go back to 13 March 2026. I read a post about the evolution of Claude.ai. It talked about how powerful the new models are, and about an experiment in extreme Vibe Coding.</p><p>That was the final seed&#8230;</p><p>The idea started germinating in my head. That evening I began my first conversation with the Claude app. A short back and forth, and suddenly it had a shape:</p><div><hr></div><p style="text-align: center;">What if I tried to write an MCP interface for Active Directory?</p><div><hr></div><p>I slept on it (more or less) and woke up with a fairly clear picture in my mind.</p><p>After breakfast I started bombarding the AI with a complete memory dump, and it kept the pace. We reached an initial draft, but the sun was shining and the tall grass was calling. Time to step away.</p><p>Cut the grass, reflect, unload, cut again, reflect again, unload again, and so on&#8230;</p><p>Second round in the afternoon. Another massive dump and the design became crystal clear, so I decided it was time to place a <strong>bet</strong>:</p><p><em><strong>Can an old sysadmin, with a programming background that stopped at Visual Basic 6, but a solid understanding of systems, build an open source MCP Server project from scratch?</strong></em></p><p>Right then, I spent 20 euros to access Claude Code and <strong>the Legacy MCP project was officially born</strong>.</p><p>Sunday, 15 March 2026, I woke up and dedicated time to my passion for Formula 1, and I was right to do it.</p><p>A young Italian talent, just 19 years old, started from pole position, dominated the race and secured his first victory, confirming a <strong>bet</strong> Mercedes had made on him when he was only 11. His name is Andrea Kimi Antonelli.</p><p>I was euphoric and convinced it would be a great day. After lunch I &#8220;fired up&#8221; the machines and started working, and a couple of hours later I had my first working prototype.</p><p>When I realised I could query the data exactly the way I had imagined, my jaw dropped. I was literally staring at the screen thinking: yes, this is a <strong>bet</strong> worth bringing to the finish line!</p><p>This article is not meant to explain a technology. It is meant to tell a journey.</p><p>It is the story of what happens when a legacy idea meets new tools, and someone decides <strong>to really try</strong>, connecting two worlds.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.legacythings.it/subscribe?&quot;,&quot;text&quot;:&quot;Iscriviti ora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.legacythings.it/subscribe?"><span>Iscriviti ora</span></a></p><h2>Why it was worth doing</h2><p>If you have read my previous articles (<a href="https://www.legacythings.it/p/chapter-1-adminsdholder-the-guardian">Chapter 1</a> and <a href="https://www.legacythings.it/p/chapter-2-a-matter-of-trust">Chapter 2</a>) you already know my point of view. For new readers, here is the short version: despite the push towards the cloud, legacy technologies keep surviving. Over time, however, they are becoming increasingly mysterious, and we need a way to pass that knowledge on.</p><p>Every project started by my team begins in the same way: we need to run an assessment and produce a document.</p><p>And in most cases, the heart of that assessment is always the same: <strong>Active Directory</strong>.</p><p>For years we relied on trusty <strong>PowerShell </strong>scripts, more or less standardised, but anchored to one constant: the excellent <a href="https://github.com/CarlWebster/Active-Directory-V3">ADDS_Inventory_V3.ps1</a> by the legendary Carl Webster.</p><p>The problem is that maintaining and evolving those scripts is becoming increasingly expensive, while the outside world is surfing fast on the AI wave.</p><p>I did not want to throw that heritage away. I wanted to make it queryable, modular and reusable.</p><p>So, I asked myself a simple question: <em>why not try to connect these two worlds?</em></p><p>The turning point was the <strong>MCP protocol</strong>. It is often described as &#8220;the USB port for AI&#8221;, an open standard that lets AI systems connect to external modules of any kind.</p><p>If you want to dive deeper, here is the official documentation: <a href="https://modelcontextprotocol.io/docs/getting-started/intro">What is the Model Context Protocol (MCP)?</a></p><p>That is how the idea was born: build an <strong>MCP Server</strong> acting as a bridge between the <strong>Active Directory world</strong> and <strong>AI systems</strong>: <a href="https://github.com/Marco-Lelli/legacy-mcp">Legacy MCP</a>.</p><p>In practice, a standard way to query AD using AI tools, shifting the focus from <em><strong>how</strong></em> to do things to <em><strong>what</strong></em> you want to achieve.</p><p>As mentioned earlier, during the first two days I had intense sessions with Claude Chat. I defined principles and guidelines that allowed me to see tangible results in less than 48 hours.</p><p>One of those principles was a clear boundary between <strong>open core</strong> and <strong>enterprise</strong>. Even if it starts with &#8220;just&#8221; 20 euros, doing things properly takes time, so boundaries are necessary.</p><p>The choice was natural and coherent:</p><div><hr></div><p style="text-align: center;">if the project takes inspiration from Carl Webster&#8217;s work, then the open core must cover everything ADDS_Inventory_V3.ps1 covered for years.</p><div><hr></div><p>It is a way to give something back to the community, updated to modern technologies.</p><p>On top of that, an enterprise layer will be built, requiring different investments and efforts, covering more advanced and sophisticated capabilities.</p><p>&#183; <strong>open core</strong> = inventory and core queries</p><p>&#183; <strong>enterprise</strong> = advanced analysis, reports and integrations</p><h2>What it can do for you</h2><p>Legacy MCP was born with a simple goal: make Active Directory queryable, enabling cross correlations across data and shifting the focus towards <strong>what I really need to understand</strong>.</p><p>Depending on the context (offline, local network, internet) the same approach is implemented through different <strong>deployment profiles</strong>, designed to balance usability and security: <strong>A / B core / B enterprise / C.</strong></p><p>Across all profiles, the logic stays the same: you bring data into a workspace, then you query. What changes is <em><strong>where</strong></em> servers and data live, and <em><strong>how</strong></em> access is governed.</p><p>All operational details are available in the <a href="https://github.com/Marco-Lelli/legacy-mcp">repository</a>, but here we focus on real world use cases.</p><p>Three scenarios, three trust levels: <em>file, LAN, internet.</em></p><h3>Use case 1 - Remote offline assessment and report</h3><p><strong>Profile:</strong> A (open core)</p><p><strong>Scenario:</strong> A consultant needs to analyse a remote AD environment. Sometimes they have direct access via VPN or a shared session, in other cases data collection is delegated to the customer.</p><p><strong>Approach:</strong> Instead of generating a static report, the consultant collects data in a standard way using a PowerShell collector or asks the customer to run it. The output is a <strong>JSON</strong> file with data and session metadata.</p><p><strong>Analysis:</strong> On their own PC, the consultant runs Legacy MCP locally, &#8220;mounts&#8221; the JSON into the workspace, and queries the environment through Claude Desktop.</p><p><strong>Result:</strong> A structured analysis focused on the areas that matter, and, when needed, a document style output. In this project, a few DOCX reports have already been produced and validated on real environments.</p><p>A real example follows. This is the kind of answer Legacy MCP can deliver in seconds to a concrete question about the environment:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZmAw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb908c52c-7901-4ae1-9cbb-823c086aa970_940x929.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZmAw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb908c52c-7901-4ae1-9cbb-823c086aa970_940x929.png 424w, https://substackcdn.com/image/fetch/$s_!ZmAw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb908c52c-7901-4ae1-9cbb-823c086aa970_940x929.png 848w, https://substackcdn.com/image/fetch/$s_!ZmAw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb908c52c-7901-4ae1-9cbb-823c086aa970_940x929.png 1272w, https://substackcdn.com/image/fetch/$s_!ZmAw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb908c52c-7901-4ae1-9cbb-823c086aa970_940x929.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZmAw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb908c52c-7901-4ae1-9cbb-823c086aa970_940x929.png" width="940" height="929" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b908c52c-7901-4ae1-9cbb-823c086aa970_940x929.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:929,&quot;width&quot;:940,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:629578,&quot;alt&quot;:&quot;Screenshot of an AI chat conversation. At the top there is a question about upgrading Domain Controllers. Below, a structured answer lists the main blockers and risks, including end of support operating system, concentrated FSMO roles, the need for adprep, and coordination between sites.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/194910869?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb908c52c-7901-4ae1-9cbb-823c086aa970_940x929.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of an AI chat conversation. At the top there is a question about upgrading Domain Controllers. Below, a structured answer lists the main blockers and risks, including end of support operating system, concentrated FSMO roles, the need for adprep, and coordination between sites." title="Screenshot of an AI chat conversation. At the top there is a question about upgrading Domain Controllers. Below, a structured answer lists the main blockers and risks, including end of support operating system, concentrated FSMO roles, the need for adprep, and coordination between sites." srcset="https://substackcdn.com/image/fetch/$s_!ZmAw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb908c52c-7901-4ae1-9cbb-823c086aa970_940x929.png 424w, https://substackcdn.com/image/fetch/$s_!ZmAw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb908c52c-7901-4ae1-9cbb-823c086aa970_940x929.png 848w, https://substackcdn.com/image/fetch/$s_!ZmAw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb908c52c-7901-4ae1-9cbb-823c086aa970_940x929.png 1272w, https://substackcdn.com/image/fetch/$s_!ZmAw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb908c52c-7901-4ae1-9cbb-823c086aa970_940x929.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Analysis goes beyond data</figcaption></figure></div><p>This is the simplest profile: it maximises portability and repeatability and minimises dependence on the customer environment. It also enables cross analysis across related environments.</p><h3>Use case 2 - Interactive live dialogue and historical comparison with snapshots</h3><p><strong>Profile:</strong> B core or B enterprise (depending on the required security level).</p><p><strong>Scenario:</strong> IT teams or consultants want to query the environment &#8220;live&#8221;, with the convenience of a chat driven interaction, without constantly exporting files.</p><p><strong>Approach:</strong> Legacy MCP runs on the local network on a server inside the Active Directory environment (a member server). Communications are encrypted and the authentication model matches the chosen profile.</p><p><strong>Interaction:</strong> Clients (Claude Desktop) connect to the MCP server through a bridge module (mcp-remote) on the LAN. In this project, this pattern has been tested end to end on Profile B core with HTTPS and authentication based on protected tokens and keys.</p><p><strong>Extra value:</strong> When &#8220;memory&#8221; matters, you create snapshots over time. This lets you mount snapshots and the live view together and ask the simplest and most powerful question: <strong>what changed?</strong></p><p>Because it operates on live data, Profile B has stricter security requirements (dedicated service account, end to end encryption, governed access). Details are in the <a href="https://github.com/Marco-Lelli/legacy-mcp">repository</a>.</p><p><strong>Important note:</strong> Legacy MCP exposes read only functions.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uhfr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7868916-e1c7-4dcd-9b8d-c1fee9288bd8_1024x1024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uhfr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7868916-e1c7-4dcd-9b8d-c1fee9288bd8_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uhfr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7868916-e1c7-4dcd-9b8d-c1fee9288bd8_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uhfr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7868916-e1c7-4dcd-9b8d-c1fee9288bd8_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uhfr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7868916-e1c7-4dcd-9b8d-c1fee9288bd8_1024x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uhfr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7868916-e1c7-4dcd-9b8d-c1fee9288bd8_1024x1024.jpeg" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7868916-e1c7-4dcd-9b8d-c1fee9288bd8_1024x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:157809,&quot;alt&quot;:&quot;Illustration featuring the title &#8220;LEGACY MCP&#8221; in red neon style. At the centre there is a stone portal split vertically. On one side, graphical elements related to code and data analysis are shown, on the other a server and a three&#8209;headed mythological creature. Beneath the portal, a glowing root system spreads outward.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/194910869?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7868916-e1c7-4dcd-9b8d-c1fee9288bd8_1024x1024.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Illustration featuring the title &#8220;LEGACY MCP&#8221; in red neon style. At the centre there is a stone portal split vertically. On one side, graphical elements related to code and data analysis are shown, on the other a server and a three&#8209;headed mythological creature. Beneath the portal, a glowing root system spreads outward." title="Illustration featuring the title &#8220;LEGACY MCP&#8221; in red neon style. At the centre there is a stone portal split vertically. On one side, graphical elements related to code and data analysis are shown, on the other a server and a three&#8209;headed mythological creature. Beneath the portal, a glowing root system spreads outward." srcset="https://substackcdn.com/image/fetch/$s_!uhfr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7868916-e1c7-4dcd-9b8d-c1fee9288bd8_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uhfr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7868916-e1c7-4dcd-9b8d-c1fee9288bd8_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uhfr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7868916-e1c7-4dcd-9b8d-c1fee9288bd8_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uhfr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7868916-e1c7-4dcd-9b8d-c1fee9288bd8_1024x1024.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Live (kerberos) and offline (JSON) in one workspace</figcaption></figure></div><h3>Use case 3 - Internet exposed analysis portal</h3><p><strong>Profile:</strong> C (enterprise only)</p><p><strong>Scenario:</strong> You want to make the assessment scalable and usable as a service: multiple teams, multiple customers, access from anywhere, without requiring live access to the infrastructure.</p><p><strong>Approach:</strong> Everything stays offline. You upload JSON datasets and manage workspaces via web. Analysis happens through agents that consume MCP over public endpoints.</p><p><strong>Security:</strong> This profile requires an internet grade protection layer: API gateway (for example APIM) plus WAF. Authentication is delegated to an Identity Provider (typically Entra ID) with MFA, plus RBAC on uploaded data.</p><p><strong>Why it makes sense:</strong> It is the step that turns a tool into a platform, keeping the same logical model (profiles, workspaces, snapshots/offline), but adding governance and enterprise access.</p><p>For now, this is a theoretical use case, but the specifications are already clear. Vibe Coding is great, but there is no way I could have built all of that alone in one month.</p><h2>Rome wasn&#8217;t built in a day</h2><p>Thinking about Vibe Coding immediately switches me into <strong>Legacy Things</strong> mode, and in my head, I can hear a well-known song released in 2000: <strong>Rome Wasn&#8217;t Built in a Day</strong> by <strong>Morcheeba.</strong></p><p>It is the perfect soundtrack for the month-long journey behind this bet.</p><p>Everywhere I read articles and proclamations that sound more or less like this:</p><div><hr></div><p style="text-align: center;">how I created something from scratch in 35 minutes thanks to AI and Vibe Coding.</p><div><hr></div><p>From my point of view, that is a half-truth designed to capture attention. Maybe my choice not to use an extreme coding model (Claude Sonnet 4.6) also plays a role, but I want to tell you how I really lived the experience.</p><h3>First point</h3><p>It is true that once you provide instructions, a coding engine can produce output in minutes. The real question is this: how much time did I spend thinking, reasoning on my own, and talking with an AI chat before I even reached those instructions?</p><p>Using the initial idea as an example, I already told you: two days.</p><p>Then it took another 28 days to reach a point where I could say: &#8220;ok, we can publish this&#8221;.</p><p>Of course it depends on &#8220;what&#8221; you want to build. Effort is proportional to ambition.</p><h3>Second point</h3><p>Beyond time, you need a clear direction and a steady hand, otherwise the AI will take you for a walk wherever it wants.</p><p>For example, during a long and painful debugging session on live authentication towards Domain Controllers, the AI tried to persuade me to simplify the approach by switching from Kerberos to NTLM.</p><p>That is where I stood still and reinforced my security principles, and in the end, we made it work the way I wanted.</p><p>In the project memory, I now read: <em><strong>NTLM must never be used</strong>. Deprecated. Kerberos only for Live Mode.</em></p><h3>Third point</h3><p>AI does not always find the best solution on its own. Sometimes it loses the key detail.</p><p>Another example: while configuring secure client-side access to the MCP server, I struggled with how to handle the API key without exposing it. The solution was to use PowerShell and <a href="https://learn.microsoft.com/en-us/windows/win32/seccng/cng-dpapi">DPAPI</a>.</p><p>Everything looked great until launching PowerShell from Claude Chat crashed with a strange error. After another intense troubleshooting session, the key intuition was mine: run the PowerShell through a simple BAT file, and the problem disappeared immediately.</p><p>That session lives in the project memory as <strong>&#8220;BAT is King&#8221;</strong>, in perfect Legacy Things style, where an &#8220;old&#8221; technology fixes an AI problem.</p><h3>Timeline</h3><p>Below is a timeline of what I managed to achieve and in what time. Looking at it, I am genuinely impressed, but this is not a 35-minute story:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4qbg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94f3e1c4-d24e-4b06-bc6e-fcf78a0683eb_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4qbg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94f3e1c4-d24e-4b06-bc6e-fcf78a0683eb_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!4qbg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94f3e1c4-d24e-4b06-bc6e-fcf78a0683eb_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!4qbg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94f3e1c4-d24e-4b06-bc6e-fcf78a0683eb_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!4qbg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94f3e1c4-d24e-4b06-bc6e-fcf78a0683eb_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4qbg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94f3e1c4-d24e-4b06-bc6e-fcf78a0683eb_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/94f3e1c4-d24e-4b06-bc6e-fcf78a0683eb_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2944761,&quot;alt&quot;:&quot;Infographic titled &#8220;Legacy MCP &#8211; From Idea to Production in 28 Days&#8221;. At the top, a horizontal timeline shows dated milestones describing the project&#8217;s evolution from offline mode to a public repository. At the bottom left, a &#8220;Key Numbers&#8221; section lists technical metrics, while the Legacy MCP project logo appears on the right.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/194910869?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94f3e1c4-d24e-4b06-bc6e-fcf78a0683eb_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Infographic titled &#8220;Legacy MCP &#8211; From Idea to Production in 28 Days&#8221;. At the top, a horizontal timeline shows dated milestones describing the project&#8217;s evolution from offline mode to a public repository. At the bottom left, a &#8220;Key Numbers&#8221; section lists technical metrics, while the Legacy MCP project logo appears on the right." title="Infographic titled &#8220;Legacy MCP &#8211; From Idea to Production in 28 Days&#8221;. At the top, a horizontal timeline shows dated milestones describing the project&#8217;s evolution from offline mode to a public repository. At the bottom left, a &#8220;Key Numbers&#8221; section lists technical metrics, while the Legacy MCP project logo appears on the right." srcset="https://substackcdn.com/image/fetch/$s_!4qbg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94f3e1c4-d24e-4b06-bc6e-fcf78a0683eb_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!4qbg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94f3e1c4-d24e-4b06-bc6e-fcf78a0683eb_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!4qbg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94f3e1c4-d24e-4b06-bc6e-fcf78a0683eb_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!4qbg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94f3e1c4-d24e-4b06-bc6e-fcf78a0683eb_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">One month, many milestones</figcaption></figure></div><p>Rome wasn&#8217;t built in a day, and neither was this project. AI accelerates everything, but without a guide it would simply crash.</p><p>It can help you reach very high peaks, but once you get there, there is one question we must ask: <strong>who really climbed the mountain?</strong></p><h2>Who really climbed the mountain?</h2><p>When the idea took shape and I decided to dedicate serious time to the project, I felt as if I had a mountain to climb. At first that scared me a bit, but I had nothing to lose, and I knew I could rely on truly cutting-edge AI tools.</p><p>I started with a standard baseline on chat-based AI and I knew nothing about AI assisted coding. I was a real &#8220;newbie&#8221;.</p><p>Over time I challenged myself, studied, and understood that to do a good job you need solid soft skills: clear ideas, strong communication skills, tenacity, and a lot of method.</p><p>I deliberately chose to write code in a language I do not really know (Python) because what mattered to me was not the code itself, but the result.</p><p>After the first few weeks I realised that the main technical limit was the &#8220;credit&#8221;. Work sessions had to be distributed and optimised across the day and the week. Without careful management, you run &#8220;out of fuel&#8221; at the worst possible time.</p><p>To keep credit consumption low, the key was to reduce context: using the same chat for days saturates the context window and consumes a huge amount of tokens.</p><p>Over time I built a structured workflow in three levels that I want to describe.</p><p>Tools used: <strong>Claude.ai</strong> (Pro plan for one month) plus <strong>Perplexity.ai</strong>, a Pro plan I already had through a yearly promotion.</p><p>I then created a <strong>project</strong> inside <strong>Claude</strong> and a <strong>space</strong> inside <strong>Perplexity</strong>. In both, I attached a <strong>status.md</strong> file with the overall summary. The same file is also placed in the project root for <strong>Claude Code</strong>.</p><p>For coding, I used <strong>VS Code</strong> with the <strong>Claude Code</strong> extension.</p><p><strong>Input </strong>flow:</p><p>1. First <strong>draft</strong> reasoning on <strong>Perplexity</strong> using <strong>Sonnet 4.6</strong> for consistency with later steps.</p><p>2. <strong>Perplexity&#8217;s</strong> instruction <strong>draft</strong> is then passed to <strong>Claude Chat</strong> for review and refinement. <strong>Claude Chat</strong> starts a <strong>new session</strong> from <strong>status.md</strong> and generates the <strong>instructions</strong> for <strong>Claude Code</strong>.</p><p>3. <strong>Claude Code</strong> executes and produces a <strong>summary</strong>.</p><p>4. <strong>Claude Chat</strong> reviews the summary and, once the result is stable, <strong>closes the session</strong> and updates <strong>status.md</strong>.</p><p>5. The updated <strong>status.md</strong> is then attached everywhere as the new single source of truth.</p><p><strong>Output </strong>flow:</p><p>1. <strong>Claude Chat&#8217;s summary</strong> is passed back to <strong>Perplexity</strong> as feedback.</p><p>2. <strong>Testing</strong> and <strong>debugging</strong> sessions start.</p><p>3. When <strong>variations</strong> are needed, the flow goes back into <strong>Claude Chat</strong>.</p><p>How did I get to this method? By reading, experimenting and talking with the AI. It takes self-criticism and lateral thinking, asking yourself from time to time: can I improve something?</p><p>But back to the original question: <em><strong>who really climbed the mountain?</strong></em></p><p>My answer is a metaphor: I feel as if I climbed a very high mountain and reached a place I would not have expected, but I had a <strong>sophisticated exoskeleton</strong> (AI) that massively <strong>amplified</strong> my capabilities.</p><p>An exoskeleton, however, does not go anywhere on its own. The better you become at exploiting its potential, the faster you move.</p><h2>What I observed and learned</h2><p>On <strong>Monday, 13 April</strong>, the repository officially became public. The <strong>bet</strong> is over, and it is time to take stock.</p><p>Did I achieve my goal? Definitely yes!<br>Could I have done it without AI? Definitely no!</p><p>The first key aspect is the <strong>collaborative relationship</strong> that emerges between you and AI.</p><p>There is a continuous process of mutual learning. The more you learn to use the tool in the context of the project, the more it learns to understand you, with one key word in the middle: <em><strong>communication</strong></em>.</p><p>AI applied to programming flipped a paradigm: you no longer must learn a language, the tool learns yours.</p><p>This shifts the focus from <em><strong>how</strong></em> to get a result to <em><strong>what</strong></em> you really want to get.</p><p>For this mechanism to work, the person starting the conversation (you) must be able to do it in the best possible way.</p><p>I realised that AI is a powerful <strong>amplifier</strong>: if your ideas are confused, the result will be extremely confused, if they are precise, the result will be extremely precise.</p><p>The second fundamental aspect is <strong>domain knowledge</strong>: without knowing exactly how things work, you risk drifting away from the goal without noticing, as in the <strong>NTLM</strong> case mentioned earlier.</p><p>This means that with AI you cannot just relax thinking &#8220;it will handle everything&#8221;. On the contrary, you should focus on learning as much as possible about how things work. This will increase the value of the <em><strong>architect</strong></em> role, which will only become more important.</p><p>The third aspect is that AI systems are <strong>tools</strong>, and like any tool they must be used well.</p><p>That is why you need <strong>method</strong>: try, fail, question yourself and improve. Be careful though, there <em><strong>is no single correct method</strong></em>. Everyone will find what works best for themselves and for their context.</p><p>My method worked because it was not written upfront. I built it step by step, constantly asking myself: <strong>what can I do better?</strong></p><p>I will close with a motto I have carried for 25 years, and today it feels more relevant than ever:</p><div><hr></div><p style="text-align: center;">IT systems do not do what you want. They do what you tell them to do.</p><div><hr></div><p>I hope this story was at least as engaging for you as it was for me to live it. But the journey does not end here. By the time you read this article, the code will already have evolved, and I cannot move forward alone.</p><p>Out there, there is a <a href="https://github.com/Marco-Lelli/legacy-mcp">repository</a> waiting to be tested. Put it to the test and tell me how it went.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.legacythings.it/subscribe?&quot;,&quot;text&quot;:&quot;Iscriviti&quot;,&quot;language&quot;:&quot;it&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Legacy Things! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digita la tua email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Iscriviti"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Capitolo #2 – Una questione di fiducia]]></title><description><![CDATA[Oltre il limite del perimetro]]></description><link>https://www.legacythings.it/p/capitolo-2-una-questione-di-fiducia</link><guid isPermaLink="false">https://www.legacythings.it/p/capitolo-2-una-questione-di-fiducia</guid><dc:creator><![CDATA[Marco Lelli]]></dc:creator><pubDate>Mon, 30 Mar 2026 06:15:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Ekbm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd745b109-49ff-4a4b-9282-bbea9ab0fb27_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>English version available here &#8594;<a href="https://www.legacythings.it/p/chapter-2-a-matter-of-trust"> [EN]</a></em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ekbm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd745b109-49ff-4a4b-9282-bbea9ab0fb27_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ekbm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd745b109-49ff-4a4b-9282-bbea9ab0fb27_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Ekbm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd745b109-49ff-4a4b-9282-bbea9ab0fb27_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Ekbm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd745b109-49ff-4a4b-9282-bbea9ab0fb27_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Ekbm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd745b109-49ff-4a4b-9282-bbea9ab0fb27_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ekbm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd745b109-49ff-4a4b-9282-bbea9ab0fb27_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d745b109-49ff-4a4b-9282-bbea9ab0fb27_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3021479,&quot;alt&quot;:&quot;Illustrazione di un&#8217;auto da Formula 1 in curva su pista, usata come metafora del capitolo sulla fiducia e sui limiti del perimetro di autenticazione.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/192079223?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd745b109-49ff-4a4b-9282-bbea9ab0fb27_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Illustrazione di un&#8217;auto da Formula 1 in curva su pista, usata come metafora del capitolo sulla fiducia e sui limiti del perimetro di autenticazione." title="Illustrazione di un&#8217;auto da Formula 1 in curva su pista, usata come metafora del capitolo sulla fiducia e sui limiti del perimetro di autenticazione." srcset="https://substackcdn.com/image/fetch/$s_!Ekbm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd745b109-49ff-4a4b-9282-bbea9ab0fb27_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Ekbm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd745b109-49ff-4a4b-9282-bbea9ab0fb27_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Ekbm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd745b109-49ff-4a4b-9282-bbea9ab0fb27_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Ekbm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd745b109-49ff-4a4b-9282-bbea9ab0fb27_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Primavera 1993</strong>, chi scrive sta ancora ultimando gli studi.</p><p>Una domenica di aprile si corre il GP di F1 a Donington, UK. Per il leggendario <strong>Ayrton Senna</strong> &#232; un anno difficile, la sua McLaren &#232; inferiore alla concorrenza ed in griglia parte quinto, ma c&#8217;&#232; un dettaglio che gioca a suo favore: <em><strong>piove!</strong> </em>E quando piove la sua <strong>fiducia</strong> nel mezzo diventa totale.</p><p>Semaforo verde, scatta come una furia e nel primo giro si porta gi&#224; in testa per un dominio assoluto, nessun altro ha la sua confidenza con la pista bagnata.</p><p>Nel resto del mondo, in quegli stessi mesi, qualcosa di altrettanto straordinario sta prendendo forma<s>,</s> cambiando radicalmente il modo in cui le persone si <strong>fidano</strong> dei sistemi informatici.</p><p>Con la diffusione del <strong>World Wide Web</strong> e la distribuzione del browser <strong>NCSA Mosaic</strong>, Internet smette di essere un ambiente riservato a pochi addetti ai lavori e diventa improvvisamente accessibile.<br>Chiunque pu&#242; collegarsi, esplorare risorse remote, interagire con sistemi che non conosce e che non controlla.</p><p>Fino a quel momento, i modelli di sicurezza erano stati costruiti attorno a confini chiari: reti aziendali, sistemi locali, domini ben definiti.<br>Con il Web, invece, ci si affida a servizi lontani, identit&#224; remote, infrastrutture che vivono fuori dal proprio controllo diretto.</p><p>&#200; una rivoluzione culturale prima ancora che tecnologica.</p><p>Nei sistemi Enterprise il tema della fiducia si gioca su due fronti contrapposti.</p><p>Da un lato, l&#8217;universo <strong>Windows</strong> si diffonde basandosi su un modello di fiducia chiuso e perimetrale, che coincide con i primi domini.<br>&#200; qui che viene introdotto per la prima volta un concetto esplicito di <strong>Trust</strong>, fondato su un protocollo proprietario: <strong>NTLM</strong>.<br>Un meccanismo pensato per ambienti controllati, dove la fiducia &#232; una configurazione statica e dichiarata.</p><p>Dall&#8217;altro, il mondo <strong>Unix</strong> e accademico utilizza da tempo modelli di autenticazione distribuita, che raggiungono una maturit&#224; significativa con <strong>Kerberos V5</strong>.<br>Qui la fiducia non &#232; solo un collegamento tra sistemi, ma un elemento progettato per ambienti aperti, interconnessi e potenzialmente eterogenei.</p><p>Sono due visioni della <strong>fiducia</strong> profondamente diverse, nate per rispondere a esigenze diverse.</p><p>Con l&#8217;introduzione di <strong>Active Directory</strong><s>,</s> Microsoft compie per&#242; una scelta fondamentale: accoglie i valori dell&#8217;altro modello e <strong>adotta Kerberos come base fondante del nuovo sistema di autenticazione</strong>, avviando un percorso di convergenza tra questi due mondi.<br>Inizialmente i modelli convivono, affiancati pi&#249; che integrati, come compromesso necessario per garantire compatibilit&#224; con il passato.</p><p>&#200; solo con <strong>Windows Server 2003</strong> che arriva una convergenza pi&#249; matura, segnando il passaggio verso un approccio <em>Kerberos-first</em>, in cui la fiducia diventa parte dell&#8217;architettura<s>,</s> e non solo un collegamento tra perimetri separati.</p><p>Eppure, nonostante questa convergenza sia avvenuta da oltre vent&#8217;anni, non sempre &#232; stata compresa fino in fondo.<br>Come se, paradossalmente, <strong>fosse mancata proprio la fiducia</strong> in quel processo che voleva riunire scuole di pensiero inizialmente molto distanti.</p><p>Questo capitolo parte da qui.<br>Da una fiducia che si &#232; evoluta tecnicamente, ma non sempre concettualmente, e dalle conseguenze di non aver davvero compreso quel cambiamento fino in fondo.</p><h2>Cos&#8217;&#232; e come funziona</h2><p>Abbiamo capito che il concetto di &#8220;Trust&#8221; arriva da lontano, proviamo adesso di declinarlo in maniera pratica nel contesto Active Directory.</p><h3>Meccanismi di base di una Trust</h3><p>Partiamo da un <s>concetto </s>principio che viene molto spesso dato per scontato: il Dominio di autenticazione.</p><p>Un Dominio &#232; un perimetro entro il quale &#232; presente una &#8220;fiducia&#8221; implicita tra gli oggetti che ne fanno parte, mediata da opportuni permessi che definiscono chi accede a cosa e con che modalit&#224; (ACL, ne abbiamo parlato nel capitolo 1). Tra perimetri differenti (Domini) non c&#8217;&#232; fiducia implicita e di conseguenza l&#8217;accesso non &#232; consentito.</p><p>L&#8217;elemento che contraddistingue tutti gli oggetti facenti parte dello stesso Dominio &#232; il <strong>Security Identifier (SID)</strong>.</p><p>Si tratta di un attributo fondamentale del modello di sicurezza di Windows: una stringa immutabile che identifica in modo univoco un&#8217;entit&#224; (utente, gruppo, computer&#8230;) indipendentemente dal nome che le viene assegnato.</p><p>Un SID ha una struttura ben precisa e pu&#242; essere rappresentato in forma leggibile come segue:</p><p>S-1-5-21-&lt;DomainIdentifier&gt;-&lt;RelativeIdentifier&gt;</p><p>La prima parte del SID identifica <strong>l&#8217;autorit&#224; che lo ha emesso</strong> e il <strong>contesto di sicurezza</strong> in cui l&#8217;oggetto &#232; stato creato.<br>In particolare, la sequenza S-1-5-21 indica che il SID appartiene a un contesto di dominio Windows, mentre il valore &lt;DomainIdentifier&gt; rappresenta l&#8217;identit&#224; del dominio stesso.</p><p>Questo significa che <strong>tutti gli oggetti appartenenti allo stesso dominio condividono esattamente la stessa porzione iniziale del SID</strong>.</p><p>L&#8217;ultima parte, chiamata <strong>Relative Identifier (RID)</strong>, &#232; invece ci&#242; che rende l&#8217;oggetto univoco all&#8217;interno di quel dominio.<br>Il RID viene assegnato dal Domain Controller al momento della creazione dell&#8217;oggetto e distingue un utente, un gruppo o un computer da tutti gli altri che condividono lo stesso Domain SID.</p><p>In altre parole, il SID racconta sempre due verit&#224;:</p><ul><li><p><em>da dove proviene l&#8217;oggetto</em> (il dominio che lo ha emesso)</p></li><li><p><em>chi &#232; l&#8217;oggetto</em> all&#8217;interno di quel dominio</p></li></ul><p>Questa separazione &#232; uno dei pilastri del modello di sicurezza di Active Directory, se volete approfondire l&#8217;argomento vi lascio il riferimento all&#8217;<a href="https://learn.microsoft.com/en-gb/windows-server/identity/ad-ds/manage/understand-security-identifiers">articolo ufficiale</a>.</p><p>Grazie a questo meccanismo, sin dalla prima versione dei Domini NT, &#232; stato reso disponibile il meccanismo di <strong>Domain Trust</strong>, inizialmente basato su protocollo <strong>NTLM</strong>.</p><p>&#200; bene ricordare che, anche concettualmente, la fiducia ha una direzione precisa.<s>,</s> <s>l</s>La stessa cosa vale per la Domain Trust<s>,</s> dove <strong>chi offre le risorse</strong> (es: un File Server in un Dominio di risorse) <strong>concede fiducia a</strong> <strong>chi offre le identit&#224;</strong> (Dominio delle utenze). Questa direzione viene rappresentata con una freccia che va dalle risorse alle identit&#224;.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CzK5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb0c260-d65f-448d-baa3-336d4a3af830_540x184.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CzK5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb0c260-d65f-448d-baa3-336d4a3af830_540x184.png 424w, https://substackcdn.com/image/fetch/$s_!CzK5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb0c260-d65f-448d-baa3-336d4a3af830_540x184.png 848w, https://substackcdn.com/image/fetch/$s_!CzK5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb0c260-d65f-448d-baa3-336d4a3af830_540x184.png 1272w, https://substackcdn.com/image/fetch/$s_!CzK5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb0c260-d65f-448d-baa3-336d4a3af830_540x184.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CzK5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb0c260-d65f-448d-baa3-336d4a3af830_540x184.png" width="540" height="184" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eeb0c260-d65f-448d-baa3-336d4a3af830_540x184.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:184,&quot;width&quot;:540,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3568,&quot;alt&quot;:&quot;Schema della direzione di una trust tra un dominio di risorse e un dominio utenti, con freccia da resource.ad verso user.ad.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/192079223?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb0c260-d65f-448d-baa3-336d4a3af830_540x184.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Schema della direzione di una trust tra un dominio di risorse e un dominio utenti, con freccia da resource.ad verso user.ad." title="Schema della direzione di una trust tra un dominio di risorse e un dominio utenti, con freccia da resource.ad verso user.ad." srcset="https://substackcdn.com/image/fetch/$s_!CzK5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb0c260-d65f-448d-baa3-336d4a3af830_540x184.png 424w, https://substackcdn.com/image/fetch/$s_!CzK5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb0c260-d65f-448d-baa3-336d4a3af830_540x184.png 848w, https://substackcdn.com/image/fetch/$s_!CzK5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb0c260-d65f-448d-baa3-336d4a3af830_540x184.png 1272w, https://substackcdn.com/image/fetch/$s_!CzK5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb0c260-d65f-448d-baa3-336d4a3af830_540x184.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Direzione di una Trust</figcaption></figure></div><p>Quando viene attivata una Trust<s>,</s> il dominio di risorse non importa utenti n&#233; replica oggetti dal dominio trusted. <s><br></s>Accetta invece una cosa molto pi&#249; semplice e molto pi&#249; potente: <strong>i Security Identifier emessi dall&#8217;altro lato</strong>.</p><p>Nel momento in cui un oggetto esterno viene utilizzato per la prima volta &#8212; ad esempio aggiungendolo a un gruppo locale o assegnandogli un permesso &#8212; Active Directory crea automaticamente un <strong>Foreign Security Principal</strong>.</p><p>Un <a href="https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/5aa09c90-c5db-4e97-98d0-b7cdd6bc1bfe">Foreign Security Principal</a> non &#232; un vero account locale, ma un <strong>puntatore</strong>: un oggetto minimale che contiene esclusivamente il SID dell&#8217;entit&#224; remota.<br>Serve a consentire al dominio di risorse di includere identit&#224; esterne nei propri meccanismi di autorizzazione, senza doverne conoscere la struttura o replicarne gli attributi.</p><p>Ancora una volta, tutto ruota attorno alla <strong>fiducia</strong>: il dominio di risorse non sa <em>chi</em> sia quell&#8217;oggetto, ma si fida del fatto che il suo SID sia stato emesso da un&#8217;autorit&#224; considerata <em>attendibile</em>.</p><h3>L&#8217;evoluzione delle trust: da collegamenti puntuali a fiducia architetturale</h3><p>Nel primo modello di domini Windows, la fiducia &#232; un concetto semplice e molto concreto: due domini si conoscono, si parlano, si fidano l&#8217;uno dell&#8217;altro.<br>Nulla di pi&#249;. Ogni trust &#232; un collegamento esplicito, costruito a mano, che vale solo tra due estremi ben definiti. Se serve altro, si crea un&#8217;altra trust. E poi un&#8217;altra ancora.</p><p>&#200; un modello coerente con l&#8217;epoca: ambienti piccoli, perimetri chiari, poche interazioni.<br>Ma &#232; anche un modello che non scala. Ogni nuova relazione aumenta la complessit&#224; e, soprattutto, rende la fiducia fragile: basta dimenticare un collegamento perch&#233; qualcosa smetta di funzionare.</p><p>Con l&#8217;arrivo di Active Directory e la nascita del concetto di <em>forest</em>, Microsoft cambia approccio.<br>I domini non sono pi&#249; isole indipendenti, ma parti di una struttura pi&#249; ampia, pensata per condividere uno spazio di fiducia comune. A supportare un modello gerarchico di Domini nascono le trust <strong>intra-forest<s>,</s> che </strong>diventano automatiche, bidirezionali e transitive: la fiducia non &#232; pi&#249; una decisione puntuale, ma una propriet&#224; della struttura.</p><p>&#200; un passaggio fondamentale: per la prima volta la fiducia smette di essere un insieme di eccezioni e diventa una regola portante.</p><p>Quando per&#242; serve uscire da questo perimetro (collaborare con domini esterni, ambienti legacy o foreste completamente separate) si torna temporaneamente al passato.<br>Come eredit&#224; delle Domain Trust nascono le <strong>External Trust</strong>: collegamenti espliciti, non transitivi, volutamente limitati. Un compromesso necessario, pensato per contenere il rischio e ridurre l&#8217;esposizione.</p><p>Il problema &#232; che, nel frattempo, il mondo &#232; andato avanti.</p><p>Con <strong>Windows Server 2003</strong> arriva il tentativo di sintesi definitiva: la <strong>Forest Trust</strong>.<br>Non pi&#249; una fiducia tra singoli domini, ma tra insiemi di domini. Non pi&#249; un&#8217;eccezione, ma un&#8217;estensione coerente del modello Kerberos-first introdotto con Active Directory. La fiducia diventa finalmente parte anche delle architetture estese: transitiva, strutturata, progettata per scenari complessi come migrazioni, consolidamenti e coesistenza di ambienti.</p><p>Da quel momento, le trust non sono pi&#249; solo un mezzo per &#8220;far funzionare le cose&#8221;, ma uno strumento di design da considerare con attenzione.</p><p>Abbiamo fin qui parlato di <a href="https://learn.microsoft.com/en-us/entra/identity/domain-services/concepts-forest-trust">tanti tipi di trust</a>, fare confusione &#232; un attimo, mettiamo le cose un po&#8217; in ordine:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BQhE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d23c39b-8c67-418c-926d-0cdd6655f4b4_1255x502.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BQhE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d23c39b-8c67-418c-926d-0cdd6655f4b4_1255x502.png 424w, https://substackcdn.com/image/fetch/$s_!BQhE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d23c39b-8c67-418c-926d-0cdd6655f4b4_1255x502.png 848w, https://substackcdn.com/image/fetch/$s_!BQhE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d23c39b-8c67-418c-926d-0cdd6655f4b4_1255x502.png 1272w, https://substackcdn.com/image/fetch/$s_!BQhE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d23c39b-8c67-418c-926d-0cdd6655f4b4_1255x502.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BQhE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d23c39b-8c67-418c-926d-0cdd6655f4b4_1255x502.png" width="1255" height="502" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d23c39b-8c67-418c-926d-0cdd6655f4b4_1255x502.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:502,&quot;width&quot;:1255,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:80930,&quot;alt&quot;:&quot;Tabella comparativa dei tipi di trust in Active Directory, con categoria, creazione, transitivit&#224;, protocolli e scopo.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/192079223?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d23c39b-8c67-418c-926d-0cdd6655f4b4_1255x502.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Tabella comparativa dei tipi di trust in Active Directory, con categoria, creazione, transitivit&#224;, protocolli e scopo." title="Tabella comparativa dei tipi di trust in Active Directory, con categoria, creazione, transitivit&#224;, protocolli e scopo." srcset="https://substackcdn.com/image/fetch/$s_!BQhE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d23c39b-8c67-418c-926d-0cdd6655f4b4_1255x502.png 424w, https://substackcdn.com/image/fetch/$s_!BQhE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d23c39b-8c67-418c-926d-0cdd6655f4b4_1255x502.png 848w, https://substackcdn.com/image/fetch/$s_!BQhE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d23c39b-8c67-418c-926d-0cdd6655f4b4_1255x502.png 1272w, https://substackcdn.com/image/fetch/$s_!BQhE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d23c39b-8c67-418c-926d-0cdd6655f4b4_1255x502.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Riepilogo sulle tipologie di Trust in una foresta Active Directory</figcaption></figure></div><p>In fase di design architetturale la &#8220;vera&#8221; scelta riguarda le trust di tipo esterno (non intra-forest), dove dobbiamo capire &#8220;quanta&#8221; fiducia concedere, ma soprattutto con che modalit&#224;.</p><p>Ed &#232; qui che nasce il gap che vediamo ancora oggi<s>,</s> perch&#233;, mentre il modello di fiducia &#232; evoluto, il modo di pensarlo spesso &#232; rimasto fermo.<br>Applicare un modello di Trust sbagliato rispetto al contesto molto spesso non &#232; un errore di configurazione.<br>&#200; un&#8217;eredit&#224; concettuale.</p><h2>Quali &#8220;danni&#8221; si possono fare</h2><p>Come per il primo capitolo ho ritenuto interessante ed efficace calare gli aspetti teorici in un contesto pratico, partendo sempre da quanto ho potuto osservare sul campo.</p><h3>Caso reale #1 &#8211; La trust che non ti aspetti</h3><p>Torniamo al <a href="https://www.legacythings.it/i/189367336/caso-reale-1-il-gruppo-che-non-ti-aspetti">Caso reale #1 del capitolo #1</a>, il progetto di migrazione &#232; complesso e prosegue il lavoro da &#8220;equilibrista&#8221;. Se pensavate di aver gi&#224; visto e risolto tutti i problemi vi sbagliate, &#232; una situazione che riserva ancora qualche sorpresa.</p><p>I permessi sulle utenze sono stati sistemati e si passa ai test di migrazione. Per capire bene tutto quello che include lo scenario credo per&#242; che valga la pena fare uno schema di riepilogo:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!l_b2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea15524-32d7-4464-adaa-2f4121ed31c8_703x647.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!l_b2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea15524-32d7-4464-adaa-2f4121ed31c8_703x647.png 424w, https://substackcdn.com/image/fetch/$s_!l_b2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea15524-32d7-4464-adaa-2f4121ed31c8_703x647.png 848w, https://substackcdn.com/image/fetch/$s_!l_b2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea15524-32d7-4464-adaa-2f4121ed31c8_703x647.png 1272w, https://substackcdn.com/image/fetch/$s_!l_b2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea15524-32d7-4464-adaa-2f4121ed31c8_703x647.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!l_b2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea15524-32d7-4464-adaa-2f4121ed31c8_703x647.png" width="703" height="647" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ea15524-32d7-4464-adaa-2f4121ed31c8_703x647.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:647,&quot;width&quot;:703,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:32248,&quot;alt&quot;:&quot;Diagramma dello scenario iniziale di migrazione con ambiente Active Directory source e target, Entra Connect in target, ADFS in source e trust tra gli ambienti. Gli utenti usano un suffisso UPN specifico e il login federato passa dalla farm ADFS del source.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/192079223?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea15524-32d7-4464-adaa-2f4121ed31c8_703x647.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagramma dello scenario iniziale di migrazione con ambiente Active Directory source e target, Entra Connect in target, ADFS in source e trust tra gli ambienti. Gli utenti usano un suffisso UPN specifico e il login federato passa dalla farm ADFS del source." title="Diagramma dello scenario iniziale di migrazione con ambiente Active Directory source e target, Entra Connect in target, ADFS in source e trust tra gli ambienti. Gli utenti usano un suffisso UPN specifico e il login federato passa dalla farm ADFS del source." srcset="https://substackcdn.com/image/fetch/$s_!l_b2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea15524-32d7-4464-adaa-2f4121ed31c8_703x647.png 424w, https://substackcdn.com/image/fetch/$s_!l_b2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea15524-32d7-4464-adaa-2f4121ed31c8_703x647.png 848w, https://substackcdn.com/image/fetch/$s_!l_b2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea15524-32d7-4464-adaa-2f4121ed31c8_703x647.png 1272w, https://substackcdn.com/image/fetch/$s_!l_b2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea15524-32d7-4464-adaa-2f4121ed31c8_703x647.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Lo scenario di partenza: una migrazione che si basa su di una Trust attiva.</figcaption></figure></div><p>Anche solo contando il numero di frecce che sono servite a tracciare lo schema ci si rende conto del significato della parola &#8220;complesso&#8221;, gli elementi in campo sono diversi, soffermiamoci su quelli pi&#249; significativi:</p><p>&#183; Tra l&#8217;ambiente Active Directory sorgente e destinazione &#232; presente una Trust</p><p>&#183; Il motore di sincronizzazione Entra Connect &#232; in target ed ha un connettore anche verso il source</p><p>&#183; Gli utenti da migrare fanno uso di uno specifico suffisso nello UserPrincipalName (UPN), ovvero quell&#8217;attributo di logon simile alla mail</p><p>&#183; Il metodo di login per quel suffisso UPN sul tenant Entra ID &#232; di tipo federato e punta ad una Farm ADFS in source</p><p>Si tratta di uno scenario dove &#232; gi&#224; attiva una &#8220;collaborazione tra le parti&#8221; di cui la Trust &#232; la colonna portante, la migrazione delle identit&#224; &#232; solo una parte del disegno complessivo.</p><p>Ma rimanendo sulle identit&#224; mi preme sottolineare un paio di dettagli:</p><p>&#183; I nomi Netbios ed FQDN tra i due ambienti Active Directory sono differenti, requisito per poter attivare una trust</p><p>&#183; Il suffisso UPN degli utenti, che &#232; di fatto un FQDN aggiuntivo, pu&#242; essere registrato <strong>solo in una delle due Active Directory alla volta</strong>, pena la generazione di &#8220;<a href="https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc784334(v=ws.10)?redirectedfrom=MSDN#collision-detection">UPN suffix collision</a>&#8221;. Questo obbliga ad una migrazione di tipo cut-over, dove le utenze ed il relativo FQDN vengono spostate in blocco.</p><p>Torniamo ai nostri test, viene individuato un FQDN separato con cui svolgere tutto il processo, la procedura va avanti, si arriva al momento del cut-over, le utenze diventano attive in target e si passa al test di logon.</p><p>Pagina di logon di Microsoft 365, si inserisce lo UserPrincipalName di un utente di test, il sistema di federazione ci rimanda alla farm ADFS, si inserisce la password e&#8230; otteniamo un KO: <em>Incorrect username or password.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pYRb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7fc785d-e109-45fb-a592-7f6df85c2a00_703x647.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pYRb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7fc785d-e109-45fb-a592-7f6df85c2a00_703x647.png 424w, https://substackcdn.com/image/fetch/$s_!pYRb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7fc785d-e109-45fb-a592-7f6df85c2a00_703x647.png 848w, https://substackcdn.com/image/fetch/$s_!pYRb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7fc785d-e109-45fb-a592-7f6df85c2a00_703x647.png 1272w, https://substackcdn.com/image/fetch/$s_!pYRb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7fc785d-e109-45fb-a592-7f6df85c2a00_703x647.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pYRb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7fc785d-e109-45fb-a592-7f6df85c2a00_703x647.png" width="703" height="647" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f7fc785d-e109-45fb-a592-7f6df85c2a00_703x647.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:647,&quot;width&quot;:703,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:31754,&quot;alt&quot;:&quot;Diagramma del fallimento di logon durante la migrazione: il login Microsoft 365 dell&#8217;utente viene reindirizzato alla farm ADFS del source, ma l&#8217;External Trust non consente il corretto instradamento del suffisso UPN aggiuntivo verso i Domain Controller del target.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/192079223?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7fc785d-e109-45fb-a592-7f6df85c2a00_703x647.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagramma del fallimento di logon durante la migrazione: il login Microsoft 365 dell&#8217;utente viene reindirizzato alla farm ADFS del source, ma l&#8217;External Trust non consente il corretto instradamento del suffisso UPN aggiuntivo verso i Domain Controller del target." title="Diagramma del fallimento di logon durante la migrazione: il login Microsoft 365 dell&#8217;utente viene reindirizzato alla farm ADFS del source, ma l&#8217;External Trust non consente il corretto instradamento del suffisso UPN aggiuntivo verso i Domain Controller del target." srcset="https://substackcdn.com/image/fetch/$s_!pYRb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7fc785d-e109-45fb-a592-7f6df85c2a00_703x647.png 424w, https://substackcdn.com/image/fetch/$s_!pYRb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7fc785d-e109-45fb-a592-7f6df85c2a00_703x647.png 848w, https://substackcdn.com/image/fetch/$s_!pYRb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7fc785d-e109-45fb-a592-7f6df85c2a00_703x647.png 1272w, https://substackcdn.com/image/fetch/$s_!pYRb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7fc785d-e109-45fb-a592-7f6df85c2a00_703x647.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Il punto di rottura: la trust esiste, ma non sa portare la richiesta dove serve.</figcaption></figure></div><p>Uhm&#8230; errore molto generico, inizia la trafila delle verifiche:</p><p>&#183; L&#8217;utente &#232; attivo in target? &gt; S&#236;</p><p>&#183; Reset della password in target &gt; ancora KO</p><p>&#183; Tentativo di logon su ADFS con SamaccountName (DOMAIN\username) &gt; stesso errore</p><p>&#183; La risoluzione DNS funziona? &gt; S&#236;</p><p>&#183; I requisiti per gli <a href="https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/overview/ad-fs-requirements#multi-forest-requirements">scenari multi-forest</a> di ADFS sono soddisfatti? &gt; OK</p><p>&#183; La Trust &#232; configurata correttamente? &gt; &#8230;</p><p>Ecco, questo &#232; il momento in cui salta fuori il <em><strong>dettaglio che cambia tutto</strong></em>.</p><p>Andando ad analizzare la configurazione della Trust tra i due ambienti Active Directory ci si rende conto che &#232; stata attivata (o meglio ereditata) una <strong>External Trust</strong> e non una pi&#249; sofisticata <strong>Forest Trust</strong>.</p><p>Altro dettaglio importante, visto in precedenza, &#232; che le utenze oggetto di migrazione fanno uso di suffissi UPN aggiuntivi, es: <em>&lt;username&gt;@UPNsuffix.xyz</em></p><p>Questi ultimi sono definiti a livello di foresta e fanno parte dei metadati condivisi tramite la Configuration Partition.</p><p>Il meccanismo di Name / UPN Suffix Routing utilizza queste informazioni ed &#232; <a href="https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc784334(v=ws.10)?redirectedfrom=MSDN#routing-name-suffixes-across-forests-1">disponibile solo nel contesto di una forest trust</a>.</p><p><em>&#8220;Name suffix routing is a mechanism used to manage how authentication requests are routed across Windows Server 2003 forests that are joined together by forest trusts.&#8221;</em></p><p>Le <strong>External Trust</strong>, operando esclusivamente a livello di dominio, <strong>non hanno visibilit&#224; dei metadati di foresta e non possono quindi instradare suffissi UPN aggiuntivi.</strong></p><p>Per questo motivo un tentativo di logon con il suffisso UPN aggiuntivo, effettuato nella farm ADFS dell&#8217;ambiente source, non permette il corretto instradamento della richiesta verso i Domain Controller dell&#8217;ambiente Active Directory target.</p><p>Siamo quindi alle prese con una <strong>configurazione ereditata</strong>, sicuramente funzionale allo scopo originale, <strong>ma incompatibile con lo scenario presente.</strong></p><p>La domanda a questo punto &#232; inevitabile: come risolvere?</p><p>La soluzione tecnica pi&#249; ovvia sarebbe quella di sostituire l&#8217;<strong>External Trust </strong>con una <strong>Forest Trust</strong>. Logico no?</p><p>Peccato che nei progetti reali le soluzioni ovvie non siano sempre praticabili e si scontrano con le politiche aziendali.</p><p>In questo caso il cliente aveva le idee chiare: <strong>nessuna modifica architetturale poteva essere approvata senza una verifica formale degli impatti</strong>, condotta in un ambiente controllato che riproducesse fedelmente la produzione. E con un vincolo ulteriore, non negoziabile:<strong> l&#8217;esperienza utente non doveva cambiare.</strong></p><p>Requisiti comprensibili, anzi corretti e tutelativi, ma che nella pratica significavano una cosa sola: <em><strong>la strada pi&#249; semplice era sbarrata</strong></em>.</p><p>&#200; uno di quei momenti in cui il lavoro da equilibrista si fa sentire davvero. Hai la diagnosi, conosci la cura, ma non puoi somministrarla. Devi trovare un percorso alternativo che rispetti i vincoli, non comprometta l&#8217;esperienza utente e non faccia saltare la timeline del progetto.</p><p>La soluzione individuata &#232; stata quella di <strong>aggirare il limite senza ignorarlo</strong>: introdurre una nuova farm ADFS nell&#8217;ambiente target, validare l&#8217;architettura e l&#8217;esperienza utente con un suffisso UPN dedicato, raccogliere le evidenze necessarie per portare al tavolo una proposta formale di cambio architetturale in un secondo momento.</p><p>Non la risposta ideale. Ma la risposta possibile in quello specifico contesto.</p><p>Questo il diagramma di arrivo:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0zBF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa20cbdf1-bfaa-4eb8-ae49-d0b66e8747db_703x647.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0zBF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa20cbdf1-bfaa-4eb8-ae49-d0b66e8747db_703x647.png 424w, https://substackcdn.com/image/fetch/$s_!0zBF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa20cbdf1-bfaa-4eb8-ae49-d0b66e8747db_703x647.png 848w, https://substackcdn.com/image/fetch/$s_!0zBF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa20cbdf1-bfaa-4eb8-ae49-d0b66e8747db_703x647.png 1272w, https://substackcdn.com/image/fetch/$s_!0zBF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa20cbdf1-bfaa-4eb8-ae49-d0b66e8747db_703x647.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0zBF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa20cbdf1-bfaa-4eb8-ae49-d0b66e8747db_703x647.png" width="703" height="647" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a20cbdf1-bfaa-4eb8-ae49-d0b66e8747db_703x647.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:647,&quot;width&quot;:703,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:31646,&quot;alt&quot;:&quot;Diagramma della soluzione finale con una nuova farm ADFS nell&#8217;ambiente target, introdotta per validare architettura ed esperienza utente senza modificare subito la trust esistente.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/192079223?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa20cbdf1-bfaa-4eb8-ae49-d0b66e8747db_703x647.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagramma della soluzione finale con una nuova farm ADFS nell&#8217;ambiente target, introdotta per validare architettura ed esperienza utente senza modificare subito la trust esistente." title="Diagramma della soluzione finale con una nuova farm ADFS nell&#8217;ambiente target, introdotta per validare architettura ed esperienza utente senza modificare subito la trust esistente." srcset="https://substackcdn.com/image/fetch/$s_!0zBF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa20cbdf1-bfaa-4eb8-ae49-d0b66e8747db_703x647.png 424w, https://substackcdn.com/image/fetch/$s_!0zBF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa20cbdf1-bfaa-4eb8-ae49-d0b66e8747db_703x647.png 848w, https://substackcdn.com/image/fetch/$s_!0zBF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa20cbdf1-bfaa-4eb8-ae49-d0b66e8747db_703x647.png 1272w, https://substackcdn.com/image/fetch/$s_!0zBF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa20cbdf1-bfaa-4eb8-ae49-d0b66e8747db_703x647.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">La soluzione possibile: aggirare il limite senza ignorarlo.</figcaption></figure></div><p>Anche in questo caso siamo di fronte ad uno sforzo extra che difficilmente pu&#242; essere preventivato durante la normale fase di assessment.</p><p>La Trust era attiva e stava facendo quello per cui era stata progettata, peccato che non fosse sufficiente a supportare lo scenario di migrazione.</p><p>Supponendo che la messa in opera della Trust sia stata fatta dopo il 2003, viene naturale aprire una riflessione sulla lungimiranza della scelta che ha portato all&#8217;uso della <strong>External Trust</strong> e dei vincoli che nel tempo si porta dietro.</p><h2>Cosa ci ha insegnato la fiducia</h2><p>La fiducia, nei sistemi informatici, &#232; uno di quei concetti che diamo per scontati fino a quando non smette di funzionare.<br>&#200; una compagna invisibile, silenziosa, che ci abitua alla sua presenza senza farsi sentire. Eppure, quando viene progettata o ereditata senza piena consapevolezza, &#232; in grado di determinare il successo o il fallimento di intere architetture.</p><p>Il caso visto in questo capitolo mostra chiaramente un punto spesso trascurato: <strong>una trust non &#232; solo un collegamento tecnico, &#232; una scelta di design</strong>.<br>Una scelta che nasce in un contesto preciso, per risolvere un problema specifico, e che pu&#242; restare perfettamente valida per anni&#8230; fino a quando <strong>il contesto cambia.</strong></p><p>Nel momento in cui entrano in gioco identit&#224; ibride, federazioni, suffissi UPN aggiuntivi e requisiti di continuit&#224; verso il cloud, quella stessa fiducia pu&#242; diventare un vincolo invisibile.<br>Non perch&#233; sia &#8220;sbagliata&#8221;, ma perch&#233; &#232; stata pensata per un mondo diverso, con confini pi&#249; semplici e percorsi di autenticazione meno articolati.</p><p>La lezione pi&#249; importante &#232; che <strong>la fiducia non scala automaticamente con la complessit&#224;</strong>.<br>Aggiungere nuovi componenti (Entra ID, ADFS, sincronizzazioni multi&#8209;forest) senza rimettere in discussione il modello di trust significa spesso costruire sopra <em><strong>fondamenta che non sono state progettate per sostenere quel peso</strong></em>.</p><p>C&#8217;&#232; poi una seconda lezione, ancora pi&#249; sottile: <strong>i problemi legati alla fiducia raramente si manifestano in modo esplicito</strong>.<br>Non producono errori chiari, non indicano una causa precisa. Si presentano come comportamenti ambigui, autenticazioni che falliscono &#8220;senza motivo&#8221;, configurazioni che sembrano corrette ma non funzionano. Ed &#232; proprio questa ambiguit&#224; a renderli costosi da diagnosticare e risolvere.</p><p>Come nel caso del guardiano visto nel Capitolo 1, anche qui <em><strong>il problema non sono le trust</strong></em>.<br>Esse continuano a fare esattamente ci&#242; per cui sono state progettate: delimitare perimetri, stabilire confini, definire chi pu&#242; fidarsi di chi.<br>Il problema nasce quando <strong>il design moderno ignora quei confini</strong>, assumendo che la fiducia sia implicita, transitiva o adattabile per default.</p><p>Negli ambienti ibridi<s>,</s> la fiducia non &#232; un dettaglio operativo<s>,</s> ma una <strong>decisione architetturale di primo livello</strong>.<br>Trattarla come un&#8217;eredit&#224; da subire, invece che come un elemento da comprendere e ridisegnare, significa spostare i problemi pi&#249; avanti nel tempo<s>,</s> dove saranno inevitabilmente pi&#249; complessi e pi&#249; costosi, soprattutto quando si inseriscono nell&#8217;equazione i vincoli &#8220;politici&#8221;.</p><p>Ed &#232; proprio da qui che <em><strong>Legacy Things</strong></em> continua il suo percorso: riportare alla luce quei meccanismi silenziosi che, pur nati decenni fa, continuano a determinare il comportamento delle infrastrutture moderne.<br>Perch&#233; ignorare il passato non lo rende innocuo. Lo rende solo pi&#249; difficile da riconoscere quando torna a farsi sentire.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.legacythings.it/subscribe?&quot;,&quot;text&quot;:&quot;Iscriviti&quot;,&quot;language&quot;:&quot;it&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Grazie per aver letto Legacy Things! Iscriviti gratuitamente per ricevere nuovi post e supportare il mio lavoro.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digita la tua email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Iscriviti"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Chapter #2 – A Matter of Trust]]></title><description><![CDATA[Beyond the perimeter&#8217;s edge]]></description><link>https://www.legacythings.it/p/chapter-2-a-matter-of-trust</link><guid isPermaLink="false">https://www.legacythings.it/p/chapter-2-a-matter-of-trust</guid><dc:creator><![CDATA[Marco Lelli]]></dc:creator><pubDate>Mon, 30 Mar 2026 06:10:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!LGe3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39bffba-8323-4c05-ab04-8d8062c870f4_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Versione italiana disponibile qui &#8594;</em><a href="https://www.legacythings.it/p/capitolo-1-adminsdholder-il-guardiano"> </a><em><a href="https://www.legacythings.it/p/capitolo-2-una-questione-di-fiducia">[IT]</a></em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LGe3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39bffba-8323-4c05-ab04-8d8062c870f4_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LGe3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39bffba-8323-4c05-ab04-8d8062c870f4_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!LGe3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39bffba-8323-4c05-ab04-8d8062c870f4_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!LGe3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39bffba-8323-4c05-ab04-8d8062c870f4_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!LGe3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39bffba-8323-4c05-ab04-8d8062c870f4_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LGe3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39bffba-8323-4c05-ab04-8d8062c870f4_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a39bffba-8323-4c05-ab04-8d8062c870f4_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3021479,&quot;alt&quot;:&quot;Illustration of a Formula 1 car on track, used as a metaphor for trust and the limits of the authentication perimeter discussed in the chapter.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/192082985?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39bffba-8323-4c05-ab04-8d8062c870f4_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Illustration of a Formula 1 car on track, used as a metaphor for trust and the limits of the authentication perimeter discussed in the chapter." title="Illustration of a Formula 1 car on track, used as a metaphor for trust and the limits of the authentication perimeter discussed in the chapter." srcset="https://substackcdn.com/image/fetch/$s_!LGe3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39bffba-8323-4c05-ab04-8d8062c870f4_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!LGe3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39bffba-8323-4c05-ab04-8d8062c870f4_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!LGe3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39bffba-8323-4c05-ab04-8d8062c870f4_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!LGe3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39bffba-8323-4c05-ab04-8d8062c870f4_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Spring 1993</strong>, the writer is still completing studies.<br>One April Sunday the F1 Grand Prix takes place at Donington, UK. For the legendary <strong>Ayrton Senna</strong> it is a difficult year: his McLaren is inferior to the competition, and he starts fifth on the grid, but there is one detail that plays in his favour: <em><strong>it is raining!</strong></em> And when it rains, his <strong>trust</strong> in the car becomes absolute.<br>Green light, he launches forward like fury and by the end of the first lap he is already in the lead, in total domination. No one else has his <strong>confidence</strong> on a wet track.</p><p>In the rest of the world, in those same months, something equally extraordinary was taking shape, radically changing the way people <strong>trusted</strong> computer systems.<br>With the spread of the <strong>World Wide Web</strong> and the distribution of the <strong>NCSA Mosaic</strong> browser, the Internet stops being an environment reserved for a handful of specialists and suddenly becomes accessible.<br>Anyone can connect, explore remote resources, interact with systems they do not know and do not control.</p><p>Until that moment, security models had been built around clear boundaries: corporate networks, local systems, well&#8209;defined domains.<br>With the Web, instead, people begin relying on distant services, remote identities, infrastructures that live outside their direct control.</p><p>It is a cultural revolution even before a technological one.</p><p>In Enterprise systems the subject of trust is played out across two opposing fronts.<br>On one side, the <strong>Windows</strong> universe was spreading based on a closed, perimeter-based trust model that coincided with the first domains.<br>This is where the first explicit concept of <strong>trust</strong> was introduced, built on a proprietary protocol: <strong>NTLM</strong>.<br>A mechanism designed for controlled environments, where trust is a static, declared configuration.</p><p>On the other side, the <strong>Unix</strong> and academic world had long used distributed authentication models, reaching significant maturity with <strong>Kerberos V5</strong>.<br>Here, trust is not merely a connection between systems, but an element designed for open, interconnected, and potentially heterogeneous environments.</p><p>Two profoundly different visions of <strong>trust</strong>, created to respond to different needs.</p><p>With the introduction of <strong>Active Directory</strong>, however, Microsoft made a fundamental choice: it embraced the values of the other model and <strong>adopted Kerberos as the foundational basis of the new authentication system</strong>, initiating a path of convergence between these two worlds.<br>Initially the models coexisted, side by side more than integrated, as a necessary compromise to guarantee backward compatibility.</p><p>Only with <strong>Windows Server 2003</strong> did a more mature form of convergence arrive, marking the transition towards a <em>Kerberos&#8209;first</em> approach, in which trust became part of the architecture rather than merely a connection between separate perimeters.</p><p>And yet, despite this convergence having happened more than twenty years ago, it has not always been fully understood.<br>As if, paradoxically, <strong>trust itself had been lacking</strong> in the process that intended to unite schools of thought that were originally far apart.</p><p>This chapter starts from here.<br>From a kind of trust that has evolved technically, but not always conceptually, and from the consequences of not having truly understood that change all the way through.</p><h2>What it is and how it works</h2><p>We have understood that the concept of &#8220;Trust&#8221; has deep roots; let us now try to frame it into practical terms within the context of Active Directory.</p><h3>Basic mechanics of a Trust</h3><p>Let us start from a principle that is very often taken for granted: the Authentication Domain.</p><p>A Domain is a perimeter within which an implicit &#8220;trust&#8221; exists among the objects that belong to it, mediated by appropriate permissions that define who can access what and in which mode (we discussed ACLs in Chapter 1).<br>Between different perimeters (Domains) there is no implicit trust, and consequently access is not allowed.</p><p>The element that distinguishes all objects belonging to the same Domain is the <strong>Security Identifier (SID)</strong>.<br>This is a fundamental attribute of the Windows security model: an immutable string that uniquely identifies an entity (user, group, computer&#8230;) regardless of the name assigned to it.</p><p>A SID has a precise structure and can be represented in readable form as follows:<br>S&#8209;1&#8209;5&#8209;21&#8209;&lt;DomainIdentifier&gt;&#8209;&lt;RelativeIdentifier&gt;</p><p>The first part of the SID identifies <strong>the authority that issued it</strong> and the <strong>security context</strong> in which the object was created.<br>In particular, the sequence S&#8209;1&#8209;5&#8209;21 indicates that the SID belongs to a Windows domain context, while the value &lt;DomainIdentifier&gt; represents the identity of the domain itself.</p><p>This means that <strong>all objects belonging to the same domain share exactly the same initial portion of the SID</strong>.</p><p>The final part, called the <strong>Relative Identifier (RID)</strong>, is what makes the object unique within that domain.<br>The RID is assigned by the Domain Controller at the time the object is created and distinguishes a user, group or computer from all others that share the same Domain SID.</p><p>In other words, the SID always tells two different truths:</p><p>&#183; <em>where the object comes from</em> (the domain that issued it)</p><p>&#183; <em>who the object is</em> within that domain</p><p>This separation is one of the cornerstones of the Active Directory security model; if you want to explore the topic further, here is the link to the <a href="https://learn.microsoft.com/en-gb/windows-server/identity/ad-ds/manage/understand-security-identifiers">official article</a>.</p><p>Thanks to this mechanism, ever since the very first NT Domains, the <strong>Domain Trust</strong> mechanism has been available, initially based on the <strong>NTLM</strong> protocol.</p><p>It is important to remember that, even conceptually, trust has a precise direction, the same is true for Domain Trusts, where <strong>those who provide the resources</strong> (for example, a File Server in a resource Domain) <strong>extend trust to</strong> <strong>those who provide the identities</strong> (the user Domain).<br>This direction is represented with an arrow going from resources to identities.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cFHx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cdeacbf-5cd5-43c5-97e8-ac6db74538f3_540x184.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cFHx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cdeacbf-5cd5-43c5-97e8-ac6db74538f3_540x184.png 424w, https://substackcdn.com/image/fetch/$s_!cFHx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cdeacbf-5cd5-43c5-97e8-ac6db74538f3_540x184.png 848w, https://substackcdn.com/image/fetch/$s_!cFHx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cdeacbf-5cd5-43c5-97e8-ac6db74538f3_540x184.png 1272w, https://substackcdn.com/image/fetch/$s_!cFHx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cdeacbf-5cd5-43c5-97e8-ac6db74538f3_540x184.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cFHx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cdeacbf-5cd5-43c5-97e8-ac6db74538f3_540x184.png" width="540" height="184" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8cdeacbf-5cd5-43c5-97e8-ac6db74538f3_540x184.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:184,&quot;width&quot;:540,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3568,&quot;alt&quot;:&quot;Diagram showing the direction of a trust between a resource domain and a user domain, with an arrow from resource.ad to user.ad.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/192082985?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cdeacbf-5cd5-43c5-97e8-ac6db74538f3_540x184.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagram showing the direction of a trust between a resource domain and a user domain, with an arrow from resource.ad to user.ad." title="Diagram showing the direction of a trust between a resource domain and a user domain, with an arrow from resource.ad to user.ad." srcset="https://substackcdn.com/image/fetch/$s_!cFHx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cdeacbf-5cd5-43c5-97e8-ac6db74538f3_540x184.png 424w, https://substackcdn.com/image/fetch/$s_!cFHx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cdeacbf-5cd5-43c5-97e8-ac6db74538f3_540x184.png 848w, https://substackcdn.com/image/fetch/$s_!cFHx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cdeacbf-5cd5-43c5-97e8-ac6db74538f3_540x184.png 1272w, https://substackcdn.com/image/fetch/$s_!cFHx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cdeacbf-5cd5-43c5-97e8-ac6db74538f3_540x184.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Trust direction</figcaption></figure></div><p>When a Trust is activated, the resource domain does not import users nor replicate objects from the trusted domain.<br>Instead, it accepts something much simpler and far more powerful: <strong>the Security Identifiers issued on the other side</strong>.</p><p>When an external object is used for the first time (for example, by adding it to a local group or assigning it a permission) Active Directory automatically creates a <strong>Foreign Security Principal</strong>.</p><p>A <a href="https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/5aa09c90-c5db-4e97-98d0-b7cdd6bc1bfe">Foreign Security Principal</a> is not a real local account, but a <strong>pointer</strong>: a minimal object containing only the SID of the remote entity.<br>It allows the resource domain to include external identities in its authorisation mechanisms without needing to know their structure or replicate their attributes.</p><p>Once again, everything revolves around <strong>trust</strong>: the resource domain does not know <em>who</em> that object is, but trusts that its SID was issued by an authority considered <em>reliable</em>.</p><h3>The evolution of trusts: from point-to-point connections to architectural trust</h3><p>In the first Windows domain model, trust was a simple and very concrete concept: two domains know each other, speak to each other, trust each other.<br>Nothing more. Every trust is an explicit, manually created connection that applies only between two well defined endpoints.<br>If you need something else, you create another trust, and then another.</p><p>It is a model coherent with its era: small environments, clear perimeters, few interactions.<br>But it is also a model that does not scale.<br>Every new relationship increases complexity and, more importantly, makes trust fragile: forgetting a single link is enough for something to stop working.</p><p>With the arrival of Active Directory and the birth of the <em>forest</em> concept, Microsoft changed approach.<br>Domains were no longer independent islands, but parts of a broader structure designed to share a common trust space.<br>To support a hierarchical domain model, <strong>intra&#8209;forest trusts</strong> were introduced: automatic, bidirectional, transitive.<br>Trust was no longer an exception but a structural property.</p><p>It was a fundamental shift: for the first time, trust stopped being a set of exceptions and became a foundational rule.</p><p>However, when it becomes necessary to leave this perimeter (to collaborate with external domains, legacy environments or completely separate forests) one temporarily returns to the past.<br>As a legacy of Domain Trusts, <strong>External Trusts</strong> were introduced: explicit, non&#8209;transitive links, deliberately limited.<br>A necessary compromise, designed to contain risk and reduce exposure.</p><p>The problem is that, in the meantime, the world moved on.</p><p>With <strong>Windows Server 2003</strong>, the attempt at a definitive synthesis arrived: the <strong>Forest Trust</strong>.<br>No longer trust between individual domains, but between entire sets of domains.<br>No longer an exception, but a coherent extension of the Kerberos&#8209;first model introduced with Active Directory.<br>Trust finally became part of extended architectures as well: transitive, structured, designed for complex scenarios such as migrations, consolidations and coexistence.</p><p>From that moment onwards, trusts were no longer just a way to &#8220;make things work&#8221;, but a design tool that must be considered carefully.</p><p>So far we have mentioned <a href="https://learn.microsoft.com/en-us/entra/identity/domain-services/concepts-forest-trust">many different types of trusts</a>; confusion is easy, so let&#8217;s put things in order:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!i7le!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F788835a0-6c15-49d4-99cc-30a4d4c1b9dd_1255x476.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!i7le!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F788835a0-6c15-49d4-99cc-30a4d4c1b9dd_1255x476.png 424w, https://substackcdn.com/image/fetch/$s_!i7le!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F788835a0-6c15-49d4-99cc-30a4d4c1b9dd_1255x476.png 848w, https://substackcdn.com/image/fetch/$s_!i7le!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F788835a0-6c15-49d4-99cc-30a4d4c1b9dd_1255x476.png 1272w, https://substackcdn.com/image/fetch/$s_!i7le!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F788835a0-6c15-49d4-99cc-30a4d4c1b9dd_1255x476.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!i7le!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F788835a0-6c15-49d4-99cc-30a4d4c1b9dd_1255x476.png" width="1255" height="476" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/788835a0-6c15-49d4-99cc-30a4d4c1b9dd_1255x476.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:476,&quot;width&quot;:1255,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:67854,&quot;alt&quot;:&quot;Comparison table of Active Directory trust types, showing category, creation, transitivity, protocols and purpose.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/192082985?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F788835a0-6c15-49d4-99cc-30a4d4c1b9dd_1255x476.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Comparison table of Active Directory trust types, showing category, creation, transitivity, protocols and purpose." title="Comparison table of Active Directory trust types, showing category, creation, transitivity, protocols and purpose." srcset="https://substackcdn.com/image/fetch/$s_!i7le!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F788835a0-6c15-49d4-99cc-30a4d4c1b9dd_1255x476.png 424w, https://substackcdn.com/image/fetch/$s_!i7le!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F788835a0-6c15-49d4-99cc-30a4d4c1b9dd_1255x476.png 848w, https://substackcdn.com/image/fetch/$s_!i7le!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F788835a0-6c15-49d4-99cc-30a4d4c1b9dd_1255x476.png 1272w, https://substackcdn.com/image/fetch/$s_!i7le!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F788835a0-6c15-49d4-99cc-30a4d4c1b9dd_1255x476.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Trust type summary inside an Active Directory Forest</figcaption></figure></div><p>In architectural design, the <em>real</em> decision concerns <strong>external-type trusts</strong> (not intra-forest), where we must decide &#8220;how much&#8221; trust to grant and, above all, in what way.</p><p>And this is where the gap we still see today is born, because while the trust model has evolved, the way people think about it has often remained still.<br>Applying the wrong trust model to the wrong context is very often not a configuration error.<br>It is a conceptual legacy.</p><h2>What can go wrong</h2><p>As with the first chapter, I felt it would be both interesting and effective to place the theoretical aspects into a practical context, always starting from what I have been able to observe in the field.</p><h3>Real case #1 &#8211; The trust you do not expect</h3><p>Let us return to <a href="https://www.legacythings.it/i/189536509/real-case-1-the-group-you-dont-expect">Real Case #1 of Chapter #1</a>. The migration project is complex and the work of the &#8220;tightrope walker&#8221; goes on. If you thought you had already seen and solved every problem, you were mistaken: this is a situation that still has a few surprises in store.</p><p>Permissions on the user accounts have been fixed, and the migration tests begin. To fully understand everything that this scenario includes, I believe it is worth laying it out in a summary diagram:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NN3k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13ccd3a-2526-4d88-a488-f2045620c6e1_703x647.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NN3k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13ccd3a-2526-4d88-a488-f2045620c6e1_703x647.png 424w, https://substackcdn.com/image/fetch/$s_!NN3k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13ccd3a-2526-4d88-a488-f2045620c6e1_703x647.png 848w, https://substackcdn.com/image/fetch/$s_!NN3k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13ccd3a-2526-4d88-a488-f2045620c6e1_703x647.png 1272w, https://substackcdn.com/image/fetch/$s_!NN3k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13ccd3a-2526-4d88-a488-f2045620c6e1_703x647.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NN3k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13ccd3a-2526-4d88-a488-f2045620c6e1_703x647.png" width="703" height="647" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c13ccd3a-2526-4d88-a488-f2045620c6e1_703x647.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:647,&quot;width&quot;:703,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:32248,&quot;alt&quot;:&quot;Initial migration scenario diagram showing source and target Active Directory environments, Entra Connect in the target, ADFS in the source and a trust between the two environments. Users rely on a specific UPN suffix and federated sign-in goes through the source ADFS farm.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/192082985?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13ccd3a-2526-4d88-a488-f2045620c6e1_703x647.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Initial migration scenario diagram showing source and target Active Directory environments, Entra Connect in the target, ADFS in the source and a trust between the two environments. Users rely on a specific UPN suffix and federated sign-in goes through the source ADFS farm." title="Initial migration scenario diagram showing source and target Active Directory environments, Entra Connect in the target, ADFS in the source and a trust between the two environments. Users rely on a specific UPN suffix and federated sign-in goes through the source ADFS farm." srcset="https://substackcdn.com/image/fetch/$s_!NN3k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13ccd3a-2526-4d88-a488-f2045620c6e1_703x647.png 424w, https://substackcdn.com/image/fetch/$s_!NN3k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13ccd3a-2526-4d88-a488-f2045620c6e1_703x647.png 848w, https://substackcdn.com/image/fetch/$s_!NN3k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13ccd3a-2526-4d88-a488-f2045620c6e1_703x647.png 1272w, https://substackcdn.com/image/fetch/$s_!NN3k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc13ccd3a-2526-4d88-a488-f2045620c6e1_703x647.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The starting point: a migration already resting on an active trust relationship.</figcaption></figure></div><p>Even just by counting the number of arrows needed to draw the diagram, you immediately understand the meaning of the word &#8220;complex&#8221;. There are several elements in play, so let us focus on the most significant ones:</p><ul><li><p>There is a Trust between the source and target Active Directory environments</p></li><li><p>The Entra Connect synchronisation engine is in the target and has a connector to the source</p></li><li><p>The users to be migrated use a specific suffix in their UserPrincipalName (UPN), that logon attribute that resembles an email address</p></li><li><p>The login method for that UPN suffix in the Entra ID tenant is federated and points to an ADFS Farm in the source</p></li></ul><p>This is a scenario where a &#8220;collaboration between the parties&#8221; is already active, and the Trust is its main pillar. Identity migration is only one part of the overall design.</p><p>Staying on the topic of identities, however, I would like to highlight a couple of details:</p><ul><li><p>The NetBIOS names and FQDNs of the two Active Directory environments are different, which is a requirement for enabling a trust</p></li><li><p>The users&#8217; UPN suffix, which is effectively an additional FQDN, can be registered <em><strong>only in one of the two Active Directory environments at a time</strong></em>, otherwise an &#8220;<a href="https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc784334(v=ws.10)?redirectedfrom=MSDN#collision-detection">UPN suffix collision</a>&#8221; is generated. This forces a cut over migration approach, where the user accounts and the related FQDN are moved in one block.</p></li></ul><p>Back to our tests: a separate FQDN is identified with which to carry out the whole process, the procedure continues, cut over time arrives, the users become active in the target and the logon test begins.</p><p>Microsoft 365 logon page, the UserPrincipalName of a test user is entered, the federation system redirects us to the source ADFS Farm, the password is entered and&#8230; the attempt fails: <em>Incorrect username or password.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2a8Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab622100-7c43-4c32-9d20-ed43cac9c732_703x647.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2a8Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab622100-7c43-4c32-9d20-ed43cac9c732_703x647.png 424w, https://substackcdn.com/image/fetch/$s_!2a8Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab622100-7c43-4c32-9d20-ed43cac9c732_703x647.png 848w, https://substackcdn.com/image/fetch/$s_!2a8Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab622100-7c43-4c32-9d20-ed43cac9c732_703x647.png 1272w, https://substackcdn.com/image/fetch/$s_!2a8Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab622100-7c43-4c32-9d20-ed43cac9c732_703x647.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2a8Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab622100-7c43-4c32-9d20-ed43cac9c732_703x647.png" width="703" height="647" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab622100-7c43-4c32-9d20-ed43cac9c732_703x647.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:647,&quot;width&quot;:703,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:31754,&quot;alt&quot;:&quot;Failed logon diagram showing Microsoft 365 sign-in redirected to the source ADFS farm, where the External Trust cannot correctly route the additional UPN suffix towards the target Domain Controllers.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/192082985?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab622100-7c43-4c32-9d20-ed43cac9c732_703x647.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Failed logon diagram showing Microsoft 365 sign-in redirected to the source ADFS farm, where the External Trust cannot correctly route the additional UPN suffix towards the target Domain Controllers." title="Failed logon diagram showing Microsoft 365 sign-in redirected to the source ADFS farm, where the External Trust cannot correctly route the additional UPN suffix towards the target Domain Controllers." srcset="https://substackcdn.com/image/fetch/$s_!2a8Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab622100-7c43-4c32-9d20-ed43cac9c732_703x647.png 424w, https://substackcdn.com/image/fetch/$s_!2a8Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab622100-7c43-4c32-9d20-ed43cac9c732_703x647.png 848w, https://substackcdn.com/image/fetch/$s_!2a8Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab622100-7c43-4c32-9d20-ed43cac9c732_703x647.png 1272w, https://substackcdn.com/image/fetch/$s_!2a8Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab622100-7c43-4c32-9d20-ed43cac9c732_703x647.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The breaking point: the trust exists, but it cannot take the request where needed.</figcaption></figure></div><p>Hmm&#8230; a very generic error, and so the usual sequence of checks begins:</p><ul><li><p>Is the user active in the target? &gt; Yes</p></li><li><p>Password reset in the target &gt; still KO</p></li><li><p>Attempt to log on to ADFS using SamaccountName (DOMAIN\username) &gt; same error</p></li><li><p>Does DNS resolution work? &gt; Yes</p></li><li><p>Are the requirements for <a href="https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/overview/ad-fs-requirements#multi-forest-requirements">multi-forest</a> ADFS scenarios met? &gt; OK</p></li><li><p>Is the Trust configured correctly? &gt; &#8230;</p></li></ul><p>This is the moment when<em><strong> the detail that changes everything</strong></em> emerges.</p><p>By analysing the Trust configuration between the two Active Directory environments, it becomes clear that an <strong>External Trust</strong> had been enabled, or rather inherited, instead of a more sophisticated <strong>Forest Trust</strong>.</p><p>Another important detail, already mentioned above, is that the users being migrated use additional UPN suffixes, for example: <em>&lt;username&gt;@UPNsuffix.xyz</em></p><p>These are defined at forest level and are part of the metadata shared through the Configuration partition.</p><p>The Name / UPN Suffix Routing mechanism uses this information and is <a href="https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc784334(v=ws.10)?redirectedfrom=MSDN#routing-name-suffixes-across-forests-1">available only in the Forest Trust context</a>.</p><p><em>&#8220;Name suffix routing is a mechanism used to manage how authentication requests are routed across Windows Server 2003 forests that are joined together by forest trusts.&#8221;</em></p><p><strong>External Trusts</strong>, operating exclusively at domain level, <strong>do not have visibility over forest metadata and therefore cannot route additional UPN suffixes</strong>.</p><p>For this reason, an attempt to log on using the additional UPN suffix, carried out through the ADFS Farm in the source environment, cannot correctly route the request towards the Domain Controllers in the target Active Directory environment.</p><p>So, we are dealing with an <strong>inherited configuration</strong>, certainly functional for its original purpose, but <strong>incompatible with the current scenario</strong>.</p><p>At this point, the question becomes inevitable: how do we solve it?</p><p>The most obvious technical solution would be to replace the <strong>External Trust</strong> with a <strong>Forest Trust</strong>. Logical, right?</p><p>The problem is that, in real projects, obvious solutions are not always practical, and they clash with corporate policies.</p><p>In this case, the customer was very clear: <em><strong>no architectural change could be approved without a formal impact assessment</strong>,</em> carried out in a controlled environment that reproduced production faithfully. And there was an additional, non-negotiable constraint: <em><strong>the user experience must not change</strong></em>.</p><p>Understandable requirements indeed, correct and protective ones, but in practice they meant only one thing: <em><strong>the simplest path was blocked</strong></em>.</p><p>This is one of those moments when the tightrope walker&#8217;s work truly makes itself felt. You have the diagnosis, you know the cure, but you cannot administer it. You must find an alternative path that respects the constraints, does not compromise the user experience and does not blow up the project timeline.</p><p>The solution identified was to <strong>work around the limit without ignoring it:</strong> introduce a new ADFS Farm in the target environment, validate the architecture and the user experience with a dedicated UPN suffix, and collect the evidence needed to bring a formal proposal for architectural change to the table at a later stage.</p><p>Not the ideal answer. But the possible answer in that specific context.</p><p>This is the resulting diagram:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yFGQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40c2c123-6ee6-47bb-ad61-74072a116189_703x647.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yFGQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40c2c123-6ee6-47bb-ad61-74072a116189_703x647.png 424w, https://substackcdn.com/image/fetch/$s_!yFGQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40c2c123-6ee6-47bb-ad61-74072a116189_703x647.png 848w, https://substackcdn.com/image/fetch/$s_!yFGQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40c2c123-6ee6-47bb-ad61-74072a116189_703x647.png 1272w, https://substackcdn.com/image/fetch/$s_!yFGQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40c2c123-6ee6-47bb-ad61-74072a116189_703x647.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yFGQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40c2c123-6ee6-47bb-ad61-74072a116189_703x647.png" width="703" height="647" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/40c2c123-6ee6-47bb-ad61-74072a116189_703x647.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:647,&quot;width&quot;:703,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:31646,&quot;alt&quot;:&quot;Final solution diagram showing a new ADFS farm introduced in the target environment in order to validate architecture and user experience without immediately changing the existing trust.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/192082985?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40c2c123-6ee6-47bb-ad61-74072a116189_703x647.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Final solution diagram showing a new ADFS farm introduced in the target environment in order to validate architecture and user experience without immediately changing the existing trust." title="Final solution diagram showing a new ADFS farm introduced in the target environment in order to validate architecture and user experience without immediately changing the existing trust." srcset="https://substackcdn.com/image/fetch/$s_!yFGQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40c2c123-6ee6-47bb-ad61-74072a116189_703x647.png 424w, https://substackcdn.com/image/fetch/$s_!yFGQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40c2c123-6ee6-47bb-ad61-74072a116189_703x647.png 848w, https://substackcdn.com/image/fetch/$s_!yFGQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40c2c123-6ee6-47bb-ad61-74072a116189_703x647.png 1272w, https://substackcdn.com/image/fetch/$s_!yFGQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40c2c123-6ee6-47bb-ad61-74072a116189_703x647.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The possible solution: working around the limit without ignoring it.</figcaption></figure></div><p>Once again, we are facing an extra effort that can hardly be anticipated during the normal assessment phase.</p><p>The Trust was active and was doing exactly what it had been designed to do, but it was not sufficient to support the migration scenario.</p><p>Assuming that the Trust was put in place after 2003, it becomes natural to reflect on the foresight of the decision that led to the use of an <strong>External Trust</strong> and on the constraints it carries forward over time.</p><h2>Lessons learned from the Trust</h2><p>Trust, in computer systems, is one of those concepts that we take for granted until it stops working.</p><p>It is an invisible, silent companion that accustoms us to its presence without ever making itself heard. And yet, when it is designed or inherited without full awareness, it can determine the success or failure of entire architectures.</p><p>The case seen in this chapter clearly shows a point that is often overlooked: <strong>a trust is not just a technical connection, it is a design choice</strong>.</p><p>A choice that is born in a specific context, to solve a specific problem, and that can remain perfectly valid for years&#8230; until <em><strong>the context changes</strong></em>.</p><p>When hybrid identities, federations, additional UPN suffixes and cloud continuity requirements come into play, that same trust can become an invisible constraint.</p><p>Not because it is &#8220;wrong&#8221;, but because it was designed for a different world, with simpler boundaries and less articulated authentication paths.</p><p>The most important lesson is that <strong>trust does not automatically scale with complexity</strong>.</p><p>Adding new components, such as Entra ID, ADFS and multi forest synchronisations, without rethinking the trust model often means building on <em><strong>foundations that were not designed to bear that weight.</strong></em></p><p>There is then a second lesson, even more subtle: <strong>trust related problems rarely manifest themselves explicitly</strong>.</p><p>They do not produce clear errors, they do not point to a precise cause. They present themselves as ambiguous behaviours, authentications that fail &#8220;for no reason&#8221;, configurations that appear correct but do not work. And it is precisely this ambiguity that makes them costly to diagnose and resolve.</p><p>As in the case of the guardian seen in Chapter 1, <em><strong>the problem is not the trusts themselves</strong></em>.</p><p>They continue to do exactly what they were designed to do: define perimeters, establish boundaries, and determine who can trust whom.</p><p>The problem arises when <strong>modern design ignores those boundaries</strong>, assuming that trust is implicit, transitive or adaptable by default.</p><p>In hybrid environments, trust is not an operational detail but a <strong>first level architectural decision</strong>.</p><p>Treating it as an inheritance to be endured, rather than as an element to be understood and redesigned, means pushing problems further into the future, where they will inevitably become more complex and more expensive, especially when &#8220;political&#8221; constraints are added to the equation.</p><p>And it is precisely from here that <em><strong>Legacy Things</strong></em><strong> </strong>continues its path: bringing back to light those silent mechanisms which, although born decades ago, still determine the behaviour of modern infrastructures.</p><p>Because ignoring the past does not make it harmless. It only makes it harder to recognise when it makes itself felt again.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.legacythings.it/subscribe?&quot;,&quot;text&quot;:&quot;Iscriviti&quot;,&quot;language&quot;:&quot;it&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Legacy Things! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digita la tua email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Iscriviti"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Capitolo #1 - AdminSDholder: il guardiano]]></title><description><![CDATA[Quando un meccanismo di Active Directory di 25 anni fa continua a influenzare sicurezza e identity moderne]]></description><link>https://www.legacythings.it/p/capitolo-1-adminsdholder-il-guardiano</link><guid isPermaLink="false">https://www.legacythings.it/p/capitolo-1-adminsdholder-il-guardiano</guid><dc:creator><![CDATA[Marco Lelli]]></dc:creator><pubDate>Mon, 02 Mar 2026 07:15:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!feII!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>English version available here &#8594;<a href="https://www.legacythings.it/p/chapter-1-adminsdholder-the-guardian"> [EN]</a></em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!feII!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!feII!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!feII!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!feII!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!feII!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!feII!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2555496,&quot;alt&quot;:&quot;Illustrazione che rappresenta AdminSDHolder come un guardiano dei privilegi in Active Directory.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/189367336?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Illustrazione che rappresenta AdminSDHolder come un guardiano dei privilegi in Active Directory." title="Illustrazione che rappresenta AdminSDHolder come un guardiano dei privilegi in Active Directory." srcset="https://substackcdn.com/image/fetch/$s_!feII!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!feII!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!feII!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!feII!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>15 dicembre 1999, il mondo vive una strana tensione.<br>Nelle sale italiane si proietta <strong>Il miglio verde</strong>, negli Stati Uniti il pubblico discute animatamente di <strong>Fight Club</strong> e resta spiazzato dal finale de <strong>The Sixth Sense</strong>.</p><p>Le radio passano &#8220;Move Your Body&#8221; degli <strong>Eiffel 65</strong> e in Europa risuona &#8220;Mambo No. 5&#8221; di <strong>Lou Bega</strong>.</p><p>Ma nei meandri dell&#8217;IT, l&#8217;attenzione &#232; rivolta su tutt&#8217;altro.<br>Mancano sedici giorni al cambio di millennio e il mondo IT trattiene il fiato per il Millennium Bug. Si teme che allo scoccare del 1&#176; gennaio 2000 i sistemi possano bloccarsi, che i software scritti decenni prima non siano pronti al nuovo secolo.</p><p>&#200; in questo clima, tra euforia e inquietudine tecnologica, che Microsoft rilascia Windows 2000 in RTM, un sistema operativo che rompe col passato e sta per far sembrare vecchio tutto quanto c&#8217;era prima con l&#8217;introduzione di <strong>Active Directory</strong>.</p><p>E il guardiano &#232; gi&#224; l&#236;:<strong> AdminSDHolder</strong> &#232; un componente nativo, creato come prima difesa interna dei meccanismi della directory, che non pu&#242; essere sospeso n&#233; fermato, va solamente compreso.</p><h2>Cos&#8217;&#232; e come funziona</h2><p>Con <strong>AdminSDHolder</strong> ci si riferisce ad uno dei meccanismi di protezione pi&#249; importanti e pi&#249; dimenticati di Active Directory.</p><p>L&#8217;obiettivo &#232; semplice: <strong>proteggere gli account e i gruppi pi&#249; privilegiati del dominio</strong>, impedendo che permessi errati o deleghe troppo permissive possano comprometterli, volontariamente o per errore.</p><p>In parole povere: evitare di chiudersi fuori casa con le chiavi dentro o evitare che ci riesca qualche malintenzionato.<br>Per riuscire nel suo intento, Active Directory utilizza un approccio molto rigido e poco negoziabile, descritto in questo <a href="https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/plan/security-best-practices/appendix-c--protected-accounts-and-groups-in-active-directory">articolo</a> ufficiale.</p><p>All&#8217;interno di ogni dominio Active Directory esiste un oggetto speciale chiamato <strong>AdminSDHolder</strong>, che si trova nel container <em>System</em> del dominio.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jPOk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jPOk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png 424w, https://substackcdn.com/image/fetch/$s_!jPOk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png 848w, https://substackcdn.com/image/fetch/$s_!jPOk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png 1272w, https://substackcdn.com/image/fetch/$s_!jPOk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jPOk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png" width="317" height="238" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:238,&quot;width&quot;:317,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88946,&quot;alt&quot;:&quot;Schema che mostra l&#8217;oggetto AdminSDHolder nel container System di Active Directory.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/189367336?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Schema che mostra l&#8217;oggetto AdminSDHolder nel container System di Active Directory." title="Schema che mostra l&#8217;oggetto AdminSDHolder nel container System di Active Directory." srcset="https://substackcdn.com/image/fetch/$s_!jPOk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png 424w, https://substackcdn.com/image/fetch/$s_!jPOk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png 848w, https://substackcdn.com/image/fetch/$s_!jPOk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png 1272w, https://substackcdn.com/image/fetch/$s_!jPOk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">L&#8217;oggetto AdminSDHolder contiene il template di sicurezza applicato agli account privilegiati del dominio.</figcaption></figure></div><p>Questo oggetto non rappresenta un utente o un gruppo, ma &#232; un ramo di Active Directory che contiene <strong>un modello di sicurezza, </strong>ovvero nel suo &#8220;Security Descriptor&#8221; (o ACL &gt; Access Control List) sono riportati i <strong>permessi standard </strong>che devono avere gli oggetti considerati critici e che devono essere preservati.</p><p>In altre parole:</p><blockquote><p>&#183; AdminSDHolder &#232; il <strong>template</strong></p><p>&#183; gli oggetti da proteggere sono il<strong> target </strong>a cui applicare il <strong>template</strong></p></blockquote><p>Ogni volta che Active Directory rileva una discrepanza tra il template e un oggetto target, interviene per ripristinare la situazione corretta. Ma come?</p><p>Tutto il meccanismo &#232; mosso da un &#8220;motore interno&#8221; chiamato <strong>SDProp</strong> (Security Descriptor Propagator).</p><p><strong>SDProp</strong> viene innescato sul Domain Controller che detiene il ruolo di <strong>PDCE</strong> (Primary Domain Controller Emulator), non agisce in tempo reale, effettua un ciclo di controllo con un intervallo base di 60 minuti, personalizzabile tramite chiave di registro.</p><p>Durante questo ciclo lavora come un guardiano che, se trova qualcosa fuori posto, lo riporta alla condizione attesa. </p><p>S&#236;, ma quali sono gli oggetti da proteggere?</p><p>La discriminante &#232; l&#8217;appartenenza ai gruppi built-in che detengono un minimo di privilegi sull&#8217;ambiente Active Directory, ecco la lista completa:</p><blockquote><p>&#183; Account Operators</p><p>&#183; Administrator</p><p>&#183; Administrators</p><p>&#183; Backup Operators</p><p>&#183; Domain Admins</p><p>&#183; Domain Controllers</p><p>&#183; Enterprise Admins</p><p>&#183; Enterprise Key Admins</p><p>&#183; Key Admins</p><p>&#183; Krbtgt</p><p>&#183; Print Operators</p><p>&#183; Read-only Domain Controllers</p><p>&#183; Replicator</p><p>&#183; Schema Admins</p><p>&#183; Server Operators</p></blockquote><p>Tutti i gruppi in questione e i relativi membri &#8220;subiscono&#8221; il template <strong>AdminSDHolder</strong>.</p><p><strong>NB:</strong> per membri si intendono inseriti direttamente o per via indiretta attraverso group-nesting, rendendo a volte difficile individuare gli oggetti in perimetro.</p><p>Questo spiega uno dei comportamenti pi&#249; frustranti per chi non conosce il meccanismo: &#8220;Imposto i permessi sugli oggetti, tutto funziona&#8230; e dopo un&#8217;ora spariscono.&#8221;</p><p>Ma come avviene l&#8217;applicazione del template? In una maniera intenzionalmente aggressiva: Active Directory assume che <strong>nessuna delega standard debba mai avere controllo su questi oggetti</strong>.</p><p>Ad un oggetto in ambito accadono tre cose fondamentali:</p><p>1. <strong>L&#8217;ereditariet&#224; dei permessi viene disabilitata</strong></p><blockquote><p>&#183; L&#8217;oggetto smette di ereditare le ACL dalla sua OU di appartenenza.</p><p>&#183; Questo significa che le deleghe impostate a livello di OU <strong>non hanno pi&#249; effetto</strong>.</p></blockquote><p>2. <strong>Vengono applicati i permessi di AdminSDHolder</strong></p><blockquote><p>&#183; L&#8217;ACL dell&#8217;oggetto viene resa coerente con quella del template, indipendentemente da dove l&#8217;oggetto si trovi nella struttura.</p></blockquote><p>3. <strong>Viene impostato l&#8217;attributo adminCount</strong></p><blockquote><p>&#183; L&#8217;attributo adminCount viene impostato a 1, segnalando che l&#8217;oggetto &#232; (o &#232; stato) protetto.</p><p>&#183; Questo attributo, per&#242;, <strong>non viene automaticamente ripristinato</strong> se l&#8217;oggetto esce dai gruppi privilegiati, creando spesso confusione e situazioni paradossali</p></blockquote><p>Ultima cosa da ricordare &#232; che questo meccanismo <strong>non pu&#242; essere disattivato</strong>, bisogna quindi avere ben chiare le sue dinamiche per poter progettare in maniera adeguata i processi IT che vanno a toccare Active Directory e soprattutto che fanno leva su specifiche ACL.</p><h2>Quali &#8220;danni&#8221; si possono fare</h2><p>Adesso che abbiamo capito come funzionano le cose, viene la parte a mio avviso pi&#249; interessante: vedere che &#8220;danni&#8221; si possono fare rimanendo all&#8217;oscuro di questi meccanismi.</p><p>Per farlo ho ritenuto efficace portare delle testimonianze prese direttamente sul campo.</p><h3>Caso reale #1 &#8211; Il gruppo che non ti aspetti</h3><p>Siamo nel pieno di un complesso progetto di migrazione in classico ambiente ibrido: <strong>Active Directory + Entra ID</strong>.<br>Un dominio AD sorgente con le utenze source, un dominio AD di destinazione con le utenze target, Entra Connect configurato per lavorare su entrambi e sincronizzare tutto verso Entra ID. Le utenze source sono le uniche in sync.<br>L&#8217;obiettivo &#232; chiaro quanto ambizioso: <strong>sganciare le utenze source e riagganciare quelle target</strong>, senza impatti sul cloud.</p><p>Per chi non si &#232; mai trovato in un progetto del genere, ribadisco il mio punto di vista: migrare risorse in un contesto moderno ed ibrido &#232; un lavoro da &#8220;equilibrista&#8221;.</p><p>Tutti gli aspetti coinvolti devono essere allineati al millimetro, pena il fallimento.</p><p>Quando si inizia a preparare la procedura di migrazione emergono subito i primi problemi: pi&#249; della met&#224; delle utenze presenta attributi incoerenti tra on&#8209;premise e cloud.<br>Da un rapido sguardo, Entra Connect segnala errori ricorrenti: <em><strong>permission-issue</strong></em>.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FDPx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FDPx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png 424w, https://substackcdn.com/image/fetch/$s_!FDPx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png 848w, https://substackcdn.com/image/fetch/$s_!FDPx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png 1272w, https://substackcdn.com/image/fetch/$s_!FDPx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FDPx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png" width="356" height="225" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:225,&quot;width&quot;:356,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:85780,&quot;alt&quot;:&quot;Immagine di Entra Connect con errori di permission-issue&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/189367336?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Immagine di Entra Connect con errori di permission-issue" title="Immagine di Entra Connect con errori di permission-issue" srcset="https://substackcdn.com/image/fetch/$s_!FDPx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png 424w, https://substackcdn.com/image/fetch/$s_!FDPx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png 848w, https://substackcdn.com/image/fetch/$s_!FDPx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png 1272w, https://substackcdn.com/image/fetch/$s_!FDPx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Entra Connect fallisce la sync con errori di permission-issue.</figcaption></figure></div><p>Prima verifica: i permessi dell&#8217;account di servizio di Entra Connect, coma suggerisce questo <a href="https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/user-prov-sync/troubleshoot-permission-issue-sync-service-manager">articolo</a> ufficiale.</p><p>Nulla di anomalo in apparenza.</p><p>Andando pi&#249; a fondo, emerge per&#242; un dettaglio curioso, tutte le utenze in errore hanno una cosa in comune: da un certo punto in avanti nel tempo, le nuove utenze vengono create con una membership &#8220;inspiegabile&#8221; &gt; <strong>Print Operators</strong>.</p><p>Quel <strong>dettaglio</strong> cambia tutto: Print Operators &#232; uno dei gruppi protetti di Active Directory.</p><p>Diventare membro significa finire automaticamente nel perimetro di <strong>AdminSDHolder</strong>, con ereditariet&#224; disabilitata, permessi riscritti da <strong>SDProp</strong> e ACL che non seguono pi&#249; la struttura dell&#8217;OU.</p><p><strong>Un meccanismo nato 25 anni fa stava bloccando il corretto flusso di dati verso il cloud</strong>.</p><p>La soluzione da applicare si &#232; rivelata tutt&#8217;altro che immediata:</p><ul><li><p>revisione dei meccanismi di provisioning</p></li><li><p>rimozione delle membership errate</p></li><li><p>ripristino dei permessi corretti su centinaia di utenze</p></li><li><p>riallineamento con il cloud</p></li></ul><p>Insomma, uno sforzo extra su molti fronti che si sarebbe potuto evitare all&#8217;origine con un po&#8217; di consapevolezza in pi&#249; nel disegno dei flussi di provisioning.</p><p>In questo caso il povero <strong>AdminSDHolder</strong> non stava ostacolando la migrazione, stava semplicemente facendo il proprio lavoro, proteggendo account che non avrebbero mai dovuto essere trattati come privilegiati.</p><h3>Caso reale #2 &#8211; Quando la sicurezza incontra l&#8217;eredit&#224;</h3><p>Altro cliente, altro ambiente ibrido: <strong>Active Directory + Entra ID</strong>, con Entra Connect regolarmente configurato.<br>Questa volta per&#242; il contesto &#232; diverso: <strong>ambiente stabile</strong>, nessuna migrazione in corso.</p><p>Viene introdotta una soluzione di <em>Manutenzione Utenti</em>, con due obiettivi ben definiti:</p><ul><li><p>notificare agli utenti la scadenza della password, consentendone il cambio da Entra ID con <em>password writeback </em>su Active Directory</p></li><li><p>disattivare automaticamente le utenze per cui non viene rilevata attivit&#224;, on&#8209;premise o cloud, da un certo periodo di tempo</p></li></ul><p>Il tutto seguendo rigorosamente il principio del<strong> Principle of Least Privilege (POLP)</strong>.<br>Vengono creati un Service Principal per Entra ID ed un GMSA per Active Directory. Agli account di servizio vengono assegnati solo i permessi strettamente necessari (POLP). La soluzione viene configurata, testata ed avviata.<br>Tutto &#232; pensato e realizzato secondo i <strong>moderni standard di sicurezza</strong> e, inizialmente, tutto sembra funzionare correttamente.</p><p>Dopo poco tempo, per&#242;, emergono i primi problemi:</p><ul><li><p>alcuni utenti non riescono a cambiare la password</p></li><li><p>altri non possono essere disattivati automaticamente</p></li></ul><p>A questo punto l&#8217;analisi si concentra dove ormai abbiamo intuito che conviene guardare: <strong>permessi</strong> sugli account impattati, <strong>AdminSDHolder</strong> ed <strong>SDProp</strong>.</p><p>Quello che emerge &#232; una situazione meno rara di quanto si possa pensare.<br>Sono presenti utenti che in passato <strong>hanno fatto parte di gruppi protetti</strong>, ma che successivamente ne sono usciti, lasciando una configurazione incoerente: oggetti che non sono pi&#249; privilegiati, che continuano ad avere <strong>adminCount = 1</strong>, <strong>eredit&#224; </strong>dei permessi<strong> interrotta</strong>, template <strong>AdminSDHolder</strong> applicato.</p><p>In questo caso specifico, la causa principale &#232; stata identificata nell&#8217;uso di <strong>assegnazioni dinamiche di gruppi privilegiati</strong>, basate su <strong>Just&#8209;In&#8209;Time Administration</strong>, sempre nel rispetto del POLP.<br>Una scelta corretta dal punto di vista della sicurezza, ma che non ha tenuto conto degli effetti persistenti di AdminSDHolder sugli oggetti in ambito.</p><p>La soluzione sulla carta sarebbe potuta sembrare semplice: <em>facciamo una bonifica e siamo a posto</em>. In realt&#224; si &#232; rivelata pi&#249; complessa del previsto, per alcune implicazioni supplementari.<br>La prima questione &#232; che, per consentire il corretto funzionamento della <em>Manutenzione Utenti</em>, &#232; stato necessario <strong>assegnare all&#8217;account di servizio i permessi direttamente sul template AdminSDHolder</strong>. Questo per consentire la manipolazione di oggetti rimasti &#8220;incastrati&#8221; nel limbo dei permessi.</p><p>Ancora una volta un <strong>dettaglio</strong> cambia per&#242; completamente lo scenario.</p><p>Questo ha infatti un impatto importante in termini di sicurezza: il sistema su cui gira la soluzione diventa a tutti gli effetti <strong>un asset critico</strong>, che deve essere trattato come <strong>Tier 0</strong> secondo <strong>l&#8217;AD Tier Model</strong>, con tutte le implicazioni del caso in termini di hardening, accessi e segregazione. Per questi aspetti vi rimando all&#8217;ottimo <a href="https://www.ictpower.it/sicurezza/implementare-active-directory-tier-model.htm">articolo</a> dell&#8217;amico <a href="https://www.linkedin.com/in/stefanonieri/">Stefano Nieri</a>.</p><p>Infine, serve prendere coscienza che non &#232; sufficiente fare tutto questo per poter risolvere: gli oggetti rimasti nel limbo vengono comunque <strong>esclusi dai successivi cicli di SDProp</strong>. Questo gli consente di &#8220;schivare&#8221; il nuovo set di permessi che consentirebbe alla soluzione di funzionare.</p><p>Unico modo per risolvere: una <strong>bonifica ad-hoc</strong> per ricondurre l&#8217;ambiente ad una situazione stabile.</p><p>Dopo aver rivisto tutto l&#8217;impianto:</p><p>&#183; una password resettata in cloud riesce ad essere propagata correttamente su Active Directory</p><p>&#183; un utente, che non accede in cloud od on-premise da molto tempo, riesce ad essere correttamente disattivato</p><p>Ancora una volta, non si tratta di una configurazione sbagliata, si tratta dell&#8217;interazione tra meccanismi legacy e requisiti di sicurezza moderni, il cui design se preso con leggerezza porta a risultati ingannevoli.</p><p>Gli ambienti ibridi quindi, con gli standard di sicurezza richiesti oggi, sono intrinsecamente pi&#249; complessi di quelli cloud-only.<br>Anche in questo caso, una maggiore consapevolezza in fase di design avrebbe permesso di impostare il lavoro fin dall&#8217;inizio nella direzione corretta, evitando costose correzioni a posteriori.</p><h2>Cosa ci ha insegnato il guardiano</h2><p>AdminSDHolder &#232; un perfetto esempio di come un &#8220;ingranaggio&#8221; che gira sotto il cofano da pi&#249; di vent&#8217;anni possa venire dimenticato: non richiede manutenzione, non genera alert, non fa rumore.</p><p>Eppure, il risultato del suo lavoro <strong>&#232; sempre presente</strong>, anche &#8211; e soprattutto &#8211; in contesti moderni e orientati al cloud.</p><p>La prima lezione che il guardiano ci lascia &#232; semplice, ma spesso sottovalutata: <strong>ignorare un meccanismo non lo rende innocuo</strong>.<br>AdminSDHolder continua a fare ci&#242; per cui &#232; stato progettato, applicando regole di sicurezza pensate per proteggere le fondamenta di Active Directory, anche quando sopra quelle fondamenta costruiamo automazioni, integrazioni cloud e processi &#8220;moderni&#8221;.</p><p>La seconda lezione &#232; che <strong>fare le cose correttamente non &#232; sempre sufficiente</strong>, se manca la consapevolezza di ci&#242; che accade sotto.<br>Nei casi visti non c&#8217;erano configurazioni improvvisate o ambienti trascurati: c&#8217;erano migrazioni pianificate, principi di least privilege, Just&#8209;In&#8209;Time administration e soluzioni pensate secondo gli standard di sicurezza attuali.<br>Eppure, senza conoscere gli effetti persistenti di AdminSDHolder, anche scelte corrette hanno prodotto risultati inattesi.</p><p>Il guardiano ci insegna anche che <strong>l&#8217;eredit&#224; sui sistemi non &#232; sempre visibile</strong>, ma prima o poi presenta il conto.<br>Utenti transitati da gruppi privilegiati, attributi come <em>adminCount</em> mai ripristinati, ereditariet&#224; dei permessi interrotta: elementi che possono restare latenti per anni, fino a quando un nuovo progetto, una nuova integrazione o un nuovo requisito di sicurezza non li porta improvvisamente alla luce.<br>Quando accade, il problema non si manifesta come un errore chiaro, ma come un comportamento &#8220;strano&#8221; da decifrare, difficile da diagnosticare e spesso pi&#249; costoso da correggere di quanto ci si aspetti.</p><p>C&#8217;&#232; infine una lezione di design pi&#249; ampia: <strong>negli ambienti ibridi la complessit&#224; non &#232; un&#8217;eccezione, &#232; la norma</strong>.<br>Cloud e on&#8209;premise non sono mondi separati, ma parti dello stesso sistema. Le regole del passato continuano a influenzare il presente, e progettare soluzioni moderne senza conoscerle significa semplicemente spostare i problemi pi&#249; avanti nel tempo.</p><p>&#200; proprio da questa consapevolezza che nasce<strong> </strong><em><strong>Legacy Things</strong></em>.<br>AdminSDHolder non &#232; un caso isolato, ma solo il primo di molti &#8220;vecchi ingranaggi&#8221; che continuano a vivere sotto la superficie delle infrastrutture attuali. Nei prossimi capitoli esploreremo altri meccanismi legacy, altre scelte progettuali del passato che ancora oggi condizionano il modo in cui costruiamo, proteggiamo e facciamo evolvere i nostri sistemi.</p><p>E a te che sei arrivato fino in fondo a questo primo capitolo chiedo:<br>quali sono i <strong>meccanismi nascosti</strong> che vorresti vedere portati alla luce nelle prossime puntate?</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.legacythings.it/subscribe?&quot;,&quot;text&quot;:&quot;Iscriviti&quot;,&quot;language&quot;:&quot;it&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Grazie per aver letto Legacy Things! Iscriviti gratuitamente per ricevere nuovi post e supportare il mio lavoro.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digita la tua email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Iscriviti"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Chapter #1 - AdminSDholder: the guardian]]></title><description><![CDATA[When a 25&#8209;year&#8209;old Active Directory mechanism still shapes modern security and identity]]></description><link>https://www.legacythings.it/p/chapter-1-adminsdholder-the-guardian</link><guid isPermaLink="false">https://www.legacythings.it/p/chapter-1-adminsdholder-the-guardian</guid><dc:creator><![CDATA[Marco Lelli]]></dc:creator><pubDate>Mon, 02 Mar 2026 07:10:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!feII!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Versione italiana disponibile qui &#8594;</em><a href="https://www.legacythings.it/p/capitolo-1-adminsdholder-il-guardiano"> </a><em><a href="https://www.legacythings.it/p/capitolo-1-adminsdholder-il-guardiano">[IT]</a></em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!feII!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!feII!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!feII!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!feII!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!feII!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!feII!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2555496,&quot;alt&quot;:&quot;Illustrazione che rappresenta AdminSDHolder come un guardiano dei privilegi in Active Directory.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/189367336?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Illustrazione che rappresenta AdminSDHolder come un guardiano dei privilegi in Active Directory." title="Illustrazione che rappresenta AdminSDHolder come un guardiano dei privilegi in Active Directory." srcset="https://substackcdn.com/image/fetch/$s_!feII!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!feII!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!feII!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!feII!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552ae2d9-a69d-4f2f-b1f7-21bb74e9271f_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>December 15th, 1999.</strong><br>The world is living through a strange mix of excitement and tension.</p><p>In Italian cinemas, <em>The Green Mile</em> is on screen. In the United States, people debate <em>Fight Club</em> and are shocked by the ending of <em>The Sixth Sense</em>.<br>On the radio, <em>&#8220;Move Your Body&#8221;</em> by <strong>Eiffel 65</strong> plays nonstop, while <em>&#8220;Mambo No. 5&#8221;</em> by <strong>Lou Bega</strong> echoes across Europe.</p><p>But deep inside the IT world, attention is focused elsewhere.</p><p>Sixteen days remain before the turn of the millennium. The IT industry is holding its breath for the <strong>Millennium Bug</strong>, fearing that systems written decades earlier may fail when the date flips to January 1st, 2000.</p><p>In this climate of uncertainty, Microsoft releases <strong>Windows 2000 RTM</strong>, an operating system that breaks with the past and makes everything before it feel suddenly outdated, thanks to the introduction of <strong>Active Directory</strong>.</p><p>And the guardian is already there: <strong>AdminSDHolder</strong> is a native component, designed as an internal line of defense for the directory&#8217;s most critical mechanisms. It cannot be stopped or disabled. It can only be understood.</p><h2>What It Is and How It Works</h2><p><strong>AdminSDHolder</strong> refers to one of the most important &#8212; and most forgotten &#8212; protection mechanisms in Active Directory.</p><p>Its goal is simple: <strong>to protect the most privileged accounts and groups in the domain</strong>, preventing incorrect permissions or overly permissive delegations from compromising them, either accidentally or intentionally.</p><p>In simple terms: to avoid locking yourself out of your own house &#8212; or letting someone else do it for you.</p><p>To achieve this, Active Directory adopts a <strong>rigid and intentionally non&#8209;negotiable approach</strong>, documented in Microsoft&#8217;s <a href="https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/plan/security-best-practices/appendix-c--protected-accounts-and-groups-in-active-directory">official guidance</a> on protected accounts and groups.</p><p>Within every Active Directory domain, there is a special object called <strong>AdminSDHolder</strong>, located in the <strong>System</strong> container.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jPOk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jPOk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png 424w, https://substackcdn.com/image/fetch/$s_!jPOk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png 848w, https://substackcdn.com/image/fetch/$s_!jPOk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png 1272w, https://substackcdn.com/image/fetch/$s_!jPOk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jPOk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png" width="317" height="238" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:238,&quot;width&quot;:317,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88946,&quot;alt&quot;:&quot;Diagram showing the AdminSDHolder object in the System container of Active Directory.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/189367336?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagram showing the AdminSDHolder object in the System container of Active Directory." title="Diagram showing the AdminSDHolder object in the System container of Active Directory." srcset="https://substackcdn.com/image/fetch/$s_!jPOk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png 424w, https://substackcdn.com/image/fetch/$s_!jPOk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png 848w, https://substackcdn.com/image/fetch/$s_!jPOk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png 1272w, https://substackcdn.com/image/fetch/$s_!jPOk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5681b-4d21-4660-859a-c95c3c3bf716_317x238.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">The AdminSDHolder object contains the security template applied to domain privileged accounts.</figcaption></figure></div><p>This object is not a user or a group. It is a branch of Active Directory that contains a <strong>security template</strong>.</p><p>More precisely, its <strong>security descriptor (ACL)</strong> defines the <strong>standard permissions</strong> that must be enforced on all objects considered critical.</p><p><strong>In other words:</strong></p><ul><li><p>AdminSDHolder is the<strong> template</strong></p></li><li><p>the objects to be protected are the<strong> targets </strong>to which the<strong> template </strong>is applied</p></li></ul><p>Whenever Active Directory detects a discrepancy between the template and a target object, it intervenes to restore the correct state. But how?</p><p>The entire mechanism is driven by an internal &#8220;engine&#8221; called <strong>SDProp</strong> (Security Descriptor Propagator).</p><p><strong>SDProp</strong> is triggered on the Domain Controller holding the <strong>PDCE</strong> (Primary Domain Controller Emulator) role. It does not act in real time; instead, it performs a control cycle with a default interval of <strong>60 minutes</strong>, which can be customized via a registry key.</p><p>During this cycle, it works like a guardian: if it finds something out of place, it brings it back to the expected state.</p><p>But which objects need to be protected?</p><p>The determining factor is <strong>membership in built&#8209;in groups that hold a minimum level of privilege</strong> within the Active Directory environment. Here is the complete list:</p><ul><li><p>Account Operators</p></li><li><p>Administrator</p></li><li><p>Administrators</p></li><li><p>Backup Operators</p></li><li><p>Domain Admins</p></li><li><p>Domain Controllers</p></li><li><p>Enterprise Admins</p></li><li><p>Enterprise Key Admins</p></li><li><p>Key Admins</p></li><li><p>Krbtgt</p></li><li><p>Print Operators</p></li><li><p>Read&#8209;only Domain Controllers</p></li><li><p>Replicator</p></li><li><p>Schema Admins</p></li><li><p>Server Operators</p></li></ul><p>All of these groups and their respective members are subject to the <strong>AdminSDHolder template</strong>.</p><p><strong>Note:</strong><br>By &#8220;members&#8221; we mean both <strong>direct membership</strong> and <strong>indirect membership through group nesting</strong>, which can sometimes make it difficult to identify which objects fall within scope.</p><p>This explains one of the most frustrating behaviors for those unfamiliar with the mechanism:</p><blockquote><p><em>&#8220;I set permissions on the objects, everything works&#8230; and an hour later they&#8217;re gone.&#8221;</em></p></blockquote><p>But how is the template actually applied?</p><p>In an <strong>intentionally aggressive</strong> way: Active Directory assumes that <strong>no standard delegation should ever have control over these objects</strong>.</p><p>When an object falls within scope, <strong>three fundamental things happen</strong>:</p><p>1. Permission inheritance is disabled</p><ul><li><p>The object stops inheriting ACLs from its parent OU.</p></li><li><p>This means that delegations configured at the OU level <strong>no longer apply</strong>.</p></li></ul><p>2. AdminSDHolder permissions are applied</p><ul><li><p>The object&#8217;s ACL is aligned with the template, regardless of where the object is located in the directory structure.</p></li></ul><p>3. The <code>adminCount</code> attribute is set</p><ul><li><p>The <code>adminCount</code> attribute is set to <strong>1</strong>, indicating that the object <strong>is (or has been) protected</strong>.</p></li><li><p>This attribute, however, <strong>is not automatically reset</strong> when the object is removed from privileged groups, often leading to confusion and paradoxical situations.</p></li></ul><p>The last thing to remember is that <strong>this mechanism cannot be disabled</strong>.<br>Its dynamics must be clearly understood in order to properly design IT processes that interact with Active Directory &#8212; especially those that rely on specific ACLs.</p><h2>What Can Go Wrong</h2><p>Now that we understand how the mechanism works, we get to what I personally find the most interesting part: seeing <strong>what can go wrong</strong> when these mechanisms are not fully understood.</p><p>To do that, I found it effective to bring in <strong>real&#8209;world cases taken directly from the field</strong>.</p><h3>Real Case #1 &#8211; The Group You Don&#8217;t Expect</h3><p>We are in the middle of a complex migration project in a classic <strong>hybrid environment</strong>: <strong>Active Directory + Entra ID</strong>.</p><p>There is:</p><ul><li><p>a <strong>source AD domain</strong> with <em>source</em> users</p></li><li><p>a <strong>target AD domain</strong> with <em>target</em> users</p></li><li><p><strong>Entra Connect</strong> configured to work with both domains and synchronize everything to Entra ID</p></li></ul><p>Only the <em>source</em> users are currently synchronized.</p><p>The goal is as clear as it is ambitious: <strong>detach the source users and attach the target users, without any impact on the cloud</strong>.</p><p>For those who have never been involved in a project like this, I&#8217;ll restate my point of view: <strong>migrating resources in a modern hybrid environment is a balancing act</strong>.</p><p>Every single aspect must be aligned with absolute precision &#8212; otherwise, failure is almost guaranteed.</p><p>As soon as the migration procedure is prepared, the first problems emerge: <strong>more than half of the users show inconsistent attributes between on&#8209;premises and cloud</strong>.</p><p>At a quick glance, Entra Connect reports recurring errors: <em><strong>permission-issue</strong></em>.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FDPx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FDPx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png 424w, https://substackcdn.com/image/fetch/$s_!FDPx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png 848w, https://substackcdn.com/image/fetch/$s_!FDPx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png 1272w, https://substackcdn.com/image/fetch/$s_!FDPx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FDPx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png" width="356" height="225" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:225,&quot;width&quot;:356,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:85780,&quot;alt&quot;:&quot;Entra Connect showing synchronization errors caused by permission issues.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/189367336?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Entra Connect showing synchronization errors caused by permission issues." title="Entra Connect showing synchronization errors caused by permission issues." srcset="https://substackcdn.com/image/fetch/$s_!FDPx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png 424w, https://substackcdn.com/image/fetch/$s_!FDPx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png 848w, https://substackcdn.com/image/fetch/$s_!FDPx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png 1272w, https://substackcdn.com/image/fetch/$s_!FDPx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1582aee-bdd3-4b08-884e-9b1dca0a3166_356x225.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Entra Connect fails synchronization due to permission issues.</figcaption></figure></div><p><strong>First check:</strong> the permissions of the <strong>Entra Connect service account</strong>, as suggested by this <a href="https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/user-prov-sync/troubleshoot-permission-issue-sync-service-manager">official article</a>.</p><p>Nothing unusual at first glance.</p><p>Digging deeper, however, a curious detail emerges: <strong>all the users affected by the issue have one thing in common</strong>: from a certain point onward, new users are being created with an <em>&#8220;unexplained&#8221;</em> membership &gt; <strong>Print Operators</strong>.</p><p>That <strong>detail </strong>changes everything:  <strong>Print Operators</strong> is one of the <strong>protected groups</strong> in Active Directory.</p><p>Becoming a member automatically places the object within the <strong>AdminSDHolder scope</strong>, with inheritance disabled, permissions rewritten by <strong>SDProp</strong>, and ACLs that no longer follow the OU structure.</p><p><strong>A mechanism designed 25 years ago was blocking the correct data flow to the cloud.</strong></p><p>The solution turned out to be anything but straightforward:</p><ul><li><p>review of provisioning mechanisms</p></li><li><p>removal of incorrect group memberships</p></li><li><p>restoration of correct permissions on hundreds of user accounts</p></li><li><p>realignment with the cloud</p></li></ul><p>In short, a significant effort across multiple fronts &#8212; one that could have been avoided from the start with a bit more awareness in the design of provisioning flows.</p><p>In this case, poor <strong>AdminSDHolder</strong> was not blocking the migration at all.<br>It was simply doing its job, <strong>protecting accounts that should never have been treated as privileged in the first place</strong>.</p><h3>Real Case #2 &#8211; When Security Meets Legacy</h3><p>Another customer, another hybrid environment: <strong>Active Directory + Entra ID</strong>, with <strong>Entra Connect</strong> properly configured.<br>This time, however, the context is different: <strong>a stable environment</strong>, with no migration in progress.</p><p>A <strong>User Maintenance</strong> solution is introduced, with two clearly defined goals:</p><ul><li><p>notify users of upcoming password expiration, allowing them to change it from Entra ID using <strong>password writeback</strong> to Active Directory</p></li><li><p>automatically disable user accounts for which no activity is detected, either on&#8209;premises or in the cloud, for a given period of time</p></li></ul><p>All of this is implemented in strict compliance with the <strong>Principle of Least Privilege (POLP)</strong>.</p><p>A <strong>Service Principal</strong> is created for Entra ID and a <strong>GMSA</strong> for Active Directory.<br>Only the strictly necessary permissions are assigned to the service accounts (POLP).<br>The solution is configured, tested, and put into production.</p><p>Everything is designed and implemented according to <strong>modern security standards</strong>, and at first, everything appears to be working correctly.</p><p>After a short time, however, the first problems begin to surface:</p><ul><li><p>some users are unable to change their passwords</p></li><li><p>others cannot be automatically disabled</p></li></ul><p>At this point, the analysis focuses where experience has taught us to look:<br><strong>permissions on the affected accounts, AdminSDHolder, and SDProp</strong>.</p><p>What emerges is a situation that is less rare than one might expect.</p><p>There are users who <strong>previously belonged to protected groups</strong>, but were later removed from them, leaving behind an inconsistent configuration: objects that are no longer privileged, yet still have <strong>adminCount = 1</strong>, <strong>permission inheritance disabled</strong>, and the <strong>AdminSDHolder template applied</strong>.</p><p>In this specific case, the root cause was identified in the use of <strong>dynamic assignments to privileged groups</strong>, based on <strong>Just&#8209;In&#8209;Time Administration</strong>, still fully compliant with POLP.</p><p>A correct choice from a security standpoint &#8212; but one that failed to account for the <strong>persistent effects of AdminSDHolder</strong> on the affected objects.</p><p>On paper, the solution might have seemed simple: <em>clean things up and move on</em>.<br>In reality, it turned out to be more complex than expected due to additional implications.</p><p>The first issue was that, to allow the User Maintenance solution to function correctly, it became necessary to assign permissions <strong>directly on the AdminSDHolder template</strong> to the service account.<br>This was required to enable the manipulation of objects that had become &#8220;stuck&#8221; in a permissions limbo.</p><p>Once again, <strong>a small detail </strong>completely changes the scenario.</p><p>This has a significant impact from a security perspective: the system running the solution effectively becomes a <strong>critical asset</strong>, which must be treated as <strong>Tier 0</strong> according to the <strong>AD Tier Model</strong>, with all the associated implications in terms of hardening, access control, and segregation.</p><p>For these aspects, I refer you to the excellent <a href="https://www.ictpower.it/sicurezza/implementare-active-directory-tier-model.htm">article</a> by my friend <strong><a href="https://www.linkedin.com/in/stefanonieri/">Stefano Nieri</a></strong>.</p><p>Finally, it is important to realize that even all of this is <strong>not sufficient</strong> on its own to fully resolve the issue: objects stuck in this limbo are still <strong>excluded from subsequent SDProp cycles</strong>.<br>This allows them to &#8220;bypass&#8221; the new permission set that would otherwise enable the solution to work correctly.</p><p>The only way to resolve the situation is an <strong>ad&#8209;hoc cleanup</strong>, aimed at bringing the environment back to a stable state.</p><p>After reviewing the entire setup:</p><ul><li><p>a password reset in the cloud is correctly propagated to Active Directory</p></li><li><p>a user who has not accessed either the cloud or on&#8209;premises for a long time can be properly disabled</p></li></ul><p>Once again, this is not a case of incorrect configuration.<br>It is the result of the interaction between <strong>legacy mechanisms and modern security requirements</strong>, whose design &#8212; if treated lightly &#8212; can lead to misleading results.</p><p>Hybrid environments, therefore, with today&#8217;s required security standards, are <strong>intrinsically more complex than cloud&#8209;only environments</strong>.</p><p>In this case as well, greater awareness during the design phase would have made it possible to set things up correctly from the start, <strong>avoiding costly corrective actions later on</strong>.</p><h2>Lessons learned from the Guardian</h2><p><strong>AdminSDHolder</strong> is a perfect example of how a &#8220;gear&#8221; that has been running under the hood for more than twenty years can be forgotten: it requires no maintenance, generates no alerts, and makes no noise.</p><p>And yet, the result of its work is always present &#8212; even, and especially, in modern cloud&#8209;oriented environments.</p><p>The first lesson the guardian teaches us is simple, but often underestimated:<br><strong>ignoring a mechanism does not make it harmless.</strong></p><p>AdminSDHolder continues to do exactly what it was designed to do, enforcing security rules meant to protect the foundations of Active Directory &#8212; even when, on top of those foundations, we build automation, cloud integrations, and &#8220;modern&#8221; processes.</p><p>The second lesson is that <strong>doing things correctly is not always enough</strong> if there is no awareness of what happens underneath.</p><p>In the cases we&#8217;ve seen, there were no improvised configurations or neglected environments.<br>There were planned migrations, least&#8209;privilege principles, Just&#8209;In&#8209;Time administration, and solutions designed according to current security standards.</p><p>And yet, without understanding the persistent effects of AdminSDHolder, even correct choices produced unexpected results.</p><p>The guardian also teaches us that <strong>legacy in systems is not always visible</strong>, but sooner or later, it comes back to collect its due.</p><p>Users who once belonged to privileged groups, attributes like <code>adminCount</code> that were never reset, broken permission inheritance &#8212; these are elements that can remain latent for years, until a new project, a new integration, or a new security requirement suddenly brings them to light.</p><p>When that happens, the problem does not manifest as a clear error, but as a &#8220;strange&#8221; behavior that is difficult to interpret, hard to diagnose, and often far more expensive to fix than expected.</p><p>Finally, there is a broader design lesson: <strong>in hybrid environments, complexity is not an exception &#8212; it is the norm.</strong></p><p>Cloud and on&#8209;premises are not separate worlds, but parts of the same system.<br>Rules from the past continue to influence the present, and designing modern solutions without knowing them simply means pushing problems further down the road.</p><p>It is precisely from this awareness that <em><strong>Legacy Things</strong></em> was born.</p><p>AdminSDHolder is not an isolated case, but only the first of many &#8220;old gears&#8221; that continue to operate beneath the surface of today&#8217;s infrastructures.<br>In the next chapters, we will explore other legacy mechanisms &#8212; other design choices from the past that still shape how we build, protect, and evolve our systems today.</p><p>And to you, who made it all the way to the end of this first chapter, I ask:</p><p><strong>which hidden mechanisms would you like to see brought into the light next?</strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.legacythings.it/subscribe?&quot;,&quot;text&quot;:&quot;Iscriviti&quot;,&quot;language&quot;:&quot;it&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Grazie per aver letto Legacy Things! Iscriviti gratuitamente per ricevere nuovi post e supportare il mio lavoro.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digita la tua email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Iscriviti"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Perché Legacy Things]]></title><description><![CDATA[Le radici del progetto]]></description><link>https://www.legacythings.it/p/perche-legacy-things</link><guid isPermaLink="false">https://www.legacythings.it/p/perche-legacy-things</guid><dc:creator><![CDATA[Marco Lelli]]></dc:creator><pubDate>Sun, 01 Mar 2026 09:35:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!sO_L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc39d4dc6-6d70-4a35-a405-f311f0fbb502_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>English version available here &#8594;<a href="https://legacythings.substack.com/publish/post/189152381"> [EN]</a></em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sO_L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc39d4dc6-6d70-4a35-a405-f311f0fbb502_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sO_L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc39d4dc6-6d70-4a35-a405-f311f0fbb502_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!sO_L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc39d4dc6-6d70-4a35-a405-f311f0fbb502_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!sO_L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc39d4dc6-6d70-4a35-a405-f311f0fbb502_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!sO_L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc39d4dc6-6d70-4a35-a405-f311f0fbb502_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sO_L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc39d4dc6-6d70-4a35-a405-f311f0fbb502_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c39d4dc6-6d70-4a35-a405-f311f0fbb502_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1506581,&quot;alt&quot;:&quot;Illustrazione che mostra tecnologie IT moderne in superficie e sistemi legacy come radici sottostanti, simbolo del progetto Legacy Things.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/189150877?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc39d4dc6-6d70-4a35-a405-f311f0fbb502_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Illustrazione che mostra tecnologie IT moderne in superficie e sistemi legacy come radici sottostanti, simbolo del progetto Legacy Things." title="Illustrazione che mostra tecnologie IT moderne in superficie e sistemi legacy come radici sottostanti, simbolo del progetto Legacy Things." srcset="https://substackcdn.com/image/fetch/$s_!sO_L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc39d4dc6-6d70-4a35-a405-f311f0fbb502_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!sO_L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc39d4dc6-6d70-4a35-a405-f311f0fbb502_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!sO_L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc39d4dc6-6d70-4a35-a405-f311f0fbb502_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!sO_L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc39d4dc6-6d70-4a35-a405-f311f0fbb502_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Osservando ci&#242; che accade nelle moderne infrastrutture IT, mi capita sempre pi&#249; spesso di imbattermi in malfunzionamenti o inefficienze che non nascono da bug di sistema o errori di progettazione, ma da qualcosa di molto pi&#249; semplice: <strong>un gap di conoscenza</strong>.</p><p>I nuovi custodi delle infrastrutture enterprise sono cresciuti in un contesto dinamico, dove il cloud &#232; il minimo sindacale e i sistemi si parlano tramite API o protocolli moderni. Sono estremamente competenti quando si parla di app, federazioni, container, AI.<br>Spesso per&#242; non hanno mai avuto l&#8217;opportunit&#224; di approfondire davvero le fondamenta on-premise che ancora reggono tutto e quando ci devono mettere le mani improvvisano o si affidano alle dubbie risposte dell&#8217;AI.</p><p>Meccanismi che per chi ha iniziato tra Windows 2000 e le prime foreste Active Directory sono familiari, oggi diventano enigmi a volte incomprensibili.<br>Ma non hanno colpe, stanno semplicemente vivendo un&#8217;epoca dove i temi on-premise sono stati &#8220;messi in soffitta&#8221;, perch&#233; nel tempo hanno perso di interesse e quindi di essere divulgati.</p><p>Sono argomenti che non generano pi&#249; nuovo business, non vengono presentati ad un keynote, non fanno marketing. Restano l&#236;, latenti, nell&#8217;ombra di tecnologie pi&#249; interessanti che sono il cuore pulsante degli articoli tecnici e degli eventi IT.</p><p>Eppure, nonostante siano da molti &#8220;dichiarate morte&#8221;, queste tecnologie resistono ai decenni e restano operative, come dei soldati fedeli a cui nessuno ha detto che la guerra &#232; finita.</p><p>Tutto questo porta per&#242; ad effetti domino inevitabili: una configurazione errata nelle fondamenta di Active Directory pu&#242; produrre conseguenze a cascata sui sistemi di autenticazione cloud (Entra ID) o sull&#8217;accesso a piattaforme SaaS.</p><p>La cosa interessante che noto &#232; per&#242; che, quando questi temi vengono spiegati, l&#8217;interesse &#232; altissimo. Il problema non &#232; la mancanza di curiosit&#224;, &#232; la mancanza di esposizione.</p><p>&#200; da questa osservazione che nasce questo piccolo progetto: <strong>Legacy Things</strong>.<br>Una serie di articoli per esplorare quei meccanismi progettati venti e passa anni fa che continuano a influenzare le infrastrutture di oggi, sperando cos&#236; di poter colmare almeno un poco questo gap di conoscenza.</p><p>Nel primo capitolo partiremo da uno di quei meccanismi silenziosi che, di recente, ha dimostrato sul campo quanto il passato sia ancora profondamente intrecciato con il presente.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.legacythings.it/subscribe?&quot;,&quot;text&quot;:&quot;Iscriviti&quot;,&quot;language&quot;:&quot;it&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Grazie per aver letto Legacy Things! Iscriviti gratuitamente per ricevere nuovi post e supportare il mio lavoro.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digita la tua email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Iscriviti"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Why Legacy Things]]></title><description><![CDATA[The roots of the project]]></description><link>https://www.legacythings.it/p/why-legacy-things</link><guid isPermaLink="false">https://www.legacythings.it/p/why-legacy-things</guid><dc:creator><![CDATA[Marco Lelli]]></dc:creator><pubDate>Sun, 01 Mar 2026 09:30:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!X1mS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe504c28b-2207-4a23-bb18-5b5e0449725c_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Versione italiana disponibile qui &#8594;</em> [<a href="https://legacythings.substack.com/publish/post/189150877">IT</a>]</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!X1mS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe504c28b-2207-4a23-bb18-5b5e0449725c_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X1mS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe504c28b-2207-4a23-bb18-5b5e0449725c_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!X1mS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe504c28b-2207-4a23-bb18-5b5e0449725c_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!X1mS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe504c28b-2207-4a23-bb18-5b5e0449725c_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!X1mS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe504c28b-2207-4a23-bb18-5b5e0449725c_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X1mS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe504c28b-2207-4a23-bb18-5b5e0449725c_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e504c28b-2207-4a23-bb18-5b5e0449725c_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1506581,&quot;alt&quot;:&quot;Illustration showing modern IT technologies above and legacy systems as roots below, representing the Legacy Things project.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.legacythings.it/i/189152381?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe504c28b-2207-4a23-bb18-5b5e0449725c_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Illustration showing modern IT technologies above and legacy systems as roots below, representing the Legacy Things project." title="Illustration showing modern IT technologies above and legacy systems as roots below, representing the Legacy Things project." srcset="https://substackcdn.com/image/fetch/$s_!X1mS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe504c28b-2207-4a23-bb18-5b5e0449725c_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!X1mS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe504c28b-2207-4a23-bb18-5b5e0449725c_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!X1mS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe504c28b-2207-4a23-bb18-5b5e0449725c_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!X1mS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe504c28b-2207-4a23-bb18-5b5e0449725c_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>While observing what happens in modern IT infrastructures, I increasingly find myself dealing with malfunctions and inefficiencies that are not caused by bugs or design flaws, but by something much simpler: a <strong>knowledge gap</strong>.</p><p>The new custodians of enterprise infrastructures have grown up in a dynamic environment, where the cloud is the baseline and systems communicate through APIs and modern protocols.<br>They are highly skilled when it comes to applications, federations, containers, and AI.</p><p>Yet many of them have never had the opportunity to truly understand the on&#8209;premise foundations that still hold everything together. And when they are forced to interact with them, they often improvise or rely on questionable answers from AI tools.</p><p>Mechanisms that were familiar to those who started their careers with Windows 2000 and the first Active Directory forests have now become puzzling, sometimes incomprehensible.</p><p>This is not their fault.<br>They are simply operating in a time when on&#8209;premise topics have been pushed aside, having lost visibility, interest, and therefore proper documentation and discussion.</p><p>These are not topics that generate new business.<br>They are not showcased in keynotes.<br>They do not drive marketing narratives.</p><p>They remain there, latent, in the shadow of more appealing technologies that dominate technical articles and IT events.</p><p>And yet, despite being declared &#8220;dead&#8221; by many, these technologies have endured for decades and continue to operate &#8212; like loyal soldiers who were never told the war was over.</p><p>This inevitably leads to cascading effects: a misconfiguration in the foundations of a system can ripple through cloud authentication services or access to SaaS platforms.</p><p>What I find most interesting is that, when these topics are properly explained, <strong>interest is always high</strong>.<br>The problem is not a lack of curiosity &#8212; it is a lack of exposure.</p><p>It is from this observation that <strong>Legacy Things</strong> was born:<br>a series of articles aimed at exploring mechanisms designed more than twenty years ago that still influence today&#8217;s infrastructures, with the hope of closing at least part of this knowledge gap.</p><p>In the first chapter, we&#8217;ll start from one of those silent mechanisms that has recently shown, in real&#8209;world scenarios, just how deeply the past is still intertwined with the present.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.legacythings.it/subscribe?&quot;,&quot;text&quot;:&quot;Iscriviti&quot;,&quot;language&quot;:&quot;it&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Grazie per aver letto Legacy Things! Iscriviti gratuitamente per ricevere nuovi post e supportare il mio lavoro.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digita la tua email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Iscriviti"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>