Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
gui [2019/07/10 06:39] ilya |
gui [2019/07/10 08:24] (текущий) ilya |
||
---|---|---|---|
Строка 145: | Строка 145: | ||
|<xmlsign>|string|подпись пакета (подробнее см. Формирование подписи пакета); обязательный параметр| | |<xmlsign>|string|подпись пакета (подробнее см. Формирование подписи пакета); обязательный параметр| | ||
|<transaction>|---|внутри данного тэга находятся передаваемые с сервера данные; обязательный параметр| | |<transaction>|---|внутри данного тэга находятся передаваемые с сервера данные; обязательный параметр| | ||
+ | |||
+ | **Ошибка**\\ | ||
+ | В случае возникновения ошибки система должна вернуть пакет ошибки следующего вида | ||
+ | |||
+ | XML формат пакета | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | <response> | ||
+ | <xmlsign>MCwCFBDENIKYn964yX5Dkg+F7m1pMCJdAhQTRB3UaMZ8aYk1ID6tt5Kzd1J1Ag==</xmlsign> | ||
+ | <datetime>2014-01-20T11:00:43.929+0200</datetime> | ||
+ | <error> | ||
+ | <code>5</code> | ||
+ | <text>Wrong request data packet or a signature.</text> | ||
+ | </error> | ||
+ | </response> | ||
+ | JSON формат пакета | ||
+ | { | ||
+ | "response":{ | ||
+ | "datetime":"2014-01-20T11:00:43.845+0200", | ||
+ | "xmlsign":"MCwCFHN0CMsiMZg3xUnWMLMP5pZcl7DQAhRka2zvFsomqj8bRzJNRAOnF5+gFA==", | ||
+ | "error":{ | ||
+ | "code":5, | ||
+ | "text":"Wrong request data packet or a signature." | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ^Тэг/Параметр^Тип^Описание^ | ||
+ | |<response>|---|данный тэг говорит о том, что данные этого пакета относятся к ответам| | ||
+ | |<datetime>|date-time|дата и время создания ответа в формате yyyy-MM-dd'T'HH:mm:ss.SSSZ; обязательный параметр| | ||
+ | |<xmlsign>|string|подпись пакета (подробнее см. Формирование подписи пакета); обязательный параметр| | ||
+ | |<error>|---|внутри данного тэга находятся передаваемые с сервера данные (информация об ошибке); обязательный параметр| | ||
+ | |<code>|long|код ошибки в системе; обязательный параметр| | ||
+ | |<text>|string|текст ошибки| | ||
+ | ====== Формирование подписи пакета ====== | ||
+ | |||
+ | Каждый пакет должен быть подписан цифровой подписью с помощью алгоритма **RSA** с использованием алгоритма хеш-функций **SHA256**. Для этого формируется полный пакет с данными, которые будут передаваться. Внутрь тэга ''<xmlsign>'' помещаем пробел. Переводим строку в массив байтов используя кодировку **UTF-8** и рассчитываем подпись с применением скрытого ключа. Результат подписи кодируется в | ||
+ | base64, переводится в **application/x-www-form-urlencoded** формат и заменяет содержимое тэга | ||
+ | ''<xmlsign>''. | ||
+ | |||
+ | Проверка подписи происходит в таком же порядке: берем пакет данных, Внутрь тэга **<xmlsign>** помещаем пробел, переводим строку в массив байтов используя кодировку **UTF-8** и проверяем подпись с применением открытого ключа.\\ | ||
+ | Выдача сертификатов для данной процедуры происходит в момент подключения внешнего приложения к системе. | ||
+ | ====== Общие запросы для всех систем CleverFormsTM API ====== | ||
+ | **Чтение сертификата приложения** | ||
+ | |||
+ | <protocol>://<domain>/<app-name>/handler/api/certificate/<filename>.cer?app_id=<app_id>&serial_number=<serial_number>&sig=<signature> – Возвращает файл сертификата | ||
+ | для зарегистрированного приложения. Получение информации только с помощью метода **GET**.\\ | ||
+ | \\ | ||
+ | |||
+ | Параметры запроса:\\ | ||
+ | * <app_id> - идентификатор приложения в системе. Выдается при подключении.\\ | ||
+ | * <serial_number> - идентификатор сертификата в системе. Выдается при подключении.\\ | ||
+ | * <signature> - подпись запроса. * Элемент ненумерованного списка\\ | ||
+ | Данные транзакции для запроса: транзакция отсутствует.\\ | ||
+ | Данные транзакции для ответа: транзакция отсутствует.\\ | ||
+ | Получение информации только с помощью метода **GET**.\\ | ||
+ | |||
+ | ====== Чтение Java key-store с ключами приложения ====== | ||
+ | |||
+ | <protocol>://<domain>/<app-name>/handler/api/keystore/<file-name>.keystore?app_id=<app_id>& password=<password>>&serial_number=<serial_number>&sig=<signature> – Возвращает файл Java key-store с ключами зарегистрированного приложения.\\ | ||
+ | \\ | ||
+ | Параметры запроса:\\ | ||
+ | |||
+ | * <app_id> - идентификатор приложения в системе. Выдается при подключении. | ||
+ | * <password> - пароль, которым будет зашифровано хранилище. | ||
+ | * <serial_number> - идентификатор сертификата в системе. Выдается при подключении. | ||
+ | * <signature> - подпись запроса. * | ||
+ | Данные транзакции для запроса: транзакция отсутствует.\\ | ||
+ | Данные транзакции для ответа: транзакция отсутствует.\\ | ||
+ | Получение информации только с помощью метода **GET**\\ | ||
+ | |||
+ | ====== Авторизация пользователя в системе ====== | ||
+ | |||
+ | <protocol>://<domain>/<app-name>/handler/api/authenticate?app_id=<app_id>&username=<username>&password=<password>&format=<format>&sig=<signature> – Авторизует пользователя в системе. | ||
+ | Параметры запроса: | ||
+ | * <app_id> - идентификатор приложения в системе. Выдается при подключении. | ||
+ | * <username> - имя пользователя в системе. | ||
+ | * <password> - пароль пользователя. | ||
+ | * <format> - формат приема/выдачи ответа API (json/xml). | ||
+ | * <signature> - подпись запроса. | ||
+ | Данные транзакции для запроса: транзакция отсутствует. | ||
+ | Данные транзакции для ответа: | ||
+ | * <uid> – идентификатор пользователя в системе; | ||
+ | * <sid> – номер текущей сессии; | ||
+ | XML формат ответа: | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | <response> | ||
+ | <datetime>2015-06-02T10:46:28.670+0300</datetime> | ||
+ | <xmlsign>BDPiPGrdY2DfjCu6z3VTdwA12ag%2F%2FGjg1eyDb5aR%2BslrNozFvVZtBfHUn2RIUgO%2FE42RNmWPD | ||
+ | G7qiK2MpKQUa%2Fn%2BJW3TUhDwo%2FOBn%2BaK5c85HM1rZiNE4xQW050Mtukvxj%2Ff8vX6Rh%2F6pJiU1XbWlls | ||
+ | U9R6YSW8%2B3SMJl%2Fi4Xa0%3D</xmlsign> | ||
+ | <transaction> | ||
+ | <uid>1</uid> | ||
+ | <sid>4dc9257edab6104da518bfc86c32e37d5d15</sid> | ||
+ | </transaction> | ||
+ | </response> | ||
+ | JSON формат ответа: | ||
+ | { | ||
+ | "response":{ | ||
+ | "datetime":"2015-06-02T10:46:28.670+0300", | ||
+ | "xmlsign":"BDPiPGrdY2DfjCu6z3VTdwA12ag%2F%2FGjg1eyDb5aR%2BslrNozFvVZtBfHUn2RIUgO%2F | ||
+ | E42RNmWPDG7qiK2MpKQUa%2Fn%2BJW3TUhDwo%2FOBn%2BaK5c85HM1rZiNE4xQW050Mtukvxj%2Ff8vX6R | ||
+ | h%2F6pJiU1XbWllsU9R6YSW8%2B3SMJl%2Fi4Xa0%3D", | ||
+ | "transaction":{ | ||
+ | "uid":1, | ||
+ | "sid":"4dc9257edab6104da518bfc86c32e37d5d15" | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | Получение информации только с помощью метода **POST** | ||
+ | ====== Загрузка файлов ====== | ||
+ | **method=resource.download** – Находит и выгружает файл в браузер как бинарный. | ||
+ | Дополнительные параметры запроса: | ||
+ | * type – тип файлов (обычно совпадает с относительным путем к папке в которой находится файл). | ||
+ | * path – название файла или относительный путь к файлу. | ||
+ | Данные транзакции для запроса: отсутствуют | ||
+ | Получение информации только с помощью метода **GET** | ||
+ | ====== Выгрузка файлов ====== | ||
+ | **method=resource.upload** – Служит для потоковой загрузки файлов из браузера. | ||
+ | Дополнительные параметры запроса: | ||
+ | * type – тип файлов (обычно совпадает с относительным путем к папке в которой находится файл). | ||
+ | * path – название файла или относительный путь к файлу | ||
+ | Данные транзакции для запроса: файлы с формы ввода или FormData | ||
+ | Отправка информации только с помощью метода **POST**. |