Я использую библиотеку Objective-C OAuth с открытым исходным кодом Джона Кросби http://code.google.com/p/oauthconsumer/ для некоторой базовой HTTP-аутентификации, которая не имеет дело с токенами, а только с ключом потребителя и секретом потребителя. Мой код отлично подходит для GET, GET с параметрами в URL-адресе и POST. Когда я выдаю запрос POST, который имеет параметры в URL-адресе, запрос отклоняет авторизацию. Я пытаюсь понять, почему.Проблема с OAuth, 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
Эти данные приводит следующее разрешение заголовка 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"
И, видимо, моя подпись не так. Проблема должна заключаться либо в построении базовой строки, как в том, что реализована функция HMAC-SHA1 (с использованием CCHmac от Apple из CommonHMAC.h, так что, надеюсь, это не так) или с моим Base64Transcoder, который с открытым исходным кодом c. 2003 Джонатан Уайт/Toxic Software. Я в первую очередь подозреваю базовую строку, поскольку запросы работают для GET и POST и только с ошибкой POST с параметрами URL, как указано выше.
Может ли кто-нибудь с большим опытом работы в OAuth выявить проблему выше? Что-то еще, что было бы очень полезно, это базовая строка, созданная Apache Commons OAuth при их аутентификации. Благодарю.
Попробуйте определить константы для этих ключей. Это поможет устранить опечатки и упростить изменение ключей в случае необходимости. – Moshe