Есть база, опубликованная через 1С:линк, настроена дополнительная авторизация на веб-сервере.
Нужно как-то выполнить http-запрос к этой базе, но не понятно куда указывать пароль 1С и веб-сервера
Пробовал так
Http = Новый HTTPСоединение("example.link.1c.ru", 443,"Логин1С","Пароль1С",,20,Новый ЗащищенноеСоединениеOpenSSL,);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "Basic " + ПолучитьBase64СтрокуИзДвоичныхДанных(ПолучитьДвоичныеДанныеИзСтроки("ПользовательВебСервера:ПарольВебСервера")); //здесь логин/пароль от веб-сервера
Запрос = Новый HTTPЗапрос("/buh/hs/billing/version/", Заголовки);
Ответ = Http.Получить(Запрос, "");
ОтветСтрокой = Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
Странно почему никто про это не сказал, но заголовок "Authorization" как раз тут тебе не нужен. Ты же указываешь их при создании HTTP соединения. То есть эта строчка просто не нужна.
Еще может у пользователя, которого ты указываешь для авторизации, нет прав на внешнее соединение, но это не точно.
Судя по переписке вы тут ищите какой-то логин веб-сервера, такого понятия нет, на сколько мне известно. Во всяком случае если 1с смогла вернуть 401, тогда с самим веб сервером все ок.
Очень рекомендую использовать postman, невероятно удобная утилита, с ним можешь сначала проверить что у принимающей стороны все хорошо, а уже потом работать со стороны 1с-ки + отлаживаться в 100 раз проще
(16) Я понимаю что есть Basic Authorization, и когда есть один пароль 1С, либо от веб-сервера достаточно туда передать его, и все будет работать, но когда пароля два, не понятно как их передавать.
Если подключаться тонким клиентом к такой базе, то в параметрах запуска можно указать параметры /wsn /wsp и передать пароль от веб-сервера, мне казалось, что при подключении к http сервису, тоже можно передать какой-то заголовок
Опять же не пароль от веб сервера, а пароль пользователя 1с под которым заходишь внешним соединением.
Если у тебя прописаны логин/пароль пользователя под которым выполняется внешнее соединение, то ни заголовки, ни параметры http соединения не нужны.
Вы уверены, что на веб-сервере для аутентификации логин и пароль указаны кириллицей? У Вас в примере кода указаны строковые константы "Логин1С" и "Пароль1С" это не ошибка? Попробуйте через браузер выполнить свой запрос, что происходит? Браузер, при получении ошибки 401, должен вывести стандартный (системный) запрос логин/пароль.
Пользователь и пароль, если верить СП, обязательно должны быть указаны латиницей:
Пользователь, от имени которого установлено соединение.
Не поддерживаются имена, содержащие символы алфавита, отличного от латинского.
Попробуйте через браузер выполнить свой запрос, что происходит?
Данный запрос через браузер просто постоянно спрашивает логин/пароль, и пароль ни от 1С ни от веб-сервера не подходят.
Если подключаться через веб-клиент, сначала спросит логин от веб-сервера, а затем пароль от 1С.
(21) Не знал что это такое. Ну хорошо, тогда есть предложение. В *.vrd файле публикации есть строчка "ib=...", тут мы можем установить, что при подключении всегда заходить под одним конкретным пользователем. Пример:
(25) Если нужно с двумя паролями, боюсь решения нет и быть не может. А как это вообще можно себе представить? Вот заголовки запроса, типа обычная структура и на два одинаковых ключа "Authorization" - два разных значения. Ну бред же.
Вообще думаю тут нужно копать глубже. Действительно, почему бы просто не убрать пароль на веб-сервере?
То есть какой в себе несет смысл двойная авторизация? Если вопрос безопасности, ну сделать пароль в 2 раза длиннее, или в 5, чтобы было спокойнее, а в противном случае зачем?
Если вопрос безопасности, ну сделать пароль в 2 раза длиннее
В базе работают и обычные пользователи, и они не будут вводить сложные пароли. Пароль от веб-сервера в данном случае для них указан по умолчанию, понятно что можно и указать пароль от 1С в ярлыке, но так тоже делать нельзя, за одним рабочим местом может работать несколько кассиров, делать для каждого кассира свой профиль в системе или разные ярлыки слишком муторно
(29) 1С:Линк, братан, вообще муторная тема... как варик юзай обычный веб-сервер без линка или обмен через облако. Поправь меня, если я не прав и не пинай здорово.)