Имя: Пароль:
1C
 
Как сделать basic авторизацию в веб-сервисе с использованием домена юзера?
,
0 DTX 4th
 
11.04.17
14:41
Никак не могу авторизоваться на веб-сервисе.
Через SoapUI всё норм:
http://i.imgur.com/wcY726C.png
В 1С:
    uri = "http://schemas.microsoft.com/sharepoint/soap/";;
    Прокси = WSСсылки.WSСсылка1.СоздатьWSПрокси(uri,
        "Lists", "ListsSoap12");
    
    Прокси.Пользователь = "domen\user";
    Прокси.Пароль = "Password";

    
    ТипWSПараметра = Прокси.ФабрикаXDTO.Пакеты.Получить(uri).Получить("GetListCollection");
    
    WSПараметр       = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра);
    
    Рез = Прокси.GetListCollection(WSПараметр);


Получаю 401 - Unauthorized
Непонятно, куда писать домен. Есть подозрение, что домменые пользователи пока не поддерживаются.. И это на 8.3.10.2168
1 Неверный Параметр И
 
11.04.17
15:04
>Прокси.Пользователь = "domen\user";

Здесь надо указывать имя пользователя 1С, а не свои фантазии.
2 Fragster
 
гуру
11.04.17
15:05
так доменная, или basic?
3 Fragster
 
гуру
11.04.17
15:06
4 DTX 4th
 
11.04.17
15:08
(1) (2) Имя пользователя, под которым пускает в сервис, к 1С никакого отношения не имеет.

(2) Судя по SoapUI, basic. Пользователь для SharePoint'а имеет вид Superserver\username
5 SiAl-chel
 
11.04.17
15:11
(4) Попробовать поиграться с именем пользователя.
1. user (домен не указывать)
2. user@domain
6 DTX 4th
 
11.04.17
15:18
(5) Пробовал..
Ещё в 2009 люди с такой проблемой столкнулись.
http://itland.ru/forum/lofiversion/index.php/t24306.html
Предлагают использовать COMОбъект("MSSOAP.SOAPClient30"), но он устарел и на W7+ его уже нет.
Если так ничего и не придумаю, придётся писать компоненту на C#, потому что от PowerShell меня выворачивает. Да, до этого писал скрипт на PS, но это было ещё в 2014 году, когда ещё платформа не могла https.. Сейчас может, но нет возможности указать домен =\
7 Serginio1
 
11.04.17
15:26
8 Fragster
 
гуру
11.04.17
15:44
(7) надоел
9 DmitrO
 
11.04.17
15:46
? Basic аутентификация – в этом случае клиент интернет-сервиса передает для аутентификации на веб-сервер имя пользователя и пароль в HTTP-запросе, который формируется при обращении к веб-серверу.

Для успешного выполнения данного типа аутентификации, имя пользователя и пароль, которые используются для доступа к «1С:Предприятию», должны использоваться и для доступа к веб-серверу. Если пользователь, параметры которого передаются в HTTP-запросе, не может получить доступ к веб-серверу, значит, он не сможет пользоваться интернет-сервисом.
10 DTX 4th
 
11.04.17
15:46
Даже не знаю, что проще. Разобраться с C# и использовать (7) или продолжить ковырять PowerShell..
11 DmitrO
 
11.04.17
15:46
12 Fragster
 
гуру
11.04.17
15:49
я надеюсь, в имени пользователя нет кириллицы?
13 Serginio1
 
11.04.17
15:51
(8) Ну извини. Скоро отдохнешь от меня.
14 DTX 4th
 
11.04.17
15:52
(12) Всё на латинице.

(9) Не пойму. Если у меня веб-сервис на IIS, и пользователь имеет вид superserver\username, из 1С я не смогу достучаться до такого сервиса?
15 Неверный Параметр И
 
11.04.17
16:06
(14) Наборот. К 1С не сможешь.

Авторизация происходит дважды - первый раз тебя проверяет веб-сервер, который решает - пропустить тебя дальше или нет. Если пропустить, то исходный запрос отдается системе, которая находится за веб-сервером и та производит авторизацию уже со своей колокольни.

Именно поэтому традиционная схема публикации веб-сервиса 1С  включает в себя настройку анонимной авторизации на веб-сервере, чтобы тот не ничего не проверял, а сразу отдавал запрос в 1С. Та проверяет переданный basic авторизацией логин/пароль на предмет пользователя 1С и в случае несовпадения кидает тебе 401.

В текущем случае тебе надо сначала понять, кто дает тебе отлуп по такому логину/паролю - веб-сервер, или сама обрабатывающая система. Берешь в руки Fiddler и смотришь, что от тебя вылетает и влетает...
16 Неверный Параметр И
 
11.04.17
16:06
(13) Ура! Ты нашел работу!
17 DTX 4th
 
11.04.17
16:20
(15) Как раз сейчас фидлером мониторил. В общем, мне нужна не basic аутентификация. А 1С, походу, умеет только её. Занавес.
18 Serginio1
 
11.04.17
16:31
(16) Спасибо.
19 Неверный Параметр И
 
11.04.17
18:13
(17) 1С:Предприятие 8.3 (8.3.8.2088)

WSСсылкаМенеджер.<Имя WS-Ссылки> (WSReferenceManager.<Имя WS-Ссылки>)
СоздатьWSПрокси (CreateWSProxy)

Синтаксис:
СоздатьWSПрокси(<URIПространстваИменСервиса>, <ИмяСервиса>, <ИмяПорта>, <ИнтернетПрокси>, <Таймаут>, <ЗащищенноеСоединение>, <Местоположение>, <ИспользоватьАутентификациюОС>)

...
<ИспользоватьАутентификациюОС> (необязательный)

Тип: Булево.
Указывает на использование аутентификации NTLM или Negotiate на сервере.
Значение по умолчанию: Ложь.
20 DTX 4th
 
11.04.17
18:52
(19) Вот это поворот. Всё заработало)
Спасибо!)
21 oleg_km
 
11.04.17
21:18
(8) Аналогично.