Проблемы с полями заголовка в модуле HMAC Django Rest Framework? - PullRequest
0 голосов
/ 17 октября 2018

Итак, я пытался использовать модуль djangorestframework-hmac (https://github.com/aaronlelevier/django-rest-framework-hmac) для защиты REST API с помощью HMAC. Но я сталкиваюсь с тем, что может показаться фундаментальной проблемой с ним: как сВ большинстве схем HMAC клиенту необходимо поместить подпись сообщения в поле заголовка с именем «Подпись», но проблема в том, что имена полей заголовка переводятся Django («Подпись» становится «HTTP_SIGNATURE»).
Но я вижув коде для django-restframework-hmac, что сервер ищет поле заголовка с именем «Подпись». Теперь модуль поставляется с примером, который работает, но в примере, клиент работает Django, который, я думаю, может как-тобыть обходом проблемы перевода полей заголовков. Но что, если клиент не использует django? Как клиент может получить поля заголовка, видимые сервером? Есть ли что-то, что я здесь упускаю из-закак django использует имена полей заголовков?

Просто чтобы быть точным, вот такой запрос ясоздание для проверки на стороне клиента:

headers = {'Key': api_key, 'Signature': sig, 'Timestamp': t}
DJANGO_URL = '127.0.0.1:8000/testrest/'
r = requests.get(DJANGO_URL, headers=headers)

Но на стороне сервера django, если я распечатываю словарь request.META, ключ, соответствующий каждому из моих полей заголовка, изменяется ('Signature' ->«HTTP_SIGNATURE» и т. Д.).Тем не менее, код django HMAC ищет поле с именем 'Signature' в запросе. META.Такое поведение присутствует даже в Django doc .

Мне просто интересно, если это ошибка в библиотеке django hmac, или я не отправляю свой запрос должным образом или что-то.

1 Ответ

0 голосов
/ 18 октября 2018

Это похоже на ошибку в djangorestframework-hmac. Кто-то создал идентичную проблему на github

https://github.com/aaronlelevier/django-rest-framework-hmac/issues/4

И я заметил, что тесты в этой библиотеке используют поддельные запросы, поэтому заголовок никогда не переписываетсяДжанго и баг остались незамеченными

https://github.com/aaronlelevier/django-rest-framework-hmac/blob/master/tests/test_authentication.py

...