Добрый день, Коллеги!
Подскажите пожалуйста куда смотреть или куда копать. Не могу пройти авторизацию через HTTP сервис из 1С. Так же не могу пройти авторизацию через постман.
1) Пробовал пароль передавать в заголовке в параметре Authorization в виде Base64 в виде "Basic +Пароль"
2) Игрался с доменом в Punycode
3) Передавал логин и пасс на вкладке авторизации с типом Basic Auth
В 1С уже как только не извращался. Если делать через 1С, то пишет 301 ошибку
Домен
https://xn--c1abmmpq.xn--p1ai/container/full/
https://дислог.рф/container/full/
Подскажите пожалуйста куда смотреть или куда копать. Не могу пройти авторизацию через HTTP сервис из 1С. Так же не могу пройти авторизацию через постман.
1) Пробовал пароль передавать в заголовке в параметре Authorization в виде Base64 в виде "Basic +Пароль"
2) Игрался с доменом в Punycode
3) Передавал логин и пасс на вкладке авторизации с типом Basic Auth
В 1С уже как только не извращался. Если делать через 1С, то пишет 301 ошибку
Домен
https://дислог.рф/container/full/
Прикрепленные файлы:



По теме из базы знаний
- Авторизация во Вконтакте &НаСервере (без браузера)
- Доступ из базы 1С к стандартному интерфейсу Odata базы 1С, в которой заведен пользователь
- SynchroWB — интеграция 1С и Wildberries: автоматизация заказов и остатков по API с УТ, КА, ERP, УНФ, Розница 3
- Взаимодействие мобильного приложения 1С и центральной информационной базы с использованием http-сервиса
- Как спецификация OpenAPI помогает писать тесты http-сервисов
Найденные решения
Обычный form-data:
Сервер = "дислог.рф";
Порт = 443;
Сервис = "/user/index.php";
Ssl = Новый ЗащищенноеСоединениеOpenSSL();
Прокси = Новый ИнтернетПрокси(Ложь);
СоединениеHTTP = Новый HTTPСоединение(Сервер, Порт, , , Прокси,,Ssl);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type","multipart/form-data; boundary=""5855a778-d8e5-4988-bc8a-5c4b45d3f00e""");
ЗапросHTTP = Новый HTTPЗапрос(Сервис, Заголовки);
ТелоЗапроса = "
|
|--5855a778-d8e5-4988-bc8a-5c4b45d3f00e
|Content-Type: text/plain; charset=UTF-8
|Content-Disposition: form-data; name='pass'
|
|*ВАШ ПАРОЛЬ*
|--5855a778-d8e5-4988-bc8a-5c4b45d3f00e
|--5855a778-d8e5-4988-bc8a-5c4b45d3f00e
|Content-Type: text/plain; charset=UTF-8
|Content-Disposition: form-data; name='login'
|
|*ВАШ ПАРОЛЬ*
|--5855a778-d8e5-4988-bc8a-5c4b45d3f00e--";
ЗапросHTTP.УстановитьТелоИзСтроки(ТелоЗапроса);
Результат = СоединениеHTTP.ОтправитьДляОбработки(ЗапросHTTP);
Если Результат.КодСостояния <> 200 Тогда
//Ошибка выполнения запроса
КонецЕсли;
Данные = Результат.ПолучитьТелоКакСтроку();
ПоказатьПрикрепленные файлы:

Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Обычный form-data:
Сервер = "дислог.рф";
Порт = 443;
Сервис = "/user/index.php";
Ssl = Новый ЗащищенноеСоединениеOpenSSL();
Прокси = Новый ИнтернетПрокси(Ложь);
СоединениеHTTP = Новый HTTPСоединение(Сервер, Порт, , , Прокси,,Ssl);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type","multipart/form-data; boundary=""5855a778-d8e5-4988-bc8a-5c4b45d3f00e""");
ЗапросHTTP = Новый HTTPЗапрос(Сервис, Заголовки);
ТелоЗапроса = "
|
|--5855a778-d8e5-4988-bc8a-5c4b45d3f00e
|Content-Type: text/plain; charset=UTF-8
|Content-Disposition: form-data; name='pass'
|
|*ВАШ ПАРОЛЬ*
|--5855a778-d8e5-4988-bc8a-5c4b45d3f00e
|--5855a778-d8e5-4988-bc8a-5c4b45d3f00e
|Content-Type: text/plain; charset=UTF-8
|Content-Disposition: form-data; name='login'
|
|*ВАШ ПАРОЛЬ*
|--5855a778-d8e5-4988-bc8a-5c4b45d3f00e--";
ЗапросHTTP.УстановитьТелоИзСтроки(ТелоЗапроса);
Результат = СоединениеHTTP.ОтправитьДляОбработки(ЗапросHTTP);
Если Результат.КодСостояния <> 200 Тогда
//Ошибка выполнения запроса
КонецЕсли;
Данные = Результат.ПолучитьТелоКакСтроку();
ПоказатьПрикрепленные файлы:

(2)
Да, в постмане получилось повторить, но в 1С не хочет взлетать. Пароль пробовал в разных вариантах и base64. Причем, что интересно в постмане сначала нужно зайти на users/index.php и только после этого можешь дальше делать запросы. Как оно работает? Он получает токен и с этим токеном уже работает?
Да, в постмане получилось повторить, но в 1С не хочет взлетать. Пароль пробовал в разных вариантах и base64. Причем, что интересно в постмане сначала нужно зайти на users/index.php и только после этого можешь дальше делать запросы. Как оно работает? Он получает токен и с этим токеном уже работает?
Спасибо! Все получилось!
При первом запросе POST мы в заголовке получаем куки. Далее я посмотрел в постмане как формируется второй запрос GET когда уже пройдена авторизация и сформировал заголовки по аналогии подставив куки полученные в первом запросе.
При первом запросе POST мы в заголовке получаем куки. Далее я посмотрел в постмане как формируется второй запрос GET когда уже пройдена авторизация и сформировал заголовки по аналогии подставив куки полученные в первом запросе.
//Сохраняем куки из запроса авторизации
Cookie = Ответ.Заголовки["Set-Cookie"];
HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса2);
HTTPЗапрос.Заголовки.Вставить("Accept", "application/json");
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
HTTPЗапрос.Заголовки.Вставить("lang", "ru");
//Передаем куки в новый запрос
HTTPЗапрос.Заголовки.Вставить("Cookie", Cookie);
Показать
Полное решение получилось таким
Сервер = "дислог.рф";
Порт = 443;
Сервис = "/user/index.php";
Логин = "ЛОГИН";
Пароль = "ПАРОЛЬ";
Ssl = Новый ЗащищенноеСоединениеOpenSSL();
Прокси = Новый ИнтернетПрокси(Ложь);
СоединениеHTTP = Новый HTTPСоединение(Сервер, Порт, , , Прокси,,Ssl);
ВремГраница = СтрЗаменить(Новый УникальныйИдентификатор, "-", "");
ТелоЗапроса = Новый ТекстовыйДокумент();
ТелоЗапроса.РазделительСтрок = Символы.CR+Символы.LF;
ТелоЗапроса.ДобавитьСтроку("--" + ВремГраница);
ТелоЗапроса.ДобавитьСтроку("Content-Disposition: form-data; name=""login"";");
ТелоЗапроса.ДобавитьСтроку("");
ТелоЗапроса.ДобавитьСтроку(Логин);
ТелоЗапроса.ДобавитьСтроку("--" + ВремГраница);
ТелоЗапроса.ДобавитьСтроку("Content-Disposition: form-data; name=""passwd"";");
ТелоЗапроса.ДобавитьСтроку("");
ТелоЗапроса.ДобавитьСтроку(Пароль);
ТелоЗапроса.ДобавитьСтроку("--" + ВремГраница + "--");
ТелоЗапросаСтрока = ТелоЗапроса.ПолучитьТекст();
HTTPЗапрос = Новый HTTPЗапрос(Сервис);
HTTPЗапрос.Заголовки["Content-Type"] = "multipart/form-data; boundary=" + ВремГраница;
HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаСтрока, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
HTTPОтвет = СоединениеHTTP.ОтправитьДляОбработки(HTTPЗапрос);
Если HTTPОтвет.КодСостояния <> 200 Тогда
Возврат;
КонецЕсли;
Cookie= Лев(HTTPОтвет.Заголовки["Set-Cookie"],36);
HTTPЗапрос = Новый HTTPЗапрос("/container/full/");
HTTPЗапрос.Заголовки.Вставить("Accept", "*/*");
HTTPЗапрос.Заголовки.Вставить("Accept", "Basic ");
HTTPЗапрос.Заголовки.Вставить("Content-Type", "keep-alive");
HTTPЗапрос.Заголовки.Вставить("Cookie", Cookie);
HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаСтрока, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
HTTPОтвет = СоединениеHTTP.Получить(HTTPЗапрос);
Данные = HTTPОтвет.ПолучитьТелоКакСтроку();
Если HTTPОтвет.КодСостояния <> 200 Тогда
Возврат;
КонецЕсли;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот