eve framework и авторизация HMAC

Я вычисляю HMAC запроса тела HTTP следующим образом:

payload = {"name":"myvm","os":"gentoo","resources":{"vCPU":"4","RAM":"512","Disk":"1000"},"actions":["start"]}

key = "supersecretkey"
secret = bytes(key, encoding='utf-8')

msg = json.dumps(payload, sort_keys=True)
message = bytes(msg, encoding='utf-8')

print(hmac.new(secret, message, sha1).hexdigest())

После этого я кодирую шестнадцатеричный дайджест с помощью b64 и отправляю его с помощью curl, как говорится в документации. Authorization: paolo:$hmac_base64_encoded
Проблема в том, что я всегда получаю ошибку 500.
Что я делаю не так?


person polslinux    schedule 27.10.2014    source источник
comment
Можете ли вы опубликовать точный запрос на завивку, который вы используете?   -  person Nicola Iarocci    schedule 27.10.2014
comment
Я попробовал ваш запрос на 0.5-dev с ванильным классом Auth, и он возвращает 422 (в основном ошибка проверки), что нормально, поскольку у меня нет под рукой вашей схемы ресурсов. Если вы можете отредактировать сообщение выше и добавить код для своего класса Auth и, возможно, схему ресурса, это очень поможет в рассмотрении проблемы.   -  person Nicola Iarocci    schedule 27.10.2014
comment
@NicolaIarocci Я использую Python 3.3.5, и я получаю интересную ошибку в режиме отладки, в которой говорится, что hmac ожидает байтов, а не str. Может ли это быть проблемой? PS: я использую Eve-0.5 с github.   -  person polslinux    schedule 27.10.2014


Ответы (1)


Поскольку вы используете Python 3x, убедитесь, что в вашем пользовательском HMACAuth вы конвертируете в байты (фрагмент кода из официальной документации предназначен для Python 2x).

person Nicola Iarocci    schedule 28.10.2014