|
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) Ну понятно, шляпа, короче... Такое и средствами веб-сервиса можно забубенить... :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |