Имя: Пароль:
1C
1С v8
Web-сервисы. Аутентификация ОС
0 unkairosed
 
21.11.14
13:08
Почему-то не могу написать в свою предыдущую тему по этому вопросу, дублирую текст здесь с дополнением.

Стоит задача разработать мобильное приложение для 1С:ЗУП для рядового сотрудника. У пользователя должна быть возможность просматривать свой расчетный листок и личные данные (кадровые). Есть центральная база 1С:ЗУП. В ней разработаны веб-сервисы, опубликованы на веб-сервере, используется IIS. При публикации указываю "Использовать аутентификацию операционной системы". Мобильное приложение также опубликовано на веб-сервере, при публикации выставлен флаг "Использовать аутентификацию операционной системы на веб-сервере". При добавлении ИБ в мобильном приложении (на мобильном устройстве) указываю доменного пользователя и его пароль, мобильное приложение успешно загружается с веб-сервера. Проблема в том, что при обращении к веб-сервису из мобильного приложения система выдает ошибку: "Аутентификация пользователя не выполнена", при обращении указываю доменного пользователя и его пароль (для WSОпределения и для WSПрокси). Если вместе с веб-сервисами опубликовать само приложение (1С:ЗУП), то при обращении к нему по адресу в веб-браузере происходит запрос на ввод пользователя и пароля (доменная учетка), ввожу, принимает, захожу в приложение. Если же через браузер обращаюсь к веб-сервису, также запрашивает пользователя и пароль, ввожу, но не прохожу авторизацию. В IIS анонимная проверка подлинности отключена, включены "Проверка подлинности Windows" (хотя пробовал "Обычная проверка подлинности" - ситуация та же). Доменный пользователь добавлен в группу IIS_IUSRS. Никак не могу разобраться с решением этой проблемы, просьба помочь, кто в теме, заранее спасибо.

Дополнение:

Если в браузере ввожу адрес, по которому расположен веб-сервис http://192.168.100.93/serv/ws/SalaryList.1cws то выпадает окошко "Необходима авторизация" с текстом "Для доступа на сервер http://192.168.100.93:80 требуется указать имя пользователя и пароль. Сообщение сервера: 192.168.100.93". Ввожу логин и пароль, выпадает это же окошко, но с несколько другим текстом: "Для доступа на сервер http://192.168.100.93:80 требуется указать имя пользователя и пароль. Сообщение сервера: 1C:Enterprise 8.3", снова ввожу тот же логин и пароль (доменная учетка) и выпадает окошко с первым текстом. Если при первом вводе логина и пароля намеренно сделать ошибку при вводе логина и пароля, то окошко со вторым текстом не выпадает, а снова выпадает первое. Т.е. можно сделать вывод, что авторизация проходит, скажем так, "частично".
1 Cube
 
21.11.14
13:11
(0) Не осилил - много букавок...
Но по теме: Веб-сервер должен быть запущен от пользователя домена, для которого создан в базе 1С пользователь с аутентификацией Windows.
2 Cube
 
21.11.14
13:13
+(1) То есть, веб-сервер обращается в 1С под одним единственным пользователем.
3 Cube
 
21.11.14
13:15
У меня на данный момент всё работает и в домене (8.2) и в домашней сети (8.3). Проблем не замечаю. Веб-сервер - Апач.
4 unkairosed
 
21.11.14
13:19
Заказчик требует принципиально IIS, так что работа с Апач не пойдет.
5 Cube
 
21.11.14
13:23
(4) Я не утверждаю, что проблема в веб-сервере, но не исключаю. Можешь гадать на кофейной гуще, а можешь проверить.
6 unkairosed
 
21.11.14
13:46
Такой вариант в принципе не пойдет (хотя проверил, не работает). Суть в том, что при отработке веб-сервиса мне важно знать, под каким пользователем он исполняется, для того, чтобы сформировать тот же расчетный листок именно для этого пользователя (сотрудника). Т.е. если использовать анонимную проверку подлинности и при вызове веб-сервиса со стороны мобильного приложения передавать конкретного пользователя 1С центральной базы и его пароль, веб-сервис отработает и я буду знать, что это за пользователь, но такой вариант не пойдет из соображений безопасности.
7 Cube
 
21.11.14
13:50
(6) "хотя проверил, не работает"
Реши проблему с правами на Апаче, потом бубешь решать проблемы с IIS.

По остальному - IIS тоже будет в 1С под одним пользователем ломиться, так что, проблему решай другими средствами.
У меня есть html отчет - показывает материальный подотчет по сотруднику: сотрудник выбирает себя в поле на странице и ниже вываливается его подотчет.
8 Aloex
 
21.11.14
13:53
Покажи настройки "Проверка подлинности" в IIS (у web сервиса)
9 unkairosed
 
21.11.14
14:22
(8) Стоит "Обычная проверка подлинности" и "Проверка подлинности Windows", анонимная проверка подлинности отключена. Причем выставляю только обычную, но после публикации веб-сервисов и перезапуске самого веб-сервера автоматом дополнительно включается проверка подлинности Windows.
10 unkairosed
 
21.11.14
14:23
(7) Такой вариант выбора пользователем себя из списка не пойдет, у него должна быть возможность получить только свои данные по зарплате, не больше.
11 Aloex
 
21.11.14
14:27
У "Проверка подлинности Windows" какой поставщик стоит?
12 unkairosed
 
21.11.14
14:28
(11) Negotiate и NTLM
13 Проггер
 
21.11.14
14:41
Сервак на котором поднят веб сервис и на котором лежит база один?
14 Aloex
 
21.11.14
14:45
Пропробуй оставь только "Negotiate"
15 DmitrO
 
21.11.14
14:55
что-то тут не понятно...
"Суть в том, что при отработке веб-сервиса мне важно знать, под каким пользователем он исполняется, для того, чтобы сформировать тот же расчетный листок именно для этого пользователя (сотрудника)..."

Т.е. предлагается всех кому начисляем ЗП завести пользователями в базу ЗУП?
16 DmitrO
 
21.11.14
15:03
это же просто.. как бы помягче сказать.. неправильно :)
17 unkairosed
 
21.11.14
15:03
(13) Да
(14) Ок, сейчас попробую
(15) Не для всех, из определнного перечня, список пользователей относительно небольшой
18 DmitrO
 
21.11.14
15:03
НЕ правильно
19 Aloex
 
21.11.14
15:05
(0) Зачем было огород из web сервиса городить?
20 unkairosed
 
21.11.14
15:17
(18) Что тут не правильного?
(19) Почему "огород" и почему нет?
21 DmitrO
 
21.11.14
15:18
где-то на официальном ресурсе 1С я видел статью, в которой объяснялось что для веб-сервисов:
- для аутентификации средствами 1С на IIS надо ставить Анонимную проверку подлинности, и при работе с веб-сервисом (на клиенте) указывать имя пользователя и пароль 1С;
- для аутентификации средствами ОС на IIS надо ставить Обычную проверку подлинности, и при работе с веб-сервисом (на клиенте) указывать имя пользователя и пароль ОС (пользователь 1С будет сопоставляться с пользователем 1С по данным Аутентификации ОС в 1С (ну как обычно это делают остальные клиенты 1С));

Имхо, Проверка подлинности Windows, это немного другая история, и о ней там ничего не было сказано.
22 DmitrO
 
21.11.14
15:22
Проверку подлинности Windows можно использовать только в среде интрасети.
23 unkairosed
 
21.11.14
15:40
(21) 1-й пункт работает. 2-й пункт как раз и не работает и нужен именно такой подход с авторизацией
24 DmitrO
 
21.11.14
15:40
С точки зрения сетевой аутентификации первые два способа опасные (пользователь и пароль передается в открытом виде).
Эту проблему решают работой веб-сервера по SSL, тогда трафик попросту шифруется ключами сертификата.

Проверка подлинности Windows безопасная - никакой пароль не передается вообще, но она работает только в локальной сети.
25 Aloex
 
21.11.14
15:45
(20) нужно в каком то отдельном приложение показывать данные? Если нет, то опубликовать web клиент.
26 DmitrO
 
21.11.14
15:46
(23) и как ты указываешь имя пользователя во втором случае?
Надо так: DOMAIN\USER
27 unkairosed
 
21.11.14
15:48
(24) С проверкой подлинности Windows понятно, но не работает с обычной проверкой подлинности. При этом как и говорил выше вместе с веб-сервисами публикуется и веб-клиент и с веб-клиентом проблем нету: переходим по адресу в браузере, вбиваваем доменные логин и пароль и приложение запускается. А с веб-сервисами - беда.
28 DmitrO
 
