В этой статье:

Раздел MultiDomain

Дополнительные контроллеры домена

Настройки домена или поддомена

Учётные данные для подключения к серверу службы каталогов

Механизм работы со службами каталогов

«Форсайт. Аналитическая платформа» получает информацию о доменных субъектах безопасности из службы каталогов домена или глобального каталога, которые должны быть настроены в компьютерной сети. Взаимодействие со службой каталогов осуществляется по протоколу LDAP/LDAPS.

Если предполагается вход в репозитории с использованием доменной/интегрированной доменной аутентификации, то для поиска и добавления доменных пользователей и/или групп в менеджере безопасности задайте параметры сопоставления атрибутов службы каталогов и атрибутов субъектов безопасности «Форсайт. Аналитическая платформа», а также укажите учётные данные для подключения к службе каталогов в файле settings.xml. При необходимости для доменов или поддоменов подключите дополнительные контроллеры.

Примечание. Настройки конфигурации файла settings.xml для веб- и настольного приложения должны совпадать при одновременной работе в ОС Linux и Windows с одним репозиторием.

Примеры файла settings.xml для службы каталогов Active Directory в зависимости от типа ОС, на базе которой работает «Форсайт. Аналитическая платформа»:

<Configuration>
  <Root>
    <Key Name="PP">
      <BIS>
        <Key Name="System">
          <MultiDomain>
            <Key Name="наименование домена 1" aliases="список альтернативных наименований домена 1" Proto="LDAP" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" base="dc=...,dc=..." libldap="libldap-2.4.so.2" liblber="liblber-2.4.so.2">
              <controllers>
                <Key Name="наименование контроллера 1" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" />
                <Key Name="наименование контроллера 2" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" />
              </controllers>
              <user filter="(&amp;(objectClass=user)(sAMAccountType=805306368))" groupsFilter="(&amp;(member=%1)(objectClass=group)(sAMAccountType=268435456))">
                <Key Name="a0" filter="user" ldap="objectClass"/>
                <Key Name="a1" map_to="DistinguishedName" ldap="distinguishedName" get_full_domain="1"/>
                <Key Name="a2" map_to="Name" ldap="sAMAccountName" make_upn="1"/>
                <Key Name="a3" map_to="Sid" ldap="objectSid"/>
                <Key Name="a4" map_to="DisplayName" ldap="cn"/>
                <Key Name="a5" map_to="Descr" ldap="displayName"/>
                <Key Name="a6" map_to="LookupName" ldap="sAMAccountName"/>
                <Key Name="a7" map_to="LookupName" ldap="userPrincipalName"/>
                <Key Name="a8" map_to="LookupName" ldap="displayName"/>
                <Key Name="a9" map_to="LookupName" ldap="cn"/>
              </user>
              <group filter="(&amp;(objectClass=group)(sAMAccountType=268435456))">
                <Key Name="a0" filter="group" ldap="objectClass"/>
                <Key Name="a1" map_to="DistinguishedName" ldap="distinguishedName" get_full_domain="1"/>
                <Key Name="a2" map_to="Name" ldap="sAMAccountName"/>
                <Key Name="a3" map_to="Sid" ldap="objectSid"/>
                <Key Name="a4" map_to="DisplayName" ldap="cn"/>
                <Key Name="a5" map_to="Descr" ldap="description"/>
                <Key Name="a6" map_to="LookupName" ldap="sAMAccountName"/>
                <Key Name="a7" map_to="LookupName" ldap="description"/>
              </group>
              <credentials realm="" Crs="..." Crsa="..." mechanism="GSSAPI"/>
            </Key>
            <Key Name="наименование поддомена 1" aliases="список альтернативных наименований поддомена 1" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" base="dc=...,dc=...">
              <controllers>
                <Key Name="наименование контроллера 1" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" />
                <Key Name="наименование контроллера 2" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" />
              </controllers>
              <user filter="(&amp;(objectClass=user)(sAMAccountType=805306368))" groupsFilter="(&amp;(member=%1)(objectClass=group)(sAMAccountType=268435456))">
                ...
              </user>
              <group filter="(&amp;(objectClass=group)(sAMAccountType=268435456))">
                ...
              </group>
              <credentials realm="" Crs="..." Crsa="..." mechanism="GSSAPI"/>
            </Key>
            <Key Name="наименование поддомена 2" aliases="список альтернативных наименований поддомена 2" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" base="dc=...,dc=...">
              <controllers>
                <Key Name="наименование контроллера 1" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" />
                <Key Name="наименование контроллера 2" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" />
              </controllers>
              <user filter="(&amp;(objectClass=user)(sAMAccountType=805306368))" groupsFilter="(&amp;(member=%1)(objectClass=group)(sAMAccountType=268435456))">
                ...
              </user>
              <group filter="(&amp;(objectClass=group)(sAMAccountType=268435456))">
                ...
              </group>
              <credentials realm="" Crs="..." Crsa="..." mechanism="GSSAPI"/>
            </Key>
            <Key Name="наименование домена 2" aliases="список альтернативных наименований домена 2" Proto="LDAP" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" base="dc=...,dc=..." libldap="libldap-2.4.so.2" liblber="liblber-2.4.so.2">
              ...
            </Key>
          </MultiDomain>
          <Gssapi libgssapi="libgssapi_krb5.so.2" libkrb5="libkrb5.so.3"/>
        </Key>
      </BIS>
    </Key>
  </Root>
</Configuration>
<Configuration>
  <Root>
    <Key Name="PP">
      <BIS>
        <Key Name="System">
          <MultiDomain>
            <Key Name="наименование домена 1" aliases="список альтернативных наименований домена 1" Proto="LDAP" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" base="dc=...,dc=..." libldap="libldap.dll" liblber="libldap.dll">
              <controllers>
                <Key Name="наименование контроллера 1" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" />
                <Key Name="наименование контроллера 2" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" />
              </controllers>
              <user filter="(&amp;(objectClass=user)(sAMAccountType=805306368))" groupsFilter="(&amp;(member=%1)(objectClass=group)(sAMAccountType=268435456))">
                <Key Name="a0" filter="user" ldap="objectClass"/>
                <Key Name="a1" map_to="DistinguishedName" ldap="distinguishedName" get_full_domain="1"/>
                <Key Name="a2" map_to="Name" ldap="sAMAccountName" make_upn="1"/>
                <Key Name="a3" map_to="Sid" ldap="objectSid"/>
                <Key Name="a4" map_to="DisplayName" ldap="cn"/>
                <Key Name="a5" map_to="Descr" ldap="displayName"/>
                <Key Name="a6" map_to="LookupName" ldap="sAMAccountName"/>
                <Key Name="a7" map_to="LookupName" ldap="userPrincipalName"/>
                <Key Name="a8" map_to="LookupName" ldap="displayName"/>
                <Key Name="a9" map_to="LookupName" ldap="cn"/>
              </user>
              <group filter="(&amp;(objectClass=group)(sAMAccountType=268435456))">
                <Key Name="a0" filter="group" ldap="objectClass"/>
                <Key Name="a1" map_to="DistinguishedName" ldap="distinguishedName" get_full_domain="1"/>
                <Key Name="a2" map_to="Name" ldap="sAMAccountName"/>
                <Key Name="a3" map_to="Sid" ldap="objectSid"/>
                <Key Name="a4" map_to="DisplayName" ldap="cn"/>
                <Key Name="a5" map_to="Descr" ldap="description"/>
                <Key Name="a6" map_to="LookupName" ldap="sAMAccountName"/>
                <Key Name="a7" map_to="LookupName" ldap="description"/>
              </group>
              <credentials realm="" Crs="..." Crsa="..." mechanism="GSSAPI"/>
            </Key>
            <Key Name="наименование поддомена 1" aliases="список альтернативных наименований поддомена 1" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" base="dc=...,dc=...">
              <controllers>
                <Key Name="наименование контроллера 1" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" />
                <Key Name="наименование контроллера 2" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" />
              </controllers>
              <user filter="(&amp;(objectClass=user)(sAMAccountType=805306368))" groupsFilter="(&amp;(member=%1)(objectClass=group)(sAMAccountType=268435456))">
                ...
              </user>
              <group filter="(&amp;(objectClass=group)(sAMAccountType=268435456))">
                ...
              </group>
              <credentials realm="" Crs="..." Crsa="..." mechanism="GSSAPI"/>
            </Key>
            <Key Name="наименование поддомена 2" aliases="список альтернативных наименований поддомена 2" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" base="dc=...,dc=...">
              <controllers>
                <Key Name="наименование контроллера 1" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" />
                <Key Name="наименование контроллера 2" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" />
              </controllers>
              <user filter="(&amp;(objectClass=user)(sAMAccountType=805306368))" groupsFilter="(&amp;(member=%1)(objectClass=group)(sAMAccountType=268435456))">
                ...
              </user>
              <group filter="(&amp;(objectClass=group)(sAMAccountType=268435456))">
                ...
              </group>
              <credentials realm="" Crs="..." Crsa="..." mechanism="GSSAPI"/>
            </Key>
            <Key Name="наименование домена 2" aliases="список альтернативных наименований домена 2" Proto="LDAP" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" base="dc=...,dc=..." libldap="libldap.dll" liblber="libldap.dll">
              ...
            </Key>
          </MultiDomain>
          <Gssapi libgssapi_32="gssapi32.dll" libgssapi_64="gssapi64.dll" libkrb5_32="krb5_32.dll" libkrb5_64="krb5_64.dll"/>
        </Key>
      </BIS>
    </Key>
  </Root>
</Configuration>

Раздел MultiDomain

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

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

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

Особенности использования атрибутов в элементе Key:

При работе с Active Directory учитывайте следующие особенности:

<Key Name="DOMAIN" aliases="domain.server.name" Proto="LDAP" url="ldap://domain.server.name" base="dc=domain,dc=server,dc=name" libldap="libldap-2.4.so.2" liblber="liblber-2.4.so.2">
<Key Name="DMN" aliases="domain.server.name;domain" Proto="LDAP" url="ldap://domain.server.name" base="dc=domain,dc=server,dc=name" libldap="libldap-2.4.so.2" liblber="liblber-2.4.so.2">

При настройке прав доступа и распределении привилегий доменным пользователям через группы учитывайте следующие особенности:

Важно. Значения атрибутов Proto, libldap и liblber, учитываются только в первом указанном элементе Key. Остальные настройки доменов и поддоменов должны соответствовать одному и тому же значению атрибута Proto.

Примечание. Если задан порт глобального каталога (3268 для ldap, 3269 для ldaps), то при выборе пользователей или групп в окне «Поиск пользователей и групп» в веб-приложении будет выполняться поиск всех субъектов в рамках домена и его поддоменов, независимо от указания конкретного домена.

Примечание. Атрибут может быть задан только в одном из файлов: ldap.conf или settings.xml. По умолчанию ldap.conf содержится в папке: /etc/ldap в Debian-подобных дистрибутивах, /etc/openldap в RedHat-подобных дистрибутивах и ALT Linux, C:\OpenLDAP в ОС Windows.

Дополнительные контроллеры домена

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

Список дополнительных контроллеров домена задаётся в разделе controllers с элементами Key в родительском элементе Key, который соответствует заданному основному контроллеру домена или поддомену. Допустимые атрибуты раздела Key:

Пример раздела controllers:

<controllers>
  <Key Name="наименование контроллера 1" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" />
  <Key Name="наименование контроллера 2" url="ldap[s]://IP-адрес или доменное имя сервера:[порт]" />
</controllers>

Настройки домена или поддомена

В каждом домене или поддомене могут содержаться разделы user и group, в которых определены элементы Key.

Особенности использования атрибутов в элементе Key:

Примечание. При использовании значения «Name» с атрибутом make_upn, «DistinguishedName» должен быть задан с атрибутом get_full_domain.

Если атрибут map_to принимает значение «Name» и атрибут ldap принимает значение «sAMAccountName», то к значению, полученному из LDAP-каталога, всегда добавляется имя домена: DOMAIN\ATTRVALUE;

Примечание. Для ldap-атрибута должен быть указан хотя бы один атрибут map_to со значением «LookupName».

При указании способа формирования наименования субъекта «Name» убедитесь, что выполняются следующие условия для имён субъектов:

Субъекты с невалидными именами пропускаются и в лог выводится одна из следующих ошибок:

Если были пропущены все субъекты, то перепроверьте настройки атрибута map_to.

Учётные данные для подключения к серверу службы каталогов

В каждом домене или поддомене должен содержаться элемент credentials с атрибутами:

Совет. В целях безопасности рекомендуется использовать учётные данные в зашифрованном виде. Если указаны обе пары атрибутов Crs/Crsa и username/password, то наибольший приоритет у атрибутов Crs/Crsa.

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

См. также:

Настройки в settings.xml | Аутентификация в продукте