Вход с помощью сеанса операционной системы#

Способ входа с использованием сеанса операционной системы позволяет пользователям не проходить дополнительно идентификацию и аутентификацию в Blitz Identity Provider, если они ранее вошли со своего ПК в сеть организации и прошли идентификацию и аутентификацию в операционной системе (вошли в сетевой домен). Такие пользователи получат возможность сквозной идентификации при доступе ко всем приложениям, подключенным к Blitz Identity Provider.

Для входа с помощью сеанса операционной системы в организации должен быть развернут Kerberos-сервер (отдельно или в составе контроллера домена организации) и выполнены описанные ниже настройки.

Настройки контроллера домена (Kerberos-сервера)#

В контролере домена необходимо зарегистрировать учетную запись для сервера Blitz Identity Provider. Для созданной учетной записи нужно на странице Account в блоке Account options оснастки контроллера домена включить настройки User cannot change password и Password never expires.

Также следует отметить опции This account supports Kerberos AES 256 bit encryption и запретить предварительную аутентификацию Do not require Kerberos preauthentication.

В оснастке управления групповыми политиками следует настроить политику Configure encryption types allowed for Kerberos, указав следующие возможные значения: RC4_HMAC_MD5, AES128_HMAC_SHA1 и AES256_HMAC_SHA1.

Пример настройки:

../_images/203.png

Далее необходимо создать Service Principal Name (SPN) для идентификации сервера Blitz Identity Provider сервером Kerberos. Это выполняется с помощью следующей команды:

ktpass -princ HTTP/idp.company.ru@DOMAIN.LOC -mapuser DOMAIN\blitzidpsrv -out C:\temp\spnego_spn.keytab -mapOp set -crypto ALL -ptype KRB5_NT_PRINCIPAL /pass SecretPassword

Параметры команды ktpass:

  • значение параметра mapuser – имя созданной в домене учетной записи сервера Blitz Identity Provider, например, DOMAIN\blitzidpsrv;

  • значение параметра princ – имя SPN сервера с Blitz Identity Provider для идентификации в среде Kerberos. Это имя состоит из имени хоста сервера с Blitz Identity Provider, имени Kerberos Realm в верхнем регистре (обычно совпадает с именем домена) и используемого транспортного протокола (HTTP). Пример значения SPN – HTTP/idp.company.ru@DOMAIN.LOC. Важно, чтобы HTTP/ в начале имени SPN указывалось именно большими буквами, как в примере.

  • параметр mapOp – если задан в значение add, то новый SPN будет добавлен к существующим. Если задано значение set, то SPN будет перезаписан.

  • параметр out – задает путь к генерируемому keytab-файлу. Например, C:\temp\spnego_spn.keytab;

  • параметр /pass – значение пароля от учетной записи сервера Blitz Identity Provider в домене.

  • параметры crypto и ptype задают ограничения на используемые алгоритмы и тип генерируемой Kerberos-службы. Рекомендуется задать параметры как в указанном примере -crypto ALL -ptype KRB5_NT_PRINCIPAL.

Сгенерированный keytab-файл необходимо сохранить. Он будет необходим для последующей настройки в консоли управления Blitz Identity Provider.

Настройки в консоли управления Blitz Identity Provider#

Необходимо перейти в консоли управления в разделе Аутентификация к настройкам способа входа Вход по сеансу операционной системы. В открывшемся окне необходимо загрузить сгенерированный ранее keytab файл. Имя SPN при этом будет задано автоматически в соответствии с загруженным файлом.

По результатам загрузки keytab-файла будет отображаться информация о соответствующей Kerberos-службе.

При необходимости можно:

  • удалить загруженный keytab-файл;

  • загрузить еще keytab-файлы, в случае подключения Blitz Identity Provider к нескольким контроллерам домена.

../_images/keytab-loaded.jpg

Далее необходимо определить параметры соответствия Kerberos-токена (TGS) и учетной записи в Blitz Identity Provider.

../_images/image021.png

Например, можно задать соответствие, что получаемый из Kerberos-токена идентификатор пользователя (username) должен соответствовать атрибуту sAMAccountName, получаемому из LDAP-каталога (Microsoft Active Directory).

Далее необходимо установить параметры задержек при использовании метода входа с использованием сеанса операционной системы.

../_images/image022.png

Blitz Identity Provider предоставляет два возможных сценария использования входа по сеансу операционной системы:

Основной сценарий. Пользователи входят в операционную систему, и после этого должны сквозным образом входить во все приложения, подключенные к Blitz Identity Provider. Предоставлять пользователям возможность войти в приложения под другой учетной записью не требуется. В этом случае нужно установить Время задержки перед запуском метода, равное 0 секунд. При обращении к приложению сразу будет произведена попытка сквозного входа по сеансу операционной системы.

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

Время ожидания получения токена нужно установить достаточным, чтобы Kerberos сервер успевал предоставить ответ Blitz Identity Provider. Обычно достаточно установить 5 секунд.

Как и в случае входа по логину и паролю, по умолчанию поиск пользователей для аутентификации происходит во всех активных хранилищах. В блоке Правила выбора хранилища атрибутов можно настроить правила, при выполнении которых поиск пользователя будет осуществляться в определенном хранилище.

Настройки браузеров пользователей#

