Difference between revisions of "Product key"
(Новая страница: «Начиная с версии 2.1.0 движок работает по API только с авторизированными клиентами. Авторизац…») |
(No difference)
|
Revision as of 13:38, 15 April 2013
Начиная с версии 2.1.0 движок работает по API только с авторизированными клиентами. Авторизация выполняется на этапе рукопожатия. Для успешной авторизации у клиента должен быть ключ продукта. Ключ продукта можно получить бесплатно, заполнив форму здесь
Авторизация клиента
- клиент отсылает сообщение
HELLOBG version=api_version
- движок отсылает в ответ
HELLOTS version=engine_version key=request_key
- клиент формирует ответный ключ и отсылает его движку
READY key=response_key
Если авторизация прошла нормально, то движок продолжит работу с клиентом, отослав событие AUTH (уровень авторизации пользователя).
Если авторизация не прошла, движок отправит клиенту событие NOTREADY. Это же событие будет отправляться в ответ на любые команды от неавторизированного клиента, кроме команд HELLOBG, READY и SHUTDOWN.
- request_key
- представляет собой буквенно-цифровую строку, сгенерированную случайным образом
- response_key
- формируется из request_key и ключа продукта по следующему алгоритму, представленного в виде псевдокода:
signature = hex(sha1(request_key + product_key)); // сгенерировать подпись запроса x = product_key.split("-")[0]; // вырезаем все символы до первого знака "-" из ключа продукта response_key = x + "-" + signature; // отправляем движку вырезанную на предыдущем этапе строку и подпись, разделенные знаком "-"
Пример
Для примера предположим, что клиент использует ключ продукта 123456-111111-222222-333333
Подпись для response_key в данном примере формируется так: hex(sha1("5eb1f78f123456-111111-222222-333333")) == fd2a247d83adffed56d82cca150d5fab225f1408
>>HELLOBG version=4 <<HELLOTS version=2.1.0 key=5eb1f78f >>READY key=123456-fd2a247d83adffed56d82cca150d5fab225f1408 <<AUTH 1