Страницы: 1
RSS
Power BI. Коннектор к API с секретным ключом и сигнатурой закодированной HMAC SHA256, Power BI. Connector for API with authentication by secret key and signature encoded by HMAC SHA256
 
Всем добра.
Потребовалось по работе лазить в API к одному из интернет-магазинов, и с радостью обнаружил что в #shared ничего вообще нет на тему кодирования хэша для формирования сигнатуры запроса к ресурсу. А вот у ресурса сигнатура имеется, и надо что-то делать. После некоторых изысканий выяснил что кое-что в PQ на эту тему все таки есть, но не в стандарте, а в наборе функций для создания собственных коннекторов. Засучив рукава, поставил VS с нужными надстройками и собрал вот такое чудо. Если кому надо, пользуйтесь, как подключить такой коннектор в инете и на сайте МС инструкций навалом. Краткую инструкцию по тому что куда скармливать самому коннектору чуть позже приложу, ну и по мере развития и исправлений выявленных глюков буду обновлять.
Коннектор протестирован на боевом API все отлично выгружается. При установке шлюза в стандартном режиме коннектор отлично работает и после публикации отчета в облаке.
Все инструкции по подключению коннекторов к Power BI находятся по ссылкам ниже. Справка по функции вшита в нее и вызывается стандартным способом, т.е. вызовом функции без скобок и аргументов.
https://github.com/PooHkrd/GetHMACwithCreds
https://github.com/PooHkrd/GetHashSHA256
В потоках данных пользовательские коннекторы не работают.
Изменено: PooHkrd - 16.11.2021 12:17:22
Вот горшок пустой, он предмет простой...
 
Итак, по просьбам трудящихся собрал ещё один коннектор, который на входе получает текстовую строку, а на выходе возвращает ее хэш при помощи алгоритма sha256. Использовать его очень легко:
положили в папку согласно инструкции. Запускаем pbi и находим его в разделе other.
Вызов осуществляется такой формулой
Код
=GetHashSHA256.Contents( "text" )

Пока от единственного пользователя поступил отзыв что запрос к api с полученным хэшем работает в редакторе запросов, но не пашет при попытке загрузить результат запроса в модель.
Если кто желает потестировать. Велкам. Архив прикреплен к стартовому сообщению.
Вот горшок пустой, он предмет простой...
 
Как и планировал выкладываю последний коннектор из нужных для подключения к API с хэшированием ключей через Power BI. Сам коннектор прикручен к стартовому сообщению. Сие творение используется для формирования HMAC (hash-based message authentication code) на основе двух аргументов, а именно текст запроса и ключа авторизации.
Для использования по инструкции из предыдущего поста кладем файл в нужную папку и наблюдаем новый коннектор в разделе others.
Для вызова функции используем код:
Код
= GetHMAC.Contents( "text", "key" )

На выходе получаем хэш созданный на базе этих двух аргументов. Далее скармливаем его вашему API согласно приведенной к нему документации.
Функция протестирована, на API Ламоды - работает отлично. В теории должна работать и в DataFlows, но пока не тестировал.
Да, перевыложил предыдущий коннектор, исправил в нем блок для прохождения проверки авторизации при настройке подключения через шлюз.
Всем добра.
Изменено: PooHkrd - 19.10.2021 17:59:22
Вот горшок пустой, он предмет простой...
 
Спасибо, добрый человек.

Буду тестировать, бо очень нужно.
 
Дмитрий Бабаев, обязательно прошу предоставить обратную связь. по результатам. Если что-то не будет работать в Desktop или в облаке - обращайтесь - помогу.
Вот горшок пустой, он предмет простой...
 
Долго возился сегодня с Binance - не проходит авторизация.

В конце концов подобрали через Node.js с разработчиками причину - у HMAC есть еще формат вывода, я подобрал нужный - hex.
.digest ('encoding: 'hex')

Если получится поправить или выдать опцией, будет вообще отдельно супер!
 
Дмитрий Бабаев, вы покажите для каких аргументов функции какой нужно получить вывод?
Ваши реальные запросы и ключи не нужны, любой текст. Если есть возможность показать с какими настройками вы это делаете в каком-либо онлайн-конвертере HMAC то покажите в нем.
Вот горшок пустой, он предмет простой...
 
Вот скриншот.

http://i.codeit.pro/dmytro.babayev/i/Skype_2021-10-26_11-44-01.png
 

Или нужен именно результат обработки HMAC?
Изменено: Дмитрий Бабаев - 26.10.2021 11:46:11
 
Цитата
Дмитрий Бабаев написал:
нужен именно результат обработки HMAC?
Да, он. Какие текстовые аргументы вы ему отдаете и что ожидаете получить.
Вот горшок пустой, он предмет простой...
 
Вот примеры из документации.
Скрытый текст

https://binance-docs.github.io/apidocs/spot/en/#signed-trade-user_data-and-margin-endpoint-security

Там есть еще пара со входом и выходом.
 
Дмитрий Бабаев, ок, сегодня вечером погляжу, завтра может чего получится.
Вот так попробуйте, у меня получилось вроде.
Скрытый текст

Крайне важно!
Чтобы все обновлялось в облаке при настройке подключений шлюза необходимо указать одинаковые уровни конфиденциальности для источников
GetHMAC и https://api.binance.com/api/v3/order. У меня установлен "Организационный". Все обновляется. Без этого валится в ошибку.
Также при настройке подключения к шлюзу установите галочку "Пропустить тестирование подключения". Я вроде сделал в коннекторе handler тестирования по инструкции, но почему то выдает сбой, но в десктопе и облаке при этом все работает.
И последнее, перевыложил коннектор в стартовом сообщении.
Изменено: PooHkrd - 27.10.2021 08:10:36
Вот горшок пустой, он предмет простой...
 
Спасибо, выдает правильно, но запрос все равно где-то у меня не проходит на сайте.
Побуквенно сравниваю с тем, что реально проходило - и не вижу отличий.

Какая-то мистика.
 
Дмитрий Бабаев, тут ХЗ не вы один жалуетесь, но тут, подозреваю, проблема не в коннекторе, а в ленивости языка. Один коллега жаловался, что АПИ ростелекома тоже не выдавал ответ, хотя коннектор выдает корректный хэш. На Ламоде у меня все отлично работает, тащит любые объемы. Как со старым коннектором, так и с новым. Сегодня вечером попробую ваш запрос запихать в свой самый первый коннектор.
Скиньте полный код вашего запроса к API в личку с кодами-примерами из инструкции по вашей ссылке.
Изменено: PooHkrd - 27.10.2021 12:44:22
Вот горшок пустой, он предмет простой...
 
Подозреваю, что какие-то параметры по умолчанию в запросе Power Query не проходят с определенными сайтами.

Потому что Postman например по скопированному тексту запроса результат выдает, а PQ по ровно тому же - нет. :(
 
Дмитрий Бабаев, в общем, либо высылайте запрос, либо я бессилен вам помочь.
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх