相关疑难解决方法(0)

OAuth 问题,POST 带参数

我正在使用 Jon Crosby 的开源 Objective-C OAuth 库http://code.google.com/p/oauthconsumer/进行一些基本的 http 身份验证,它不处理令牌,只处理消费者密钥和消费者秘密。我的代码非常适用于 GET、带有 URL 参数的 GET 和 POST。但是,当我发出在 URL 中有参数的 POST 请求时,该请求授权失败。我试图找出原因。

服务器正在使用 Apache Commons OAuth,因此我想将我的基本字符串与该库进行比较。这是一个人为的示例以及我的库生成的基本字符串和签名。任何人都可以看到问题是什么?

consumer key:    abcdef
consumer secret: ghijkl
POST request:    http://emptyrandomhost.com/a/uriwith/params?interesting=foo&prolific=bar
my base string:  POST&http%3A%2F%2Femptyrandomhost.com%2Fa%2Furiwith%2Fparams&interesting%3Dfoo%26oauth_consumer_key%3Dabcdef%26oauth_nonce%3D1%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D2%26oauth_version%3D1.0%26prolific%3Dbar
Run Code Online (Sandbox Code Playgroud)

此数据生成以下 OAuth 标头授权:

Authorization: OAuth oauth_consumer_key="abcdef", 
                     oauth_version="1.0", 
                     oauth_signature_method="HMAC-SHA1", 
                     oauth_timestamp="2", 
                     oauth_nonce="1", 
                     oauth_signature="Z0PVIz5Lo4eB7aZFT8FE3%2FFlbz0%3D"
Run Code Online (Sandbox Code Playgroud)

显然我的签名是错误的。问题要么出在基本字符串的构造中,要么出在 HMAC-SHA1 函数的实现方式中(使用来自 CommonHMAC.h 的 Apple 的 CCHmac,所以希望不是这样),或者出在我的 Base64Transcoder 上,它是开源 C. 2003 年,Jonathan Wight/Toxic Software。我主要怀疑基本字符串,因为请求适用于 GET 和 POST,并且只有在使用上述 URL 参数的 POST 时才会失败。

有很多 OAuth 经验的人能发现上面的问题吗?其他非常有用的是 Apache Commons OAuth 在其身份验证中生成的基本字符串。谢谢。

iphone authentication encryption oauth objective-c

4
推荐指数
1
解决办法
6298
查看次数

标签 统计

authentication ×1

encryption ×1

iphone ×1

oauth ×1

objective-c ×1