У меня возникли проблемы, порождающие «правильная» строка аутентификации для использования при отправки сообщения Pusher через завитокКак создать строку аутентификации Pusher из Bash?
Вот мой сценарий, секретные биты вырезанных конечно:
#!/bin/bash
key="my_key"
secret="my_secret"
appID="my_app_id"
timestamp=`date +%s`
data='{"name":"say_stuff","channel":"test","data":"{\"message\":\"oh_yeah\"}"}'
md5data=`echo "$data" | md5`
authSig=`echo 'POST\n/apps/"$appID"/events\nauth_key="$key"&auth_timestamp="$timestamp"&auth_version=1.0&body_md5="$md5data"' | openssl dgst -sha256 -hex -hmac "$secret"`
curl -H "Content-Type:application/json" -d "$data" "http://api.pusherapp.com/apps/$appID/events?body_md5=$md5data&auth_version=1.0&auth_key=$key&auth_timestamp=$timestamp&auth_signature=$authSig"
authSig конечно порождена, и выглядит как действительный HmacSHA256Hex
Однако, когда он запускает завиток команду, я получаю такой ответ:
Invalid signature: you should have sent HmacSHA256Hex("POST\n/apps/$appID/events\nauth_key=$key&auth_timestamp=1432086733&auth_version=1.0&body_md5=e5997a811232ffae050be74242254ceb", your_secret_key), but you sent "55029a5e2d1058b352b5c22709e7fb9cb0c6f147846ed09dbc6bcaf6a7a804c7"
Возможно ли, что утилита openssl на моей машине (Mac OS X 10.10) чем-то отличается от того, что у Pusher?
Вот что-то смешное, что я заметил сейчас. Если вы идете здесь:
https://pusher.com/docs/rest_api
и прокрутите вниз до «Практический пример аутентификации» вы будете в состоянии следовать вместе с примером.
Я попытался создания подписи, используя пример, запустив:
echo 'POST\n/apps/3/events\nauth_key=278d425bdf160c739803&auth_timestamp=1353088179&auth_version=1.0&body_md5=ec365a775a4cd0599faeb73354201b6f' | openssl dgst -sha256 -hex -hmac 7ad3773142a6692b25b8
и я получаю
aa368756587116f3997427fe1b315ed0e2f2faa555066e565a25cfe6f47c9396
в противоположность их примеру, что приводит к
da454824c97ba181a32ccc17a72625ba02771f50b50e1e7430e47a1f3f457e6c
Это может или не может быть причиной ваших проблем, но вы должны _double-quote_ все ссылки на переменные, чтобы защитить их от непреднамеренного расширений оболочки (интерпретацию оболочка); '' $ data "', а не '$ data',' "$ secret" 'вместо' $ secret', ... – mklement0
Пробовал, что же проблема ... –
Есть, добавьте двойные кавычки к своему вопросу, чтобы не создавать отвлекающие факторы. – mklement0