ASP.NET WIF 更改安全令牌处理程序并避免 CryptographicException

ASP.NET WIF change security token handler and avoid CryptographicException

我们有一个 ASP.NET MVC 应用程序,它使用 WIF 和经典 SessionSecurityTokenHandler,这意味着 WIF cookie 是使用 DPAPI 签名的。

我们希望将安全令牌处理程序切换为 MachineKeySessionSecurityTokenHandler,因为我们希望将我们的应用程序扩展到 Azure Web 应用程序部署中的多个实例(Web 场)。这意味着 WIF cookie 将使用机器密钥(在网络应用程序实例之间共享)进行签名。

我们面临的问题是用户已经为应用程序初始化了 cookie。如果我们粗暴地更改令牌处理程序,这些用户将得到一个丑陋的 HTTP 500 页面,由于 CryptographicException 因为 cookie 签名无效。

有没有办法防止错误发生,而是丢弃过时的 cookie,或者让用户重新进行身份验证?

好的,所以我们最终找到了解决此问题的方法。我们只是更改了 cookie 的名称,导致用户断开连接,并生成了一个新的 cookie。这是 web.config:

的相关部分
<configuration>
    <system.identityModel.services>
        <federationConfiguration>
            <cookieHandler name="CookieName" />
        </federationConfiguration>
    </system.identityModel.services>
</configuration>