2016-04-06 25 views
1

Wir haben eine ASP.NET MVC-Anwendung, die WIF und die klassische SessionSecurityTokenHandler verwendet, was bedeutet, dass der WIF-Cookie mit DPAPI signiert ist.ASP.NET WIF Sicherheitstoken-Handler ändern und CryptographicException vermeiden

Wir möchten den Sicherheitstokenhandler auf MachineKeySessionSecurityTokenHandler umstellen, da wir unsere Anwendung in einer Azure-Webanwendung auf mehrere Instanzen (Webfarm) skalieren möchten. Dies bedeutet, dass der WIF-Cookie mit dem Maschinenschlüssel signiert wird (der über Web-App-Instanzen gemeinsam genutzt wird).

Das Problem, mit dem wir konfrontiert sind, ist mit Benutzern, die bereits ein Cookie für die Anwendung initialisiert haben. Wenn wir den Token-Handler brutal ändern, erhalten diese Benutzer aufgrund einer CryptographicException eine hässliche HTTP 500-Seite, weil die Cookie-Signatur ungültig ist.

Gibt es eine Möglichkeit, den Fehler zu vermeiden und stattdessen entweder den veralteten Cookie zu verwerfen oder den Benutzer erneut authentifizieren zu lassen?

Antwort

0

OK, also hatten wir am Ende eine Workaround für dieses Problem. Wir haben gerade den Namen des Cookies geändert, was dazu führt, dass die Benutzer getrennt werden und ein neuer Cookie generiert wird. Dies ist der relevante Teil von web.config:

<configuration> 
    <system.identityModel.services> 
     <federationConfiguration> 
      <cookieHandler name="CookieName" /> 
     </federationConfiguration> 
    </system.identityModel.services> 
</configuration>