Не проходит доменная авторизация 1с iis
Для каких случаев данное решение:
- У Вас IIS версии 5.1 или выше
- Используется доменная аутентификация для сайта (Windows Authentication)
- Вы пытаетесь локально (на той же машине, где находится сам IIS) открыть сайт, у которого применена доменная авторизация
- Вы пытаетесь локально обратиться к сервисам на IIS по доменной авторизации (например, если на этом же сервере установлен кластер 1С, а в серверном коде производится попытка обратиться к сервисам на локальном IIS)
An account failed to log on.
Subject:
Security ID: NULL SID
Account Name: -
Account Domain: -
Logon ID: 0x0
Logon Type: 3
Account For Which Logon Failed:
Security ID: NULL SID
Account Name: username
Account Domain: domainname
Failure Information:
Failure Reason: An Error occured during Logon.
Status: 0xC000006D
Sub Status: 0x0
Process Information:
Caller Process ID: 0x0
Caller Process Name: -
Network Information:
Workstation Name: SRV-PRG
Source Network Address: -
Source Port: -
Detailed Authentication Information:
Logon Process:
Authentication Package: NTLM
Transited Services: -
Package Name (NTLM only): -
Key Length: 0
Как вариант решения: в реестре необходимо указать хост, к которому Вы разрешаете подключаться при помощи доменной аутентификации.
Для этого находим в реестре следующую ветку:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
Создаем новый ключ:
- Тип - Multi-String Value
- Имя - BackConnectionHostNames
- В значениях ключа указать нужные адреса.
После настройки - перезагрузите IIS.
Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.
Пошаговая инструкция как настроить web-доступ к базам 1С.
Писал для себя как инструкцию чтобы не забыть в будущем. Может еще кому пригодится как инструкция.
(1) Danila-Master , Удалось настроить сквозную аутентификацию когда IIS И сервер приложений на разных машинах?
(7)(1) Т.е. при развёртывании веб-сервера и сервера 1С на одной машине у всех ОС аутентификация отрабатывает? Тоже столкнулся с тем, что на разных машинах она не работает. В документообороте сотрудников планируется не менее 100, заморочки с паролями в 1С ещё не хватало когда домен есть ((.
(7)(1) Нам помогло добавление провайдера Windows-аутентификации. С Internet Explorer 8 и FireFox (только после установки наивысшего приоритета для Kerberos) ОС-аутентификация в 1С заработала. в Chrome, я так понимаю, kerberos по умолчанию отключен, пока не разбирался. Сам занимаюсь только 1С, нашел где-то комментарий о необходимости добавить провайдера. Как именно это сделал сис.админ не знаю, скорее всего в консоли домена.
Все отлично, но смутило вот что:
1. Не увидел у вас необходимость установки модулей расширения веб-сервера требуемой разрядности.
- это не так, правильно сказать, что при выполнении публикации из конфигуратора, публикация всегда происходит для 32-разрядного модуля расширения веб-сервера.
После публикации на веб-сервере из конфигуратора, в случае использования 64-х разрядной операционной системы на компьютере который используется в качестве сервера IIS, необходимо настроить работу с библиотеками 1С.
- тоже не совсем так. Настройку обработчика следует производить, если необходимо использовать 64-разрядный модуль расширения веб-сервера. Разрядность системы может быть х64, а модуль расширения установлен х32. В этом случае обработчик настраивать не надо, а необходимо разрешить 32-разрядные приложения для пула, обслуживающего данное виртуальное приложение.
4. Зачем брандмауэр отключать?
При установки роли IIS, правило в брандмауре должно создаваться автоматически. Если этого не случилось, нужно просто добавить разрешающее правило для входящих подключений по протоколу TCP для 80-ого порта.
на serv-2 поднята IIS и настроена сквозная доменная авторизация, которая замечательно работает с сервером 1с на serv-2, но вот на сервер 1с который стоит на serv-1 доходит запрос на подключение без указания домена.
на сколько я понимаю проблема в длинном доменном имени, которое 1с (точнее ее длл которая прикручена к IIS) не может скушать. Вроде для 1с нужно нетбиос имя домена.
>а в имперсонализации.
с этим борются через trust computer for delegation
два сервера в одном домене .
когда IIS и 1с на одном сервере - все работает, когда на разных (но в одном домене) - нет
(4) при чем тут делегирование билета?
обьясните на пальцах чего надо сделать/попробовать или теорию
Есть старая темя на партнерке, но там некоторые пишут, что им не помогло. https://partners.v8.1c.ru/forum/message/890925
"Windows Server 2008, в отличии от Win2003, не позволяет использовать многократную передачу «билета» NTLM при использовании многозвенной архитектуры. Для решения проблемы попробуйте выполнить следующие настройки:
На клиентской рабочей станции настройте Internet Explorer таким образом, чтобы он использовал аутентификацию Windows, а также добавьте адрес сайта в зону локальной сети, поскольку для зоны Internet браузер не использует аутентификацию Windows. Для этого:
- Запустите браузер Internet Explorer. В строке меню выберите пункт "Tools" и выберите команду "Internet Options". Перейдите на вкладку "Advanced" установите флажок напротив пункта "Enable Integrated Windows Authentication".
- Перейдите на вкладку "Security" выберите зону для изменения "Local intranet", нажмите кнопку "Sites" укажите имя web-сервера, нажмите "Add".
Настройте Web-сервер таким образом, чтобы он использовал аутентификацию Windows и отключите использование анонимного доступа, так как если он включен то web-сервер сначала пытается воспользоваться этим способом аутентификации. Для этого:
- Запустите оснастку iis.msc находящуюся в каталоге "%SystemRoot%\system32\inetsrv\iis.msc" перейдите в раздел "Web Sites - Default Web Sites - " из контекстного меню выберите "Properties". Перейдите на вкладку "Directory Security" нажмите кнопку "Edit" в разделе "Authentication and access control". Установите флажок "Integrated Windows authentication". Остальные флажки должны быть обязательно сняты.
Настройте Active Directory для делегирования полномочий Kerberos (необходимы права администратора домена). Для этого:
- Разрешите делегирование web-серверу. На контроллере домена откройте оснастку "Active directory users and computers", в группе "Computers" выберите компьютер являющийся web-сервером, откройте его свойства. Если функциональный уровень домена "Windows Server 2003", то выберите вкладку "Delegation" и установите флажок "Trust this computer for delegation to any services (Kerberos only)", если функциональный уровень домена "Windows 2000", то на вкладке "General" установите флажок "Trust this computer for delegation".
- Разрешите делегирование пользователю. На контроллере домена откройте оснастку "Active directory users and computers", в группе "Users" выберите пользователя, откройте его свойства. На вкладке "Delegation" установите флажок "Trust this user for delegation to any services (Kerberos only)" и убедитесь, что на вкладке "Account" в разделе "Account options" снят флажок для пункта "Account is sensitive and cannot be delegated"."
---------------------------------------------
IIS создает отдельную сессию и ее авторизует по керберосу, сессия эта работает под службой IIS которая запущена под системной учеткой.
билет кербероса хранится в связке с этой сесией.
далее IIS вызывает DLL 1с, скорее всего в DLL вполне удачно передается билет кербероса.
далее DLL дает запрос на сервер 1с, при этом серверу 1с билет не достается, а достается текстовое поле "домен\пользователь" + его пароль
--------------------------------------------------------
все тоже самое только DLL передает серверу 1с поле "пользователь" + его пароль (это я точно знаю так как парсил трафик), по сколько домена нет сервер не знает где его авторизовать.
--------------------------------------------------
я тут вижу 2 проблемных места
1. возможно в первом варианте сервер 1с как-то умеет авторизовать юзера даже без передачи ей имени домена
Добрый день, коллеги.
Помогите в решении следующей проблемы:
1. Server 2012 R2 роль IIS. В AD включено делегирование любых служб для протокола Kerberos. Для сайта включена проверка подлинности Windows, в качестве поставщика указан только Negotiate:Kerberos.
2. Server 2008 R2 роль сервер 1С;
3. Server 2008 R2 роль AD;
4. Windows 7 SP1 клиент.
Необходимо реализовать схему прозрачной авторизации на сервере 1С для авторизованного в системе пользователя. При попытке пользователя подключится к базе 1С выскакивает запрос на ввод данных для подключения. В 1С настроена авторизация пользователей из AD. В IE сайт добавлен в интрасеть и в настройках стоит галочка входить с учетными данными системы.
IIS:
Субъект:
ИД безопасности: NULL SID
Имя учетной записи: -
Домен учетной записи: -
Код входа: 0x0
Уровень олицетворения: Делегирование
Новый вход:
ИД безопасности: DOMAIN\dobrynin
Имя учетной записи: dobrynin
Домен учетной записи: DOMAIN
Код входа: 0xE6A42
GUID входа:
Сведения о процессе:
Идентификатор процесса: 0x0
Имя процесса: -
Сведения о сети:
Имя рабочей станции:
Сетевой адрес источника: 10.100.103.33
Порт источника: 62141
Сведения о проверке подлинности:
Процесс входа: Kerberos
Пакет проверки подлинности: Kerberos
Промежуточные службы: -
Имя пакета (только NTLM): -
Длина ключа: 0
Данное событие возникает при создании сеанса входа. Оно создается в системе, вход в которую выполнен.
Сервер 1С:
Субъект:
ИД безопасности: NULL SID
Имя учетной записи: -
Домен учетной записи: -
Код входа: 0x0
Новый вход:
ИД безопасности: АНОНИМНЫЙ ВХОД
Имя учетной записи: АНОНИМНЫЙ ВХОД
Домен учетной записи: NT AUTHORITY
Код входа: 0xadfbf48
GUID входа:
Сведения о процессе:
Идентификатор процесса: 0x0
Имя процесса: -
Сведения о сети:
Имя рабочей станции: SRV-WEB02
Сетевой адрес источника: -
Порт источника: -
Сведения о проверке подлинности:
Процесс входа: NtLmSsp
Пакет проверки подлинности: NTLM
Промежуточные службы: -
Имя пакета (только NTLM): NTLM V1
Длина ключа: 128
Данное событие возникает при создании сеанса входа. Оно создается в системе, вход в которую выполнен.
Для srv-web02 настроены следующие SPN:
Приветствую всех, если вас заинтересовала статься значит вы тем или иным образом стыкались или интересовались данным вопросом, либо просто почитать.
Данный кейс с реальной практики, проект начался в начале 2019 и все "n" баз были переведены в течении полугода на доменную авторизацию (надеюсь все понимают, что это значит), но мне больше нравится SSO.
Значит что имеем:
Windows Server 2016 + AD (не рассматриваем как настраивать)
CentOS 7 + Haproxy + Comodo SSL Wildcard
Windows Server 2016 + IIS + 1C
Примерная схема работы
Вроде все понятно, конечно если об этом вы слышите в первый раз, то нужно будет почитать дополнительные материалы как настраивается каждый сервис.
Двигаемся дальше и приступаем к настройке наших сервисов
Можно так же использовать сертификаты Let's Encrypt но у меня есть подписанный ЦС, а еще может быть что клиент 1С на разных ОС будет ругаться на Let's Encrypt. Если у вас кластер 1С тогда нужно добавить еще один сервер rt_db_srv02 в backend rt_db_server
Настройка IIS, тут уже будет больше картинок.
После инстала IIS, включаем только 80й порт остальные нам не нужны так как ssl будет занимается haproxy. На картинке ниже роли, которые нужно поднять:
компоненты IIS
Я это все делаю с помощью Ansible, поэтому готовых команд PS под рукой нет. Идем дальше и не к настройке IIS, а к установке 1С:
Ставим все кроме хранилища, ковертора и проверки целосности
По стандарту заходим в консоль администрирования 1С подключаем базу и тд. В клиенте 1С на сервере на котором бы будем делать публикацию прописываем имя сервера (у нас же AD и DNS внутренний) можно без порта, но естественно если порт у вас отличный от стандартного (например, подняли еще одну службу на 1640), то его писать тоже нужно типа server1С1:1641, но если у вас кластер тогда пишем так server1С1;server1С2 (server1С1:1641;server1С2:1641) и нормальные имена нужно прописывать обязательно, так как это пойдет в конфиг IIS. Чуть не забыл, после инсталляции 1С службу, которую она создаст, необходимо запустить от имени доменного пользователя, на сервер 1С его нужно будет сделать админом, а в домене может быть обычным пользователем. главное что б мог читать пользователей с AD. Например
запуск службы от доменного пользователя
Публикуем базу как обычно, все по дефолту, с необходимыми галочками в hs/ws
Настройки веб-сайт
Веб сайт есть, а далее вместе с ним создается и пул приложений. который нам больше всего и нужно, так как в нем мы задаем кто будет авторизовать креды пользователей в 1С и расшифровывать karberos. Для этого нам нужен еще один доменный пользователь желательно отдельный, например iis_service (создаём помним пароль)))
Так он выглядит стандартно:
Приводим его в нужный вид, редактируя удостоверение:
Тюним, Режим управления выставляем Классический и нужно что б это удостоверение использовалось для этого делаем в редакторе конфигурации сервер (путь system.webServer/security/authentication/windowsAuthentication).
делаем так
С этим все готово. Для корректной работы, необходимо в AD прописать spn запись, это просто заходим на домен контроллер и запускаем команды, в которых пишем нашу публикацию и нашего пользователя, который расшифровывает kerberos:
В 1С пользователю вставляем авторизацию как на картинке:
Со списка доменов нужно выбрать тот, что большими буквами и в виде короткой записи.
на этом пока все. возможно еще подкорректирую статью, пост был важен для меня, так как при работе с проектом нужно было много разбираться и собирать по кусочкам. а что-то и самому изобретать. Надеюсь, статья будет полезна тем, кому необходимо решить аналогичный кейс.
В следующей статье напишу про то, как мы сделали веб страничку с сеансами пользователей и возможностью их удаления.
Читайте также: