Авторизация в HTTP запросе.
Добрый день, Коллеги!
Подскажите пожалуйста куда смотреть или куда копать. Не могу пройти авторизацию через 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С, в которой заведен пользователь
- Взаимодействие мобильного приложения 1С и центральной информационной базы с использованием http-сервиса
- Интеграция (Ich will version)
Найденные решения
Обычный 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 Тогда
Возврат;
КонецЕсли;
Показать
Вакансии
1С-Программист (интегратор Битрикс24)
Санкт-Петербург
зарплата от 150 000 руб. до 250 000 руб.
Полный день
Санкт-Петербург
зарплата от 150 000 руб. до 250 000 руб.
Полный день