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.
schema logico semplificato di un NLBschema logico semplificato di un NLB
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 version="1.0"?>
<configuration>
  <system.web>
      <machineKey
        validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"           
        decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F"
        validation="SHA1"
        decryption="AES"
      />
  </system.web>
<configuration>
la stessa impostazione va allineata nel web.config del sito in tutti i server che fanno capo al bilanciatore.
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.

I valori di machineKey possono essere generati tramite la console di IIS:
IIS machineKeyIIS machineKey
premendo Generate Key e poi Apply:
IIS generate machineKeyIIS generate machineKey


Vedi anche: How To: Configure MachineKey in ASP.NET 2.0