WIF- ID1014:签名无效。 该数据可能已经被篡改(WIF- ID1014: The si

2019-07-29 14:13发布

我一直在使用WIF来验证我们的新网站,该STS是基于起动STS实现。

为了使这一对了负载均衡的环境中正常工作,我用在Global.asax覆盖默认证书的行为以下。

void onServiceConfigurationCreated(object sender, ServiceConfigurationCreatedEventArgs e)
        {
            List<CookieTransform> sessionTransforms = new List<CookieTransform>(new CookieTransform[] 
            { 
                new DeflateCookieTransform(), 
                new RsaEncryptionCookieTransform(e.ServiceConfiguration.ServiceCertificate),
                new RsaSignatureCookieTransform(e.ServiceConfiguration.ServiceCertificate)
            });

            SessionSecurityTokenHandler sessionHandler = new SessionSecurityTokenHandler(sessionTransforms.AsReadOnly());
            e.ServiceConfiguration.SecurityTokenHandlers.AddOrReplace(sessionHandler);
        }

这是所有工作只是觉得,人们已经成功地使用该系统,但每一个现在,然后我们得到的爆炸:

ID1014:签名无效。 该数据可能已经被篡改。

在事件日志中,所以我打开WIF跟踪,看到日志下面提到。

ID1074:一个CryptographicException发生试图加密使用ProtectedData API的cookie时(详情请参见内部异常)。 如果您使用的是IIS 7.5,这可能是由于在应用程序池loadUserProfile设置被设置为false。

我有一种感觉,这是导致我下一个黑暗的胡同,因为我以为,因为我改变了执行使用RSA这不应该影响到我。

任何想法,以帮助我吗?

Answer 1:

该浏览器的cookies进行加密,“老”机制 - DPAPI。 因此,当服务器尝试解密饼干,失败 - 你的代码中使用RSA现在,没有DPAPI。

作为一种变通方法,清除浏览器缓存,并预期该应用程序将开始运行。



Answer 2:

我改变修改超时在ontokencreated方法的实现。 这可以防止重发。

protected override void OnSessionSecurityTokenCreated(Microsoft.IdentityModel.Web.SessionSecurityTokenCreatedEventArgs args)
        {
            args.SessionToken = FederatedAuthentication.SessionAuthenticationModule.CreateSessionSecurityToken(
                args.SessionToken.ClaimsPrincipal,
                args.SessionToken.Context,
                DateTime.UtcNow,
                DateTime.UtcNow.AddDays(365),
                true
                );
            //base.OnSessionSecurityTokenCreated(args);
        }


Answer 3:

你有没有尝试设置loadUserProfile选项设置为true? 仍然出现问题吗?

(选择IIS应用程序池,然后单击右侧的“高级设置”,“加载用户配置文件”是“流程模型”一节)。



Answer 4:

你的错误,用DPAPI例外出现在您的痕迹补结合的间歇性发生的建议,我认为你实际上并没有覆盖cookie的转换和服务仍然使用DPAPI。

这可能是一个长镜头,但在你的代码片段,我注意到你的方法覆盖“onServiceConfigurationCreated”以小写位开始。 这样的错字确实会阻碍您正确覆盖默认WIF行为。



文章来源: WIF- ID1014: The signature is not valid. The data may have been tampered with