Отправка http запросов с дайджест-аутентификацией из 1С


Недавно встала задача отправлять запросы http из 1С на сервер, который требует дайджест аутентификацию. Признаюсь честно, не сразу удалось решить данную задачу, хотя решение достаточно простое. Вот и решил поделиться своим опытом. Вдруг кому то пригодится))

Для решения данной задачи пришлось погуглить, что же такое дайджест-авторизация. Первой же ссылкой попал в википедию https://ru.wikipedia.org/wiki/%D0%94%D0%B0%D0%B9%D0%B4%D0%B6%D0%B5%D1%81%D1%82-%D0%B0%D1%83%D1%82%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F

Прочитав статью понял, решение простое. Весь смысл сводится к тому, что клиент (наша 1С) отправляет первый запрос веб серверу. Сервер возвращает ответ, в заголовках которого присутствует дополнительная служебная информация. На основе этой дополнительной информации клиент формирует и отправляет второй запрос и уже в ответ на него получает необходимую информацию.

Не буду переписывать весть механизм формирования обоих запросов — все достаточно подробно описано в википедии. Для примера привожу обработку, которая отправляет такой запрос, нужно лишь указать необходимые данные ( такие как адрес сервера, расположение ресурса на сервере, метод запроса, логин и пароль).

Тестировал на релизе Платформы 1С 8.3.5.16.25.

Надеюсь, кому-нибудь она поможет))

1 Comment

  1. strafer

    Потратил два дня на решение, но так ничего и не получилось. Решил скачать Ваш пример. И вот такой фокус

    {ВнешняяОбработка.ВебЗапросСДайжестАвторизацией.Форма.Форма.Форма(15)}: Поле объекта не обнаружено (opaque)
    opaque = СтруктураПараметровАвторизации.opaque;

    И даже выкинув этот параметр. Ответ сервера все тот же

    Код ответа сервера: 401; Текст тела ответа: <?xml version=»1.0″ encoding=»iso-8859-1″?>
    <!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Transitional//EN»
    «http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd»>
    <html xmlns=»http://www.w3.org/1999/xhtml» xml:lang=»en» lang=»en»>
    <head>
    <title>401 — Unauthorized</title>
    </head>
    <body>
    <h1>401 — Unauthorized</h1>
    </body>
    </html>

    Показать

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *