DotNetOpenAuth oAuth2消息已被处理

时间:2011-10-10 14:35:02

标签: asp.net-mvc oauth-2.0 dotnetopenauth

我正在发现dotnetopenauth并尝试将其与oauth2 ctp版本一起使用。 我一定是傻瓜,但要让它为我工作非常复杂。

因此经过大量测试后我才陷入困境。

所以我的应用想要获得访问令牌。我的应用回调是http://localhost/myapp/accept.aspx?... 我的oauth服务器是http://localhost/oauth/

我的应用程序要求输入代码。服务器显示登录页面。我登录。然后它询问我是否想要访问我的应用程序。我说是的。

我的应用通过代码密钥获得回复。所以我的应用程序请求令牌给我的oauth。当我的oauth执行该行:

public ActionResult Token()
{
    var request = this.authorizationServer.ReadAccessTokenRequest();

我收到错误“邮件已经处理过。也许是重播攻击...” 所以我试着理解发生了什么。我无法使用源代码,因为git上的版本不一样(没有找到icryptostore接口,你得到一个回调网址列表而不仅仅是一个,...)。 如果有人能够解释我到底发生了什么。从我读到它是因为它必须是第二个web响应,但因为它是控制器的条目,我不知道我错过了什么。

希望我给你足够的信息。

提前感谢您的帮助。

微米。

编辑:我复制粘贴错误的操作调用。这是“令牌”功能。

1 个答案:

答案 0 :(得分:1)

您可能有两个地方正在尝试响应访问令牌请求。失败的那个将是第二个。您应该只有一个地方解析此请求以避免这种错误的“重播攻击”错误。

您可能在项目中实施了INonceStore。在StoreNonce方法中设置断点然后重新解决问题。您可能会看到StoreNonce方法的两次点击。您将能够观察两个调用的callstack,以确定要保留哪个以及要删除哪个。