Настройка сквозной авторизации при использовании веб-фермы
Перед прочтением данной статьи необходимо ознакомиться с инструкциями по настройке веб-фермы и по настройке сквозной авторизации.
Для примеров настройки будем считать, что у нас есть:
- домен Active Directory с именем mycompany (mycompany.com);
- имя компьютера контроллера ARR – elma;
- имена компьютеров с ELMA – elma1 и elma2;
- имя пользователя, под которым будет работать ELMA – mycompany\elma_user.
Предварительные действия:
- В домене Active Directory создать пользователя, под которым будут запускаться пулы приложений серверов ELMA, а также пул приложений на контроллере ARR. Либо использовать существующего пользователя из этого домена. В наших примерах – mycompany\elma_user.
- Убедиться, что и компьютер с контроллером ARR, и компьютеры с сервером ELMA находятся в том же домене, что и пользователь (в нашем примере – домен mycompany).
Для настройки необходимо сделать следующее:
1. Настроить ферму веб-серверов в соответствии с инструкцией (https://www.elma-bpm.ru/kb/article-694.html) и убедиться в ее работоспособности.
2. Настроить сквозную авторизацию в соответствии с инструкцией (https://www.elma-bpm.ru/kb/help/EleWise.ELMA.BPM.Web.Common/Content/Help/WebHelp/scr/Admin/Through_autorization/index.html). В указанной инструкции необходимо изменить следующие настройки, чтобы обеспечить сквозную авторизацию на ферме серверов:
- в диалоге выбора поставщиков Windows-авторизации (п. 4 в статье KB) поставить на 1-е место Negotiate и нажать ОК:
- перейдите по ссылке Дополнительные параметры в правом меню и в открывшемся диалоговом окне установите флаг в поле Включить проверку подлинности в режиме ядра и нажмите Ок:
- далее перейти в раздел «Редактор конфигураций» добавленного приложения SSPI;
- затем в выпадающем списке выбрать раздел «system.webServer -> security -> authentication -> windowsAuthentication»;
- в настройках для параметров authPersistNonNTLM, authPersistSingleRequest, enabled, useAppPoolCredentials и useKernelMode установить значение «True»;
3. В дополнительных настройках пулов приложений указать запуск от имени mycompany\elma_user:
- для серверов ELMA («elma1» и «elma2») – у пула сайта ELMA (для Корпоративной редакции по умолчанию «ELMA3-Enterprise»).
4. Для веб-сайта по умолчанию («Default Web Site») на стороне контроллера (сервер «elma») нужно включить анонимную авторизацию (остальные типы авторизации выключить). Для этого необходимо перейти в раздел «Проверка подлинности» данного сайта и оставить включенным только пункт «Анонимная проверка подлинности».
5. Следующим шагом является настройка пула приложений IIS. В дополнительных настройках пулов приложений укажем запуск от имени mycompany\elma_user:
- для контроллера (сервер «elma») – у пула по умолчанию (DefaultAppPool);
6. Установить SPN для каждого сервера ELMA и контроллера (привязать их адреса к пользователю, под учетной записью которого будут работать пулы приложений). Сделать это можно либо через команду SETSPN (выполнять в командной строке), либо через консоль управления «Редактирование ADSI» (adsiedit.msc).
После установки SPN необходимо перезагрузить все сервера. Кроме того, даже после перезагрузки изменения могут примениться не сразу.
Пример использования командной строки:
SETSPN -S HTTP/elma.mycompany.com mycompany\elma_user
SETSPN -S HTTP/elma1.mycompany.com mycompany\elma_user
SETSPN -S HTTP/elma2.mycompany.com mycompany\elma_user
Пример использования консоли управления «Редактирование ADSI»:
Находим в дереве «CN=Users» пользователя elma_user и в контекстном меню нажимаем «Свойства».
В появившемся окне на вкладке «Редактор атрибутов» необходимо найти атрибут «servicePrincipalName», нажать «Изменить» и добавить туда имена всех серверов ELMA, а также имя контроллера.
7. Проверить работу сквозной авторизации сначала на каждом из серверов, а затем через сервер контроллера.
- в п. 2 настоящей инструкции также указать поставщика Negotiate:Kerberos первым в списке;
- в п. 4 следует на стороне контроллера выбрать авторизацию через Kerberos, т.е. оставить включенным только пункт «Проверка подлинности Windows» и в списке поставщиков выбрать Negotiate:Kerberos;
- далее следовать пунктам 5 и 6;
На следующем шаге необходимо настроить делегирование Kerberos в AD. Для этого для контроллера необходимо добавить тип службы http и указать имена серверов фермы, а на серверах фермы - добавить тип службы http и указать имя контроллера:
Поэтому необходимо убедиться, что в домене нет повторяющихся имен. Для этого можно запустить cmd.exe и выполнить команду: setspn /x
Если дубликаты будут найдены, их необходимо будет удалить.
После этого производится настройка файла подключения к базе. Для этого следует открыть файл Configuration.config и добавить в него строку:
Также изменения необходимо внести в файл Web.config.xslt. В файл добавим строку:
Данную настройку не требуется производить для версий системы ELMA, начиная с 3.11 и выше!
Для работы программы ELMA Agent с Kerberos, необходимо первый раз запустить его с параметром USINGKERBEROSONWFBALANCE=True.
Настройки для работы с Kerberos произведены. Далее следовать п. 7.
Для того, чтобы после обновления веб-фермы сквозная авторизация продолжала корректно работать, перед началом процедуры обновления необходимо:
- создать копию файла config, расположенного в папке ../<Общая папка с файлами системы ELMA>/Web/;
- произвести обновление веб-фермы;
- переименовать обновленный файл config, расположенный в папке ../<Общая папка с файлами системы ELMA>/Web/, следующим образом Settings_<номер_обновленной_версии_системы>.config. Например, Settings_3_13_13.config;
- скопированный ранее файл переместить в папку ../<Общая папка с файлами системы ELMA>/Web/.
См. также полезные статьи (на английском языке):