Облачное хранилище

Настройка доменной авторизации (AD) в 1С с публикацией в IIS

Статья взята с хабра и заметно отредактирована для выделения самого процесса настройки доменной авторизации через иис на сервере 1с Предприятие. Собственно поэтому в статье есть отголоски конфигурации из первоисточника, например haproxy, которые к выделенной теме и не относятся.
Имеем:

  • Windows Server 2016 + AD (не рассматриваем как настраивать)
  • Windows Server 2016 + IIS + 1C

Вся инфраструктура доменная, сервер с 1С-на нем поднята только 1С, сама БД на SQL-ных серверах они нам не нужны сейчас. Значит клиент с доменным устройством Windows 10 вошел в систему с доменной учеткой запускает 1С в которой прописана ссылка на базу например https://1cbase.yourdomain.com, обращается в к haproxy, тот в свою очередь согласно правилам адресует его на нужный сервер с этой базой, далее IIS принимает соединение, подхватывает доменные учетные данные и передает их в 1С. Ниже схемка:

Примерная схема работы
Примерная схема работы

Вроде все понятно, конечно если об этом вы слышите в первый раз, то нужно будет почитать дополнительные материалы как настраивается каждый сервис.

Двигаемся дальше и приступаем к настройке наших сервисов

Haproxy

пропускаем [paf]

Настройка IIS

тут уже будет больше картинок

После инстала IIS, включаем только 80й порт остальные нам не нужны так как ssl будет занимается haproxy. На картинке ниже роли, которые нужно поднять:

компоненты IIS
компоненты IIS

Я это все делаю с помощью Ansible, поэтому готовых команд PS под рукой нет. Идем дальше и не к настройке IIS, а к установке 1С:

Ставим все кроме хранилища, ковертора и проверки целосности
Ставим все кроме хранилища, ковертора и проверки целосности

После инсталляции 1С службу, которую она создаст, необходимо запустить от имени доменного пользователя, на сервер 1С его нужно будет сделать админом, а в домене может быть обычным пользователем. главное что б мог читать пользователей с AD. Например

запуск службы от доменного пользователя
запуск службы от доменного пользователя

Публикуем базу как обычно, все по дефолту, с необходимыми галочками в hs/ws

И тут возвращаемся к IIS, тут уже будет публикация в 1С в сайте по умолчанию, а далее вместе с ним создается и пул приложений. который нам больше всего и нужен, так как в нем мы задаем кто будет авторизовать креды пользователей в 1С и расшифровывать kerberos. Для этого нам нужен еще один доменный пользователь желательно отдельный, например iis_service (создаём помним пароль)))

Так он выглядит стандартно:У нашего пула приложений кликаем правой кнопкой -> дополнительные параметры

Приводим его в нужный вид, редактируя удостоверение:

Тюним, Режим управления выставляем Классический и нужно что б это удостоверение использовалось для этого делаем в редакторе конфигурации сервер .(путь system.webServer/security/authentication/windowsAuthentication)

IIS настроен, переходим к нашей публикации, Для начала выставляем проверку подлинности:

С этим все готово. Для корректной работы, необходимо в AD прописать spn запись, это просто заходим на домен контроллер и запускаем команды, в которых пишем нашу публикацию и нашего пользователя, который расшифровывает kerberos:

Setspn /s HTTP/rt yourdomain\iis_service
Setspn /s HTTP/rt.yourdomain.com yourdomain\iis_service

В 1С пользователю вставляем авторизацию как на картинке:

Со списка доменов нужно выбрать тот, что большими буквами и в виде короткой записи.

Все.

Решение возможных проблем (реально может выручить):

  • “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”.”

Всем добра