Web-сервисы. Аутентификация ОС #726531


#0 by unkairosed
Почему-то не могу написать в свою предыдущую тему по этому вопросу, дублирую текст здесь с дополнением. Стоит задача разработать мобильное приложение для 1С:ЗУП для рядового сотрудника. У пользователя должна быть возможность просматривать свой расчетный листок и личные данные (кадровые). Есть центральная база 1С:ЗУП. В ней разработаны веб-сервисы, опубликованы на веб-сервере, используется IIS. При публикации указываю "Использовать аутентификацию операционной системы". Мобильное приложение также опубликовано на веб-сервере, при публикации выставлен флаг "Использовать аутентификацию операционной системы на веб-сервере". При добавлении ИБ в мобильном приложении (на мобильном устройстве) указываю доменного пользователя и его пароль, мобильное приложение успешно загружается с веб-сервера. Проблема в том, что при обращении к веб-сервису из мобильного приложения система выдает ошибку: "Аутентификация пользователя не выполнена", при обращении указываю доменного пользователя и его пароль (для WSОпределения и для WSПрокси). Если вместе с веб-сервисами опубликовать само приложение (1С:ЗУП), то при обращении к нему по адресу в веб-браузере происходит запрос на ввод пользователя и пароля (доменная учетка), ввожу, принимает, захожу в приложение. Если же через браузер обращаюсь к веб-сервису, также запрашивает пользователя и пароль, ввожу, но не прохожу авторизацию. В IIS анонимная проверка подлинности отключена, включены "Проверка подлинности Windows" (хотя пробовал "Обычная проверка подлинности" - ситуация та же). Доменный пользователь добавлен в группу IIS_IUSRS. Никак не могу разобраться с решением этой проблемы, просьба помочь, кто в теме, заранее спасибо. Дополнение: Если в браузере ввожу адрес, по которому расположен веб-сервис то выпадает окошко "Необходима авторизация" с текстом "Для доступа на сервер требуется указать имя пользователя и пароль. Сообщение сервера: 192.168.100.93". Ввожу логин и пароль, выпадает это же окошко, но с несколько другим текстом: "Для доступа на сервер требуется указать имя пользователя и пароль. Сообщение сервера: 1C:Enterprise 8.3", снова ввожу тот же логин и пароль (доменная учетка) и выпадает окошко с первым текстом. Если при первом вводе логина и пароля намеренно сделать ошибку при вводе логина и пароля, то окошко со вторым текстом не выпадает, а снова выпадает первое. Т.е. можно сделать вывод, что авторизация проходит, скажем так, "частично".
#1 by Cube
Не осилил - много букавок... Но по теме: Веб-сервер должен быть запущен от пользователя домена, для которого создан в базе 1С пользователь с аутентификацией Windows.
#2 by Cube
+ То есть, веб-сервер обращается в 1С под одним единственным пользователем.
#3 by Cube
У меня на данный момент всё работает и в домене (8.2) и в домашней сети (8.3). Проблем не замечаю. Веб-сервер - Апач.
#4 by unkairosed
Заказчик требует принципиально IIS, так что работа с Апач не пойдет.
#5 by Cube
Я не утверждаю, что проблема в веб-сервере, но не исключаю. Можешь гадать на кофейной гуще, а можешь проверить.
#6 by unkairosed
Такой вариант в принципе не пойдет (хотя проверил, не работает). Суть в том, что при отработке веб-сервиса мне важно знать, под каким пользователем он исполняется, для того, чтобы сформировать тот же расчетный листок именно для этого пользователя (сотрудника). Т.е. если использовать анонимную проверку подлинности и при вызове веб-сервиса со стороны мобильного приложения передавать конкретного пользователя 1С центральной базы и его пароль, веб-сервис отработает и я буду знать, что это за пользователь, но такой вариант не пойдет из соображений безопасности.
#7 by Cube
"хотя проверил, не работает" Реши проблему с правами на Апаче, потом бубешь решать проблемы с IIS. По остальному - IIS тоже будет в 1С под одним пользователем ломиться, так что, проблему решай другими средствами. У меня есть html отчет - показывает материальный подотчет по сотруднику: сотрудник выбирает себя в поле на странице и ниже вываливается его подотчет.
#8 by Aloex
Покажи настройки "Проверка подлинности" в IIS (у web сервиса)
#9 by unkairosed
Стоит "Обычная проверка подлинности" и "Проверка подлинности Windows", анонимная проверка подлинности отключена. Причем выставляю только обычную, но после публикации веб-сервисов и перезапуске самого веб-сервера автоматом дополнительно включается проверка подлинности Windows.
#10 by unkairosed
Такой вариант выбора пользователем себя из списка не пойдет, у него должна быть возможность получить только свои данные по зарплате, не больше.
#11 by Aloex
У "Проверка подлинности Windows" какой поставщик стоит?
#12 by unkairosed
Negotiate и NTLM
#13 by Проггер
Сервак на котором поднят веб сервис и на котором лежит база один?
#14 by Aloex
Пропробуй оставь только "Negotiate"
#15 by DmitrO
что-то тут не понятно... "Суть в том, что при отработке веб-сервиса мне важно знать, под каким пользователем он исполняется, для того, чтобы сформировать тот же расчетный листок именно для этого пользователя (сотрудника)..." Т.е. предлагается всех кому начисляем ЗП завести пользователями в базу ЗУП?
#16 by DmitrO
это же просто.. как бы помягче сказать.. неправильно :)
#17 by unkairosed
Да Ок, сейчас попробую Не для всех, из определнного перечня, список пользователей относительно небольшой
#18 by DmitrO
НЕ правильно
#19 by Aloex
Зачем было огород из web сервиса городить?
#20 by unkairosed
Что тут не правильного? Почему "огород" и почему нет?
#21 by DmitrO
где-то на официальном ресурсе 1С я видел статью, в которой объяснялось что для веб-сервисов: - для аутентификации средствами 1С на IIS надо ставить Анонимную проверку подлинности, и при работе с веб-сервисом (на клиенте) указывать имя пользователя и пароль 1С; - для аутентификации средствами ОС на IIS надо ставить Обычную проверку подлинности, и при работе с веб-сервисом (на клиенте) указывать имя пользователя и пароль ОС (пользователь 1С будет сопоставляться с пользователем 1С по данным Аутентификации ОС в 1С (ну как обычно это делают остальные клиенты 1С)); Имхо, Проверка подлинности Windows, это немного другая история, и о ней там ничего не было сказано.
#22 by DmitrO
Проверку подлинности Windows можно использовать только в среде интрасети.
#23 by unkairosed
1-й пункт работает. 2-й пункт как раз и не работает и нужен именно такой подход с авторизацией
#24 by DmitrO
С точки зрения сетевой аутентификации первые два способа опасные (пользователь и пароль передается в открытом виде). Эту проблему решают работой веб-сервера по SSL, тогда трафик попросту шифруется ключами сертификата. Проверка подлинности Windows безопасная - никакой пароль не передается вообще, но она работает только в локальной сети.
#25 by Aloex
нужно в каком то отдельном приложение показывать данные? Если нет, то опубликовать web клиент.
#26 by DmitrO
и как ты указываешь имя пользователя во втором случае?
#27 by unkairosed
С проверкой подлинности Windows понятно, но не работает с обычной проверкой подлинности. При этом как и говорил выше вместе с веб-сервисами публикуется и веб-клиент и с веб-клиентом проблем нету: переходим по адресу в браузере, вбиваваем доменные логин и пароль и приложение запускается. А с веб-сервисами - беда.
#28 by DmitrO
ну ты не сравнивай, так-то, браузер с 1C-ным SOAP-клиентом, это охрененно разные вещи.
#29 by unkairosed
Веб-клиент самого ЗУП опубликован, но нужно простое мобильно приложение, грубо говоря с двумя кнопками: "Показать расчетный листок" и "Показать личные данные", мобильное приложение с помощью разработанных в ЗУП веб-сервисов и опубликованных на веб-сервере должно получать данные по запросу из центральной базы (ЗУП). Пример: пользователь Вася запускает мобильное приложение на своем планшете, нажимает кнопку "Показать расчетный листок", вводит свой доменный логин и пароль, и получает свои данные по ЗП.
#30 by unkairosed
пишу user@domain.ru
#31 by Cube
Так, как ты хочешь, всё равно не получится. Так что...
#32 by DmitrO
имхо так нельзя..
#33 by DmitrO
+ в данном случае..
#34 by DmitrO
вырубить анонимную, поставить только обычную, и имя пользователя: DOMAINUSER должно работать
#35 by DmitrO
DOMAIN - краткое имя домена
#36 by unkairosed
Почему нет? Если использовать анонимную проверку подлинности и вместо доменных логина и пароля использовать логин и пароль пользователя 1С при обращении к веб-сервису со стороны мобильного приложения, все отлично отрабатывает, я знаю в коде операции веб-сервиса центральной базы ЗУП, какой пользователь просит данные по ЗП, и даю ему его данные.
#37 by DmitrO
и в 1С должен быть пользователь с включенной аутентификацией ОС с такой записью о учетке \DOMAINUSER, кроме того у него должны быть права на отработку этого веб-сервиса
#38 by unkairosed
Попробовал, ничего не изменилось.
#39 by DmitrO
еще попробуй имя пользователя указать просто USER, чета я сомневаться стал в том что можно домен вообще указать..
#40 by DmitrO
имя пользователя и пароль только на латиннице?
#41 by unkairosed
Пользователь с включенной аутентификацией ОС есть (при этом аутентификация 1С:Предприятия отключена). Права на обработку веб-сервиса - что под этип подразумевается? разрешения для пользователя стоят, кроме того пользователь включен в группу IIS_IUSRS.
#42 by unkairosed
Да, все везде на латинице.
#43 by Kalambur
журнал аудита посмотреть не предлагать?
#44 by arsik
А не проще по мылу расчетки рассылать ежемесячно?
#45 by unkairosed
Не помогло.
#46 by unkairosed
Оно-то может и проще, но стоит именно такая задача. Думаю, все упирается в какие-то настройки, о которых я, к сожалению, не знаю.
#47 by DmitrO
у каждого метода веб-сервиса в ролях 1С есть право Используется.
#48 by unkairosed
Это выставлено.
#49 by arsik
Как вариант сделать обычный транспорт. 1) Веб Сервер с ПХП, к нему обращаются юзеры со своими учетками. 2) На внутри пхп выполнять вызов вебсервиса и параметром передавать туда имя пользователя. 3) Отдать то что получилось в 2)
#50 by DmitrO
у меня кончились идеи.. :) после этого я обычно проверяю сам и прошу версию платформы, но так лениво..
#51 by unkairosed
Спасибо, возможно. Но хочется верить, что задачу можно решить имеющимися средствами.
#52 by unkairosed
Я на всякий случай оставлю версию платформы: 8.3.5.1068, IIS 7.5 :)
#53 by unkairosed
Вопрос по-прежнему актуален, возможно, у кого-то появятся еще идеи.
#54 by Cube
Я так и не понял: ты что, утверждаешь, что где-то когда-то видел, чтобы веб-сервис 1С исполнялся от имени разных пользователей домена? Что-то из разряда фантастики...
#55 by Cube
+ Немного не правильно выразился: веб-сервер запущен под контретным пользователем домена. К веб-сервису 1С обращается веб-сервер, соответственно, всегда под одним пользователем. Разве может веб-сервер исполнять 10 процессов под 10 пользователями домена?
#56 by unkairosed
Допустим, ты прав, к веб-сервису обращается веб-сервер, запущенный под конкретным пользователем домена, и никак иначе быть не может, т.е. невозможно обращаться к веб-сервису от имени разных пользователей домена, только от имени пользователя, под которым запущен веб-сервер. Почему тогда при обращении к самому приложению (не к веб-сервису), опубликованному на веб-сервере, через веб-клиент (браузер) аутентификация ОС срабатывает? В чем разница?
#57 by Cube
ХЗ, перед таким вопросм я бессилен... :)
#58 by MM
не знаю деталей работы веб-сервера, но в ОС есть функционал олицетворения (имперсонализации), когда поток временно получает права клиента, запрос которого обрабатывает. Естественно, клиента перед этим проверяют, и, обычно, делают это без запроса пароля - средствами доверия в сети.
#59 by DmitrO
провел испытания.. По тому что написано в : похоже что это так было в 8.2. В 8.3 так: пункт 1 (про анонимную на IIS) - все также; пункт 2 (про обычную на IIS) - имя пользователя и пароль передаваемый SOAP-клиентом в HTTP запросе должны совпадать с именем и паролем пользователя 1С предприятия. Проверка подлинности Windows на IIS - мне так и не удалось заставить работать SOAP-клиента 1C с такой аутентификацией на IIS, подозреваю что это не возможно в принципе, ибо такая аутентификация подразумевает двухсторонний обмен данными между клиентом и сервером, т.е. несколько запросов туда сюда, он так попросту не умеет, а браузеры умеют.
#60 by DmitrO
Уточнение. пункт 2 (про обычную на IIS) - имя пользователя и пароль передаваемый SOAP-клиентом в HTTP запросе для аутентификации на IIS должны совпадать с именем и паролем пользователя 1С предприятия. Т.о. у нас и в AD и в 1С должен быть пользователь с одинаковым имененм и паролем.
#61 by DmitrO
Т.о. твою задачу проще всего решить используя анонимную аутентификацию на IIS и создавая пользователей в 1С для получения РЛ с правами на выполнение метода веб-сервиса.
#62 by Cube
Не правильно. У пользователя 1С вообще можно пароль не указывать, достаточно поставить аутентификацию ОС и указать пользователя домена, под которым запущен веб-сервер.
#63 by DmitrO
тут решается другая задача, здесь надо чтобы в 1С пользователь авторизовался зависимости от переданных учетных данных, а не всегда одинаково (как запущен вебсервер).
#64 by Cube
А это я не внимательно прочел)) Тогда я не понял, у тебя что-ли получилось обратиться к веб-сервису под разными пользователями домена?
#65 by DmitrO
да
#66 by Cube
Только по логину паролю или по доменной авторизации тоже получилось?
#67 by DmitrO
Обычная проверка подлинности IIS. Подразумевает передачу логина и пароля. IIS при этом делает аутентификацию по каталогу пользователей AD, в настройках проверки подлинности на IIS можно задать домен по умолчанию.
#68 by Cube
Ну понятно, шляпа, короче... Такое и средствами веб-сервиса можно забубенить... :)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С