21.11.14
15:51
(27) ну ты не сравнивай, так-то, браузер с 1C-ным SOAP-клиентом, это охрененно разные вещи.
29 unkairosed
 
21.11.14
15:54
(25) Веб-клиент самого ЗУП опубликован, но нужно простое мобильно приложение, грубо говоря с двумя кнопками: "Показать расчетный листок" и "Показать личные данные", мобильное приложение с помощью разработанных в ЗУП веб-сервисов и опубликованных на веб-сервере должно получать данные по запросу из центральной базы (ЗУП). Пример: пользователь Вася запускает мобильное приложение на своем планшете, нажимает кнопку "Показать расчетный листок", вводит свой доменный логин и пароль, и получает свои данные по ЗП.
30 unkairosed
 
21.11.14
15:55
(26) пишу [email protected]
31 Cube
 
21.11.14
15:56
(10) Так, как ты хочешь, всё равно не получится. Так что...
32 DmitrO
 
21.11.14
15:57
(30)имхо так нельзя..
33 DmitrO
 
21.11.14
15:57
(23)+ в данном случае..
34 DmitrO
 
21.11.14
16:00
вырубить анонимную, поставить только обычную, и имя пользователя: DOMAIN\USER
должно работать
35 DmitrO
 
21.11.14
16:00
DOMAIN - краткое имя домена
36 unkairosed
 
21.11.14
16:00
(31) Почему нет? Если использовать анонимную проверку подлинности и вместо доменных логина и пароля использовать логин и пароль пользователя 1С при обращении к веб-сервису со стороны мобильного приложения, все отлично отрабатывает, я знаю в коде операции веб-сервиса центральной базы ЗУП, какой пользователь просит данные по ЗП, и даю ему его данные.
37 DmitrO
 
21.11.14
16:03
и в 1С должен быть пользователь с включенной аутентификацией ОС с такой записью о учетке \\DOMAIN\USER, кроме того у него должны быть права на отработку этого веб-сервиса
38 unkairosed
 
21.11.14
16:04
(34) Попробовал, ничего не изменилось.
39 DmitrO
 
21.11.14
16:06
еще попробуй имя пользователя указать просто USER, чета я сомневаться стал в том что можно домен вообще указать..
40 DmitrO
 
21.11.14
16:07
имя пользователя и пароль только на латиннице?
41 unkairosed
 
21.11.14
16:12
(37) Пользователь с включенной аутентификацией ОС есть (при этом аутентификация 1С:Предприятия отключена). Права на обработку веб-сервиса - что под этип подразумевается? разрешения для пользователя стоят, кроме того пользователь включен в группу IIS_IUSRS.
42 unkairosed
 
21.11.14
16:12
(40) Да, все везде на латинице.
43 Kalambur
 
21.11.14
16:13
журнал аудита посмотреть не предлагать?
44 arsik
 
гуру
21.11.14
16:14
(0) А не проще по мылу расчетки рассылать ежемесячно?
45 unkairosed
 
21.11.14
16:14
(39) Не помогло.
46 unkairosed
 
21.11.14
16:17
(44) Оно-то может и проще, но стоит именно такая задача. Думаю, все упирается в какие-то настройки, о которых я, к сожалению, не знаю.
47 DmitrO
 
21.11.14
16:17
(41) у каждого метода веб-сервиса в ролях 1С есть право Используется.
48 unkairosed
 
21.11.14
16:18
(47) Это выставлено.
49 arsik
 
гуру
21.11.14
16:20
Как вариант сделать обычный транспорт.
1) Веб Сервер с ПХП, к нему обращаются юзеры со своими учетками.
2) На внутри пхп выполнять вызов вебсервиса и параметром передавать туда имя пользователя.
3) Отдать то что получилось в 2)
50 DmitrO
 
21.11.14
16:22
(48) у меня кончились идеи.. :)
после этого я обычно проверяю сам и прошу версию платформы, но так лениво..
51 unkairosed
 
21.11.14
16:23
(49) Спасибо, возможно. Но хочется верить, что задачу можно решить имеющимися средствами.
52 unkairosed
 
