【问题标题】:using DotNetOpenAuth to verify a JavaScript OAuthSimple querystring使用 DotNetOpenAuth 验证 JavaScript OAuthSimple 查询字符串
【发布时间】:2011-08-13 05:29:58
【问题描述】:

我正在开发一个项目,该项目将使用 HTTPS 和内部应用程序在 JavaScript 中生成 OAuth 查询字符串,因此目前安全性不是主要问题(我想我会在前面提到)

JavaScript 查询字符串用于调用不同服务器和域上的 C# 脚本,本质上是将数据从内部应用程序传递到 C# 应用程序,并允许验证 a) 查询来自正确的源,并且 b ) 查询有效且未过期等。

OAuthSimple 给了我一个这样的签名 URL: http://www.myremotesite.com/mycodepath/mycodefile.aspx?firstname=Kevin&lastname=Blount&oauth_consumer_key=ThisIsTheConsumerKey&oauth_nonce=nuOoM&oauth_signature=DAoaSxD5SvVFTTDNSxiTbANzGlc%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1313162452

我的问题是,C# 方面的一个方面.. 我接下来要做什么?我有两个想法,但我不知道我需要探索哪个:

  1. 使用 C# 生成新的签名 URL 并比较两者(或仅比较 oauth_signature 值)
  2. 获取查询字符串并以某种方式对其进行解密/解码并进行验证。

有人告诉我 DotNetOpenAuth 是使用的标准,但我不知道下一步如何使用它。

我可以就我需要研究的内容获得一些建议,或者获得一些解释我应该如何进行的文章吗?

【问题讨论】:

    标签: oauth dotnetopenauth


    【解决方案1】:

    阅读有关 DotNetOpenAuth 的说明并确保您理解它。我以前没用过,但听说过它的好东西。

    oAuth 服务器会执行几个步骤:

    1. 验证版本 - 客户端是否使用正确的 oAuth 版本供您处理
    2. 验证时间戳 - 所有时间戳都必须采用 UTC 以避免时区问题
    3. 验证 Nonce - 是否使用过之前允许的时间范围
    4. 验证签名 - 从消费者密钥中获取私钥,使用参数中传递的值计算签名并与实际签名进行比较。
    5. 一旦消息通过所有检查,服务器将返回消息请求的资源

    【讨论】:

    • 嗨,马克 - 感谢您的回复。我已经阅读了 DNOA 网站,但不明白,这就是为什么我要发布我的问题;)我在网站上没有找到任何说明,也许你可以指导我去找他们?我尝试在网站上搜索“oauth”和其他关键字,但没有找到任何解释我需要做什么来验证我的 OAuthSimple (JavaScript) URL 是否有效。你的步骤很有意义,但前提是我能理解 DNOA 如何帮助我做到这一点。使用来自 OAuth.net 的 OAuthBase.cs 有点工作,但我无法获得准确的验证。
    • 您是否查看过用于 DotNetOpenAuth 的 Service Provider Sample Code。在 Samples/OAuthServiceProvider 下查看。这是一个 OAuth 服务器的实现,应该可以帮助您开始。很抱歉没有提供更多帮助,但我之前没有使用过该代码。
    • 再次感谢您的回复,马克。我决定不使用 DotNetOpenAuth,并坚持使用来自 oauth.net 的 OAuthBase.cs 类,JavaScript OAuth 库也来自该类。我认为使用来自同一来源的 JavaScript 和 C# 代码(在我的情况下)比试图找出 DNOA 更有意义。不过,我将您的初始回复标记为答案,因为无论我使用哪个 C# OAuth 库,验证步骤都非常有用。干杯!
    猜你喜欢
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    相关资源
    最近更新 更多