我们有一个使用WIF和经典SessionSecurityTokenHandler
的ASP.NET MVC应用程序,这意味着使用DPAPI对WIF cookie进行签名。
我们希望将安全令牌处理程序切换到MachineKeySessionSecurityTokenHandler
,因为我们希望将应用程序扩展到Azure Web应用程序部署中的多个实例(Web场)。这意味着WIF cookie将使用机器密钥(在Web应用程序实例中共享)进行签名。
我们面临的问题是已经为应用程序初始化了cookie的用户。如果我们粗暴地更改令牌处理程序,由于CryptographicException
,这些用户将获得一个丑陋的HTTP 500页面,因为cookie签名无效。
有没有办法防止错误,而是丢弃过时的cookie,或让用户再次进行身份验证?
答案 0 :(得分:0)
好的,所以我们最终得到了解决此问题的方法。我们刚刚更改了cookie的名称,导致用户断开连接,并生成新的cookie。这是web.config的相关部分:
<configuration>
<system.identityModel.services>
<federationConfiguration>
<cookieHandler name="CookieName" />
</federationConfiguration>
</system.identityModel.services>
</configuration>