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 NLB
schema 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

<?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 machineKey
IIS machineKey
premendo Generate Key e poi Apply:
IIS generate machineKey
IIS generate machineKey


Vedi anche: How To: Configure MachineKey in ASP.NET 2.0
Tags:
Active Directory20 ADFS5 ASP.NET54 IIS28 Web13 Web service16
Potrebbe interessarti anche: