Come impostare il machinekey in una Farm bilanciata
Quando si gestiscono più siti web e servizi web bilanciati (NLB = Network Load Balancer) su più macchine di front-end di una Farm, torna utile sincronizzare il machineKey degli applicativi ASP.NET tra le varie macchine.
Questo sopratutto se il bilanciatore non è in grado di mantenere l'affinità per IP chiamante e si utilizza, come metodo di login, il single sing-on su ADFS.
Il machineKey è mantenuto a livello di macchina ma è possibile impostarlo in modo indipendente su ogni sito web tramite il web.config locale al sito:
la stessa impostazione va allineata nel web.config del sito in tutti i server che fanno capo al bilanciatore.
I valori di machineKey possono essere generati tramite la console di IIS:premendo Generate Key e poi Apply:
Vedi anche: How To: Configure MachineKey in ASP.NET 2.0
Questo sopratutto se il bilanciatore non è in grado di mantenere l'affinità per IP chiamante e si utilizza, come metodo di login, il single sing-on su ADFS.
Il bilanciatore o NLB può essere sia hardware che software, ma potrebbe essere anche un proxy server che smista il traffico di rete ad esempio in Round-robin o altro algoritmo.
Il machineKey è mantenuto a livello di macchina ma è possibile impostarlo in modo indipendente su ogni sito web tramite il web.config locale al sito:
XML
<?xml version="1.0"?>
<configuration>
<system.web>
<machineKey
validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"
decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F"
validation="SHA1"
decryption="AES"
/>
</system.web>
<configuration>
Il machineKey viene usato dal framework ogni qual volta si deve creare una comunicazione cifrata.
Questo vuol dire che durante la fase di login ad ADFS se, ad esempio, la prima chiamata arriva, tramite il bilanciatore, sul server1 questo rispondera con un redirect (302) ad ADFS. Una volta autenticato ADFS farà un redirect sull'indirizzo bilanciato, ma questa volta il bilanciatore lo indirizza sul server2, se il machineKey è diverso il server2 non riuscirà a leggere il token di autenticazione in quanto originato dal server1.
Questo vuol dire che durante la fase di login ad ADFS se, ad esempio, la prima chiamata arriva, tramite il bilanciatore, sul server1 questo rispondera con un redirect (302) ad ADFS. Una volta autenticato ADFS farà un redirect sull'indirizzo bilanciato, ma questa volta il bilanciatore lo indirizza sul server2, se il machineKey è diverso il server2 non riuscirà a leggere il token di autenticazione in quanto originato dal server1.
I valori di machineKey possono essere generati tramite la console di IIS:premendo Generate Key e poi Apply:
Vedi anche: How To: Configure MachineKey in ASP.NET 2.0