Подпись HTTP-запросов


Авторизация с помощью секретного токена и подписи

При обращении к API Платформы через HTTP предпочтительным способом авторизации является секретный токен.

Создавать новые токены можно в разделе "Настройки" личного кабинета:

Для авторизации используется цифровая подпись, формирующаяся по следующему алгоритму: md5(params + token)
Где token — Ваш секретный токен, а params — конкатенация пар "имя=значение", отсортированных в алфавитном порядке по имени, где "имя" — это параметр запроса, а "значение" — его значение. В расчете учитываются все параметры запроса, кроме sign.

Например, если существует активный секретный токен 2LsWvGkYYOjyPw3GWbp5L, и в запросе участвуют следующие параметры:

Параметр Значение
login user
sender terasms.ru
target 71234567890
message hello

подпись должна быть сформирована следующим образом: md5("login=usermessage=hellosender=terasms.rutarget=712345678902LsWvGkYYOjyPw3GWbp5L")

https://auth.terasms.ru/outbox/send?login=user&sender=terasms.ru&target=71234567890&message=hello&sign=10bf3c359f70f3d38e8162beae1d6c87

При формировании запроса в форматах JSON и XML логика формирования подписи аналогична.

В случае если тело запроса имеет несколько уровней вложенности, т.е. значения параметров сами являются массивами или ассоциативными массивами, то имена (ключи) для таких параметров игнорируются, а из значения, которое является вложенным массивом, строка для конкатенации формируется по изначальному алгоритму (рекурсивно).


Примеры формирования подписи JSON-запроса

Запрос

> POST https://auth.terasms.ru/outbox/getstatus/json { "login": "user", "message_ids": [11222, 11223] }

Токен: 2LsWvGkYYOjyPw3GWbp5L
 

Формирование подписи: md5("login=user0=112221=112232LsWvGkYYOjyPw3GWbp5L") Обратите внимание, что имя параметра message_ids в формировании подписи не участвует.

Сформированный запрос:

> POST https://auth.terasms.ru/outbox/getstatus/json { "login": "user", "message_ids": [11222, 11223], "sign": "803cbc83bf0112e8d942909c18635d40" }

Запрос:

> POST https://auth.terasms.ru/outbox/msend_json { "login": "user", "smsPackage": [ { "target": 78002223344, "sender": "Info", "message": "foo" }, { "target": 78002223345, "sender": "Info", "message": "bar" } ] }

Токен: 2LsWvGkYYOjyPw3GWbp5L
 

Формирование подписи: md5("login=usermessage=foosender=Infotarget=78002223344message=barsender=Infotarget=780022233452LsWvGkYYOjyPw3GWbp5L") Обратите внимание, что имя параметра smsPackage в формировании подписи не участвует.

Сформированный запрос:

> POST https://auth.terasms.ru/outbox/msend_json { "login": "user", "smsPackage": [ { "target": 78002223344, "sender": "Info", "message": "foo" }, { "target": 78002223345, "sender": "Info", "message": "bar" } ], "sign": "4f94d78b216031eb6797bdd35f2daff1" }

Авторизация с помощью логина и пароля

При формировании запроса Вы также можете использовать Ваш логин и пароль на Платформе. Логин передаётся в виде параметра login, пароль — в виде параметра password.

Пример запроса: https://auth.terasms.ru/outbox/send?login=user&password=secret&sender=terasms.ru&target=71234567890&message=hello