我的OAuth请求签名不同于我的服务提供商的签名
我正在开发使用OAuth1.0a for iPad的应用程序。我的OAuth请求签名不同于我的服务提供商的签名
我的问题是,我无法得到我的request_token请求的正确签名。 我想要连接的服务有一个调试工具,可以根据您的OAuth参数检查您应该拥有的签名。
结果是:
我得到正确的签名基本代码
我得到不同的签名
根据我的OAuth的理解,这意味着:
我的签名算法被窃听(HMAC-SHA1)(但我从第三方获得它:https://github.com/jdg/oauthconsumer/tree/master/Crytpo/)
服务提供者是错误的
有没有什么免费的工具,可能在线,可以从签名的基本代码和密钥中构建一个签名来检查谁是正确的和谁是错的?
感谢您的帮助
我已经知道我的问题是什么,我的消费者密钥包含特殊字符('+'和'='),并且使用这些字符时,来自我的提供者和OAuth iOS框架的签名是不同的。
我试着看看RFC来试图确定谁是对的,但无法做出决定。所以我只是想尝试破解OAuth代码以使其与我的提供商合作。一旦我找到它,我将在这个页面上分享这个技巧。
所以,要知道特殊字符编码可能会非常棘手,如果您对如何编码特殊字符以签署您的签名库有意见,请随时分享。
这是不太可能的问题,而是尝试使用内置的HMAC方法iOS的生成您的SHA:
更重要的可能是你的签名基本字符串其实是错误的。您是否确认您的基本字符串符合规范?有一个良好的互动工具,您可以在这里查看您的要求:
http://hueniverse.com/2008/10/beginners-guide-to-oauth-part-iv-signing-requests/
感谢您的有用链接! – 2011-01-21 10:23:26
为什么不直接使用所有的OAuthConsumer
而不仅仅是HMAC-SHA1组件?它使用良好,测试良好的代码被用于许多不同的应用程序。我会说OAuthConsumer
是“已知的好”。
您的服务提供商似乎不太可能会出错(除非您是唯一的客户)。
这留下了你如何使用加密代码。
,我已经看到了Oauth签名的常见问题:
- 没有排序参数
- 错过了看似不重要的参数
- 不是从基础URL分离参数
- 使用错误HTTP方法
- 重定向或别名。你连接到server.com,但远端认为自己是api.server。com
您可以做的另一件事是使用相同的客户端代码来连接另一个OAuth服务,例如Twitter。如果您的代码可靠地为Twitter生成正确的签名,那么它很可能会为其他服务做正确的事情。这可能(可能)意味着问题是,如您所建议的,与您的服务。我说“很可能”,因为每个OAuth实现似乎都有自己的怪癖。
感谢您的回复。我实际上使用了整个OAuthConsumer。但我知道服务提供商在OAuth方面是相当新颖的,但没有简单的方法与他们联系解决技术问题,也无法联系其他开发人员。这就是为什么我倾向于认为问题可能与服务提供商有关。我会仔细检查列出的常见问题清单,但我认为一切都对我有好处。 – 2010-11-18 14:56:41
@Dirty Henry刚想到另外几条建议,并与他们一起编辑了我的答案。 – 2010-11-18 17:07:14
@Henry你好,你能否给我提供一些示例来实现我的iOS应用程序的RightSignature api。 – iDeveloper 2014-10-21 12:33:37