В зависимости от используемого пользователем браузера может потребоваться его дополнительная настройка для поддержки Kerberos-идентификации.

Для браузеров под операционной системой Windows нужно задать следующие настройки:

  • открыть ПускПанель управления, изменить вариант просмотра с Категория на Мелкие значки, в открывшихся настройках выбрать Свойства браузера;

  • в новом окне выбрать БезопасностьМестная интрасеть и нажать кнопку Сайты. В открывшемся окне нажать кнопку Дополнительно и внести сайт с Blitz Identity Provider в список сайтов Местная интрасеть, нажав Добавить;

  • в окне Свойства: ИнтернетБезопасностьМестная интрасеть нажать кнопку Другой…. В открывшемся окне найти настройку Проверка подлинности пользователяВход. Установить ее в значение Автоматический вход в сеть только в зоне интрасети.

../_images/image024.png
../_images/image025.png
../_images/image025_n.png

Можно не задавать для операционной системы Windows описанные выше настройки и в качестве альтернативы для возможности входа по сеансу операционной системы в браузере Google Chrome тогда можно запускать браузер со следующими параметрами запуска:

Chrome.exe –auth-server-whitelist="idp.domain.ru" –auth-negotiate-delegatewhitelist="idp.domain.ru"  –auth-schemes="digest,ntlm,negotiate"

Где в качестве idp.domain.ru нужно указать URL сайта Blitz Identity Provider.

Также можно задать следующие настройки в реестр Windows, чтобы запускать браузер Google Chrome без параметров запуска.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google]

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
"AuthNegotiateDelegateWhitelist"="idp.domain.ru"
"AuthSchemes"="basic,digest,ntlm,negotiate"
"AuthServerWhitelist"="idp.domain.ru"

Для Mozilla Firefox нужно задать следующие настройки (для любых операционных систем):

  • в адресной строке браузера ввести about:config и нажать Enter. В следующем окне ввести network.nego в поле Фильтры. Дважды нажать на найденной записи network.negotiate-auth.trusted-uris и установить в ней значение URL сайта с Blitz Identity Provider, например, idp.domain.ru. При указании адресов можно использовать звездочку (*) и указать несколько URL через запятую, например: https://*.idp.domain.ru,http://*.idp.domain.ru. Закрыть всплывающее окно кнопкой ОК.

  • дважды нажать на найденной записи network.negotiate-auth.delegation-uris и установить в ней значение URL сайта с Blitz Identity Provider, например, idp.domain.ru. При указании адресов можно использовать звездочку (*) и указать несколько URL через запятую, например: https://*.idp.domain.ru,http://*.idp.domain.ru. Закрыть всплывающее окно кнопкой ОК.

  • открыть параметр network.auth-sspi, установить его значение в true;

  • перезапустить браузер.

Для Google Chrome в macOS и в Linux нужно осуществлять запуск Google Chrome специальным образом:

"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --args --auth-server-whitelist="idp.domain.ru" --auth-negotiate-delegate-whitelist="idp.domain.ru"

Где в качестве idp.domain.ru нужно указать URL сайта Blitz Identity Provider.

Для Apple Safari в macOS отдельная настройка не требуется.

Настройки запуска приложений Blitz Identity Provider#

У пользователей могут возникнуть проблемы при входе по сеансу операционной системы, если они используют браузер Internet Explorer, и если в домене их учетная запись включена во многие группы безопасности, либо если DN учетной записи достаточно длинный. Чтобы избежать такой ситуации, необходимо при запуске приложения сервиса аутентификации blitz-idp задать специальный JAVA-параметр, определяющий большой допустимый размер HTTP-заголовка. Для этого необходимо отредактировать файл /etc/default/blitz-idp. В параметр JAVA_OPTS добавить ключ:

-Dakka.http.parsing.max-header-value-length=16K

Настройки веб-сервера#

У пользователей могут возникнуть проблемы при входе по сеансу операционной системы, если они используют браузер Internet Explorer, и если в домене их учетная запись включена во многие группы безопасности, либо если DN учетной записи достаточно длинный. Чтобы избежать такой ситуации, необходимо скорректировать настройки веб-сервера, определяющие допустимый размер буферов заголовков.

Рекомендуемые значения буферов для nginx приведены ниже:

proxy_buffer_size 16k;
proxy_buffers 4 16k;
proxy_busy_buffers_size 16k;
client_body_buffer_size 16K;
client_header_buffer_size 16k;
client_max_body_size 8m;
large_client_header_buffers 2 16k;

Отладка проблем с входом по сеансу операционной системы#

Если при выполненных настройках у пользователей все же не работает вход по сеансу операционной системы, то рекомендуется на компьютере пользователя в командной строке выполнить следующую команду:

klist

Если команда успешно вернет TGS мандаты для SPN, настроенного для Blitz Identity Provider, значит нужно проверять корректность настроек на стороне браузера пользователя и в Blitz Identity Provider. Если TGS мандаты для Blitz Identity Provider отсутствуют, то можно их запросить, используя следующую команду (необходимо указать правильные SPN и имя домена компании):

klist get HTTP/idp.company.ru@DOMAIN.LOC

Если команда не вернет полученных TGS мандатов, значит нужно проверять корректность настроек на Kerberos-сервере.