&НаСервере
Процедура ПолучитьТокенНаСервере()
Соединение = Новый HTTPСоединение(Сервер,443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "application/json");
Заголовки.Вставить("Accept", "application/json");
HTTPЗапрос = Новый HTTPЗапрос("/api/v1/auth",Заголовки);
ЗаписьJOIN = Новый ЗаписьJSON;
ЗаписьJOIN.УстановитьСтроку();
ДанныеДляЗапроса = Новый Структура;
ДанныеДляЗапроса.Вставить("client_id",client_id);
ДанныеДляЗапроса.Вставить("client_secret",client_secret);
ДанныеДляЗапроса.Вставить("user_id",user_id);
ДанныеДляЗапроса.Вставить("auth_type",auth_type);
ЗаписатьJSON(ЗаписьJOIN,ДанныеДляЗапроса);
СтрокаДляЗапроса = ЗаписьJOIN.Закрыть();
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаДляЗапроса,КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Ответ = Соединение.ВызватьHTTPМетод("POST",HTTPЗапрос);
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
Структура = ПрочитатьJSON(ЧтениеJSON, Ложь);
УИД = Структура.code;
// Подписание данных для получения токена
ДанныеДляПолученияТокена = ПодписатьТекст(ЗашифроватьBase64(УИД,"UTF-8"),СертификатДляОбмена,Истина);
//ДанныеДляПолученияТокена = СтрЗаменить(ДанныеДляПолученияТокена,,"");
ЗаписатьВЖурнал("Подписано сертификатом " + СертификатДляОбмена + Символы.ПС + ДанныеДляПолученияТокена);
// Получение токена с использованием подписанных данных
Соединение = Новый HTTPСоединение(Сервер,443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "application/json");
Заголовки.Вставить("Accept", "application/json");
HTTPЗапрос = Новый HTTPЗапрос("api/v1/token",Заголовки);
ЗаписьJOIN = Новый ЗаписьJSON;
ЗаписьJOIN.УстановитьСтроку();
ДанныеДляЗапроса = Новый Структура;
ДанныеДляЗапроса.Вставить("code",УИД);
ДанныеДляЗапроса.Вставить("signature",ДанныеДляПолученияТокена);
ЗаписатьJSON(ЗаписьJOIN,ДанныеДляЗапроса);
СтрокаДляЗапроса = ЗаписьJOIN.Закрыть();
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаДляЗапроса,КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Ответ = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
Токен = ПрочитатьJSON(ЧтениеJSON, Ложь).token;
КонецПроцедуры |