21.11.14
16:25
(50) Я на всякий случай оставлю версию платформы: 8.3.5.1068, IIS 7.5 :)
53 unkairosed
 
24.11.14
09:59
Вопрос по-прежнему актуален, возможно, у кого-то появятся еще идеи.
54 Cube
 
24.11.14
10:02
(53) Я так и не понял: ты что, утверждаешь, что где-то когда-то видел, чтобы веб-сервис 1С исполнялся от имени разных пользователей домена? Что-то из разряда фантастики...
55 Cube
 
24.11.14
10:06
+(54) Немного не правильно выразился: веб-сервер запущен под контретным пользователем домена. К веб-сервису 1С обращается веб-сервер, соответственно, всегда под одним пользователем. Разве может веб-сервер исполнять 10 процессов под 10 пользователями домена?
56 unkairosed
 
24.11.14
10:28
(55) Допустим, ты прав, к веб-сервису обращается веб-сервер, запущенный под конкретным пользователем домена, и никак иначе быть не может, т.е. невозможно обращаться к веб-сервису от имени разных пользователей домена, только от имени пользователя, под которым запущен веб-сервер. Почему тогда при обращении к самому приложению (не к веб-сервису), опубликованному на веб-сервере, через веб-клиент (браузер) аутентификация ОС срабатывает? В чем разница?
57 Cube
 
24.11.14
10:46
(56) ХЗ, перед таким вопросм я бессилен... :)
58 MM
 
24.11.14
11:05
(56) не знаю деталей работы веб-сервера, но в ОС есть функционал олицетворения (имперсонализации), когда поток временно получает права клиента, запрос которого обрабатывает. Естественно, клиента перед этим проверяют, и, обычно, делают это без запроса пароля - средствами доверия в сети.
59 DmitrO
 
24.11.14
12:48
провел испытания..
По тому что написано в (21): похоже что это так было в 8.2.

В 8.3 так:
пункт 1 (про анонимную на IIS) - все также;
пункт 2 (про обычную на IIS) - имя пользователя и пароль передаваемый SOAP-клиентом в HTTP запросе должны совпадать с именем и паролем пользователя 1С предприятия.

Проверка подлинности Windows на IIS - мне так и не удалось заставить работать SOAP-клиента 1C с такой аутентификацией на IIS, подозреваю что это не возможно в принципе, ибо такая аутентификация подразумевает двухсторонний обмен данными между клиентом и сервером, т.е. несколько запросов туда сюда, он так попросту не умеет, а браузеры умеют.
60 DmitrO
 
24.11.14
12:53
Уточнение.

пункт 2 (про обычную на IIS) - имя пользователя и пароль передаваемый SOAP-клиентом в HTTP запросе для аутентификации на IIS должны совпадать с именем и паролем пользователя 1С предприятия. Т.о. у нас и в AD и в 1С должен быть пользователь с одинаковым имененм и паролем.
61 DmitrO
 
24.11.14
12:55
Т.о. твою задачу проще всего решить используя анонимную аутентификацию на IIS и создавая пользователей в 1С для получения РЛ с правами на выполнение метода веб-сервиса.
62 Cube
 
24.11.14
13:01
(60) Не правильно. У пользователя 1С вообще можно пароль не указывать, достаточно поставить аутентификацию ОС и указать пользователя домена, под которым запущен веб-сервер.
63 DmitrO
 
24.11.14
13:11
(62)тут решается другая задача, здесь надо чтобы в 1С пользователь авторизовался зависимости от переданных учетных данных, а не всегда одинаково (как запущен вебсервер).
64 Cube
 
24.11.14
13:14
(63) А это я не внимательно прочел))
Тогда я не понял, у тебя что-ли получилось обратиться к веб-сервису под разными пользователями домена?
65 DmitrO
 
24.11.14
13:20
(64) да
66 Cube
 
24.11.14
13:23
(65) Только по логину паролю или по доменной авторизации тоже получилось?
67 DmitrO
 
24.11.14
13:29
Обычная проверка подлинности IIS.
Подразумевает передачу логина и пароля.
IIS при этом делает аутентификацию по каталогу пользователей AD, в настройках проверки подлинности на IIS можно задать домен по умолчанию.
68 Cube
 
24.11.14
13:34
(67) Ну понятно, шляпа, короче... Такое и средствами веб-сервиса можно забубенить... :)