Проверка Shopify HMAC: разные результаты для одного и того же URL-адреса на локальном сервере и сервере AWSPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проверка Shopify HMAC: разные результаты для одного и того же URL-адреса на локальном сервере и сервере AWS

Сообщение Anonymous »

У меня возникла проблема с проверкой Shopify HMAC: одинаковые URL-адреса дают разные результаты на локальном и рабочем сервере.
Среда
Локальная: Сервер разработки Python/Django (проверка прошла успешно)
Производство: сервер AWS (проверка не удалась)
Секрет API: один и тот же секрет API Shopify в обеих средах
Примеры URL-адресов
Оба среды получают одинаковые URL-адреса:
Локальный (успешно):

Код: Выделить всё

https://local.test.com/api/install/?hmac=c1ffa63a47d4781b34dc820bcb96344d085d6b95ef642939b67c5b3f8f411b04&host=YWRtaW4uc2hvcGlmeS5jb20vc3RvcmUvYXBwaGVhbHRoY2hlY2s&shop=apphealthcheck.myshopify.com&timestamp=1731044050 [example URL]
Производство (сбой):

Код: Выделить всё

https://server.test.com/api/install/?hmac=c1ffa63a47d4781b34dc820bcb96344d085d6b95ef642939b67c5b3f8f411b04&host=YWRtaW4uc2hvcGlmeS5jb20vc3RvcmUvYXBwaGVhbHRoY2hlY2s&shop=apphealthcheck.myshopify.com&timestamp=1731044050 [example URL]
Журналы сервера

Код: Выделить всё

[08/Nov/2024 05:32:34] "GET /api/install/?hmac=2b9feb2de99f3199f5a3f798452d88fb9769184aca436d38cd2f09b4436f207d&host=YWRtaW4uc2hvcGlmeS5jb20vc3RvcmUvYXBwaGVhbHRoY2hlY2s&shop=apphealthcheck.myshopify.com&timestamp=1731043814 HTTP/1.1" 200 5
Validating hmac...
Query string: host=YWRtaW4uc2hvcGlmeS5jb20vc3RvcmUvYXBwaGVhbHRoY2hlY2s&shop=apphealthcheck.myshopify.com&timestamp=1731043931
HMAC received: 2b9feb2de99f3199f5a3f798452d88fb9769184aca436d38cd2f09b4436f207d
HMAC calculated: d16e72b71df76ed89c9cf8952e138d8b3712e9c8bf36e7b9f1656bc5c3657699

КОД ПРОВЕРКИ HMAC:

Код: Выделить всё

def validate_hmac(**kwargs):
print("Validating hmac...")
api_secret = getattr(settings, 'SHOPIFY_API_SECRET', '')
hmac_val = kwargs.pop('hmac')

# Create query string
query_string = "&".join([f"{k}={kwargs[k]}" for k in sorted(kwargs)])
print(f"Query string: {query_string}")
print(f"HMAC received: {hmac_val}")

# Calculate HMAC
hmac_calc = hmac.new(api_secret.encode('utf-8'),
query_string.encode('utf-8'),
hashlib.sha256).hexdigest()
print(f"HMAC calculated: {hmac_calc}")

return hmac_calc == hmac_val

  • Проверенные секреты API идентичны в обеих средах.
  • Подтверждено, что параметры идентичны.
  • Добавлено ведение журнала для отслеживания значений параметров.


Подробнее здесь: https://stackoverflow.com/questions/791 ... aws-server
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Python hmac и C# hmac
    Anonymous » » в форуме C#
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Python hmac и C# hmac
    Anonymous » » в форуме Python
    0 Ответы
    32 Просмотры
    Последнее сообщение Anonymous
  • Ключи HMAC в System.keys Collection и потоковая потока мониторинга ключей HMAC
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Ключи HMAC в System.keys Collection и потоковая потока мониторинга ключей HMAC
    Anonymous » » в форуме JAVA
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Ошибка проверки HMAC, Python – приложение Shopify
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»