答案 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样式的授权。应该应用一个 - 一个或另一个但不是两个。