DotNetOpenAuth:此消息已被处理。这可能表示正在进行重播攻击

时间:2011-04-03 00:23:37

标签: c# dotnetopenauth

2 个答案:

答案 0 :(得分:1)

我找到了根本问题。 OAuthAuthenticationModule 也在处理请求。更新 IsOAuthControllerRequest 函数修复了它。我不确定这是否是一个正确的解决方案,但此时我正在继续。我不确定这只是大自然还是OAuth,还是它的DotNetOpenAuth本身,但我多年来一直对编程感到沮丧。

private bool IsOAuthControllerRequest()
{
    return string.Equals(this.application.Context.Request.Url.AbsolutePath, "/OAuth.ashx", StringComparison.OrdinalIgnoreCase)
        || this.application.Context.Request.Url.AbsolutePath.ToLower().StartsWith("/api/");
}

答案 1 :(得分:0)

项目模板附带的OAuthAuthenticationModule已经“消耗”OAuth授权请求中包含的随机数。当您的OAuthAuthorizationManager也被应用时,它会尝试再次使用该随机数,因此被检测为重放攻击。第一个模块在ASP.NET级别授权任何传入的HTTP请求,而第二个模块专门授权传入的WCF请求(在ASP.NET验证之上),以便应用WCF样式的授权。应该应用一个 - 一个或另一个但不是两个。