【问题标题】:DotNetOpenAuth oAuth2 Message already been processedDotNetOpenAuth oAuth2 消息已被处理
【发布时间】:2013-07-05 19:20:49
【问题描述】:

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

所以经过大量测试后,我在某个时候卡住了。

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

我的应用要求提供代码。服务器显示登录页面。我登录。然后它询问我是否要授予对我的应用程序的访问权限。我说是的。

我的应用收到带有密码键的响应。所以我的应用程序向我的 oauth 请求令牌。当我的 oauth 执行该行时:

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

我收到错误消息“消息已处理。可能是重放攻击...” 所以我试着去理解发生了什么。我无法使用源代码,因为 git 上的版本不一样(未找到 icryptostore 接口,您会得到一个回调 url 列表,而不仅仅是一个,...)。 如果有人能准确地解释我发生了什么。从我读到的内容是因为它必须是第二个网络响应,但由于它是控制器的条目,我不知道我错过了什么。

希望我给了你足够的信息。

提前感谢您的帮助。

M.

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

【问题讨论】:

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


    【解决方案1】:

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

    您的项目中大概有一个INonceStore 实现。在StoreNonce 方法中设置断点,然后重现问题。您可能会看到 StoreNonce 方法有两次命中。您将能够观察两个调用的调用堆栈,以确定您要保留哪一个以及删除哪一个。

    【讨论】:

    • 告诉你我很愚蠢。这是一个数据库问题(列长度太短)......非常感谢,你告诉我寻找的正确方向。 (顺便说一句,完全超出了范围,你有下一个版本的 oauth2 部分的路线图吗?)
    • 不客气。 OAuth 2.0 规范似乎永远处于修订草案的持有模式。在规范最终确定之前,DotNetOpenAuth 不太可能发布更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 2012-08-29
    相关资源
    最近更新 更多