Trace: » GLPI и LDAP

GLPI и LDAP

Введение

GLPI может использовать один или несколько каталогов LDAP для:

  • аутентификации пользователей;
  • получения данных пользователей (имени, адреса электронной почты, телефона и т.д.).

Возможно импортировать и синхронизировать пользователей двумя способами:

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

GLPI работает с любым LDAP v3 совместимым каталогом. Поэтому он также работает с Microsoft Active Directory.

Все конфигурации доступны в “Настройки/ Аутентификация” в пункте меню “LDAP каталог”.

Если на странице “Настройки/ Аутентификация” вместо пункта меню “LDAP каталог” отображается надпись “Ваш PHP-парсер был собран без модуля LDAP”.

Для Windows вам нужно:

  • Раскомментировать в php.ini файле (это файл расположен в директории установки php) строку extension = php_ldap.dll;
  • В этом же файле проверить, что строке extension_dir соответствует верное значение (путь к папке, в которой находятся расширения php, в том числе и файл php_ldap.dll);
  • В значение системной переменной PATH должны быть включены папка php и папка с расширениями php;
  • Если вы внесли изменения в значение системной переменной, перезагрузите компьютер, чтобы изменения применились;
  • Если вы изменили что-либо в файле php.ini, перезапустите ваш веб-сервер.

Для Debian Linux вам нужно:

  • Установить пакет php5-ldap и добавить строку “extension = ldap.so” в конец файла (Debian Lenny не делает этого автоматически при установке пакета);
  • Перезапустите ваш веб-сервер.

Вы можете определить несколько серверов LDAP для проверки подлинности в GLPI. Процедура аутентификации будет происходить следующим образом:

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

Добавление нового каталога

Чтобы добавить новый каталог, нажмите кнопку ”+” в строке меню в верхней части страницы.

Появится экран конфигурации нового каталога.

Параметр Значение
Наименование Произвольное название сохраняемой конфигурации.
Сервер по умолчанию
Сервер Имя вашего LDAP сервера в URI формате (например, ldap://server.example.com).
Порт (по умолчанию=389) Порт для подключения к LDAP серверу.
Фильтр соединений Если вы хотите ограничить набор LDAP объектов, используемых как GLPI логины, и этот набор может быть описан LDAP атрибутами, укажите его здесь в виде LDAP фильтра. Эта возможность особенно полезна, когда есть необходимость отделить “настоящих пользователей” от учетных записей компьютеров и тому подобного.
База поиска (baseDN) Место в базе, относительно которого будет осуществляться поиск пользователей. Например, dc=example,dc=com - поиск пользователей будет осуществляться во всем домене. Или ou=office,dc=example,dc=com - поиск пользователей будет осуществляться только в OU office.
rootDN (пользователь для подключения) Пользователь, от имени которого будет происходить запрос к LDAP. Например, cn=glpi,ou=allusers,dc=example,dc=com - пользователь glpi, который находится в OU allusers.
Пароль (пользователь для подключения) Пароль учетной записи пользователя, от имени которого будет происходить запрос к LDAP.
Поле имени пользователя
Комментарии Произвольные комментарии и заметки.

Вы можете подключиться к LDAP через SSL-соединение (также известное как LDAPS). Просто укажите имя сервера следующим образом:

 ldaps://server.example.com 

А также измените порт (по умолчанию 636).

Если у вас крупное предприятие, которое имеет несколько поддоменов, вы можете использовать порт Глобального каталога под номером 3268 (или порт 3269, если вы используете SSL/TLS). Это позволит вам аутентифицировать пользователей, которые находятся в разных поддоменах, без необходимости указывать несколько LDAP серверов.

baseDN и rootDN

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

rootdn Пример:

cn=Admin, ou=users, dc=example, dc=com неверно
cn=Admin,ou=users,dc=example,dc=com верно

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

Для Active Directory rootDN может быть задано ещё и в таком формате: Admin@example.com

Например, такие:

  • LdapBrowser Editor (свободно-распространяемое ПО, написанное на Java и, следовательно, мультиплатформенное);
  • ADSIedit for Active Directory. Этот инструмент содержится в Support Tools, расположенных на вашем Windows CD.

Если у некоторых пользователей установлены ограничения на подключение к серверу, сконфигурированное в AD, то при попытке пройти аутентификацию на главной странице GLPI вы получите следующее сообщение: “Пользователь не найден или найдено несколько совпадений”. Решение - добавить сервер, на котором расположено AD, в список компьютеров, к которым пользователь может подключаться.

Фильтр соединений

Вам нужно задать условия для LDAP поиска. Это позволит ограничить область поиска пользователей.

  • Простой LDAP фильтр может выглядеть так:
(objectclass = inetOrgPerson)

Active Directory использует следующие фильтры, которые возвращают только тех пользователей, учетные записи которых не отключены (потому что компьютеры также считаются пользователями в AD):

  (&(objectClass=user)(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2))) 

Часто существует ограничение на количество записей, возвращаемое запросом (по умолчанию 1000):

  • В Linix необходимо проверить конфигурацию LDAP клиента (например, в Debian / Ubuntu / etc / ldap / ldap.conf)
  • В AD вам нужно просто изменить MaxPageSize вашего каталога.

Это можно сделать, выполнив следующие команды:

 C:> ntdsutil
 ntdsutil: ldap policies 
 ldap policy: connections
   server connections: connect to server 192.168.1.1 ( Here a few messages regarding connectivity are displayed)  
 server connections : q  
 ldap policy : show values ( here we will see all the values including MaxPageSize which is 1000 currently) 
 ldap policy : set maxpagesize to 5000
 ldap policy : commit changes 
 ldap policy : q
 ntdsutil : q 

Для проверки корректности введенных данных нажмите кнопку “Отправить” под строкой “Тест подключения к LDAP”. Сообщение “Тест успешный (Основной сервер : [имя_сервера])” говорит о том, что GLPI смог подключиться к каталогу LDAP. Теперь необходимо импортировать пользователей. Ниже рассказано, как это сделать.

LDAP / поля GLPI

По умолчанию, они инициализируются с использованием стандартных LDAP-совместимых параметров (не Active Directory). Параметры, приведенные ниже, являются лишь примерами. Параметры для вашего каталога LDAP могут быть другими.

Параметр Стандартное значение LDAP Значение в Active Directory
Фамилия cn sn
Имя givenname givenname
Комментарии
Email mail mail
Телефон telephonenumber telephonenumber
Телефон 2
Мобильный телефон mobile
Должность title title
Категория department
Язык preferredlanguage preferredlanguage

Имена атрибутов LDAP должны быть в нижнем регистре. Самый простой способ определить поля, которые соответствуют этой информации, в вашем LDAP каталоге или AD - использовать LDAP-браузер, о которых было написано в предыдущем разделе, поскольку поля могут существенно отличаться в зависимости от используемой вами системы.

Параметр “Язык” со значением соответствующего параметра пользователя, указанного в LDAP каталоге. Эта возможность может быть полезна в мультиязычной среде.

Когда пользователя удаляют из LDAP/AD каталога, его учетная запись не удаляется из GLPI, она только отключается.

Принадлежность к группам

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

Принадлежность пользователя к группе проверяется когда:

  • Меняется уровень пользователя в GLPI;
  • Аутентификация пользователя через веб-интерфейс;
  • Принудительная синхронизация с LDAP каталогом.

Это можно использовать, например, для того, чтобы создать группу технических специалистов в LDAP каталоге, а GLPI на основании этих данных будет применять правила и разрешения.

Группы могут быть:

  • Импортированы автоматически, используя возможности GLPI (Администрирование → Группы → Связи с LDAP → Импортировать новые группы);
  • Созданы вручную в GLPI с указанием LDAP настроек.

Соответствие между группами каталога и группами GLPI задается в настройках групп.

Импорт организаций из каталога LDAP

Дополнительная информация

Репликация

Если каталог LDAP недоступен, то пользователи не смогут подключиться к GLPI. Чтобы избежать этого, можно добавить реплику LDAP каталога - указать параметры сервера, хранящего те же данные, что и основной сервер LDAP каталога. Этот сервер будет использоваться в случае, если основной сервер недоступен.

Количество добавляемых реплик не ограничено.

Предыдущая версия статьи

Вы можете использовать существующую аутентификацию LDAP для аутентификации пользователей в GLPI. Один раз настроив аутентификацию LDAP, пользователи LDAP будут добавлены в базу GLPI. Некоторые атрибуты LDAP (имя, email, местоположение) будут скопированы в базу пользователей GLPI.

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

Этот документ будет состоять из трех частей:

  • основной обзор настроек в GLPI
  • пример настроек для “традиционного” LDAP сервера
  • пример настроек для Active Directory (проверено с AD 2k и 2k3)

Все настройки для аутентификации LDAP в GLPI можно поменять на странице “Администрирование” - “Установки” - “Аутентификация”.

Если Вы не видите ни одной настройки LDAP или получаете сообщение об ошибке, что модуль LDAP для PHP не найден, установите модуль LDAP (это должно распространятся обычно с дистрибутивом и называться примерно так “php-ldap”), перезапустите Ваш web сервер и попробуйте снова - настройки должны будут появиться.

Описание

В Администрировании/Настройка/Внешняя аутентификация Вы увидите несколько настроек разделенных в три секции:

  • Верхняя секция “Настройки LDAP” содержат основные настройки соединения с LDAP, такие как LDAP сервер, строки фильтра или строки поиска.
  • Нижняя секция “GLPI/LDAP ссылки” настройки связи LDAP атрибутов с полями используемые в GLPI. Эти настройки надо поменять используя механизм вашего LDAP сервера.
  • Средняя секция об автоматической связи групп LDAP и GLPI групп.

Possible connection modes

Depending on your LDAP directory structure you will have to choose one of the two methods on how to connect to your directory:

  • You have a flat directory (which often is the case with Samba sites using LDAP as the authentication backend), i.e. all relevant users are placed within a single organizational unit. In this case authentication is simple, since you can just add the baseDN string to the user name and ask LDAP to authenticate the user with the password provided through the user login attempt.
  • You have a hierarchic directory (which is pretty likely if you have an Active Directory site). Things are getting more complicated here, since LDAP requires a full distinguished name (like CN=John Doe,OU=Accounting,OU=Financial,DC=myAD,DC=example,DC=com) for authentication, but the user logon is only going to give us the user name.

In this case, authentication is performed in two stages:

  • GLPI needs to start a LDAP search for the user object first, providing the user name and predefined filter strings as parameters
  • In a second step it will try to ask the LDAP directory for authentication using the search result from the first step and the password provided by the user login attempt

Connection parameters

  • Host: the address of your LDAP server in LDAP URI notation (e.g. ldap://192.168.1.10), or simply as an IP address.
  • BaseDN: The initial DN for the search
  • RootDN (for non-anonymous connections): DN of a user authorized to conduct an LDAP search query starting at BaseDN
  • Pass (for non-anonymous connections): The password for the aforementioned user.
  • Connection Filter: Filter string to restrict the LDAP search. If you want to restrict the set of LDAP objects authorized for GLPI logins and this set can be described by LDAP attributes, specify them here in LDAP filter notation. This attribute is mostly useful in AD setups to filter off “real users” from computer accounts and InetOrgPerson entries with a string like (&(objectClass=user)(objectCategory=person))

GLPI/LDAP Links

The values in this section are initialized with defaults useful for a common LDAP directory, however, these defaults will not work with Active Directory setups. Below, you will get some examples on mappings:

  • name: the logon user name (LDAP: uid, AD: samaccountmame)
  • email: user email address (LDAP: mail, AD: userprincipalname)
  • hiring: user's locarion (LDAP & AD: physicaldeliveryofficename)
  • phon: the telephone number (LDAP & AD: telephonenumber)
  • name: the surname (AD: sn)
  • given name: user's given name (AD: givenname)

The easiest way to determine which fields to use is to browse your LDAP or AD repository (using ldapsearch, for example).

Traditional LDAP directory setup:

Since the defaults should work, you will only need to specify the most basic parameters:

  • host: ldap.myhost.fr
  • basedn: dc=example, dc=com

If anonymous directory search is not allowed and your user objects are not all to be found in BaseDN, you will need to specify values for a RootDN and the password (e.g. RootDN: CN=GLPI user search,CN=users,DC=myAD,DC=example,DC=com)

You can also set up a search filter. Example within the university of Poitiers (FRANCE), these fields are indicated to specify which entity the personnel is attached. If we wants to restrict with certain entities the condition is: (upempaffectation=500400)

or more complicated: (| (upempaffectation=500400) (upempaffectation=500200))

Active Directory setup:

GLPI authentication against Windows 2000 Server / Windows Server 2003 Active Directory has been tested successfully.

Specify the domain controller name or IP address and the domain name as your BaseDN

Active Directory does not allow anonymous object search, so you have to specify an authorized user and his password. If you create a user named “GLPI user search” in the “Users” container of Active Directory, the RootDN would look like this: CN=GLPI user search,CN=Users,DC=myAD,DC=example,DC=com. If you move this user to some other organizational unit, you will have to modify the string accordingly (e.g. CN=GLPI user search,OU=Inventory,OU=IT Administration,DC=myAD,DC=example,DC=com).

You also should define an LDAP search filter in order to restrict the search to user accounts only. If you do not do this, you will be searching machine accounts and InetOrgPerson accounts as well. The filter should look like this: (&(objectClass=user)(objectCategory=person))

Now take care of the data mappings. Set the fields as follows:

  • Loginfield: samaccountname (write in low case)
  • Surname: sn
  • First name: givenname
  • E-Mail: mail
  • Location: physicaldeliveryofficename
  • Phone: telephonenumber

Due to limitations in code, the LDAP names are not to be capitalized (so, enter all LDAP attribute names in lower case), otherwise you will not get the attributes imported correctly.

Tip: If you encounter difficulties, ADSIEdit.msc provided with the Support Tools on the Windows Server installation CD enables you to browse your Active Directory and allows you to see all information available through LDAP, including all attribute and object names.

If you mainly have Windows Clients in a single Windows domain, consider using integrated NTLM authentication for better user compliance.

Example Data For External Authentication (GLPI v0.7)

Name : Conn (can be anything)

Server			: 192.168.1.1
Base DN		: DC=MYDOMAIN, DC=NET
Root DN		: CN=glpi, CN=users, DC=MYDOMAIN, DC= NET

Note: Replace MYDOMAIN with your domain name

Password		: ***
Фильтр соединений	: (&(objectClass=user)(objectCategory=person)(!(objectClass=computer))(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
Login Field		: samaccountname
Time Zone		: GMT+3

Belonging to Groups

Search Type				: In Users
User Attributes containing groups	: memberof
Filter to search in groups		: (&(objectClass=user)(objectCategory=person)(!userAccountControl: 1.2.840.113556.1.4.803:=2)))
Group Attributes Containing Users		: <Blank>

GLPI/LDAP Links

Surname		: sn
First Name		:  givenname
Comments		:  nothing
E-mail			:  mail
Phone			:  telephonenumber
Phone2		:  homephone
Mobile			:  mobile	

1000 query limit:

There is a maxPageSize limit of 1000 in the windows AD which limits the LDAP query records to a max of 1000. In simple words whenever an LDAP search or query is made to the AD, no more than 1000 records are returned from the directory. This limitation is actually a security design so as to prevent the AD from DOS attacks for LDAP queries. In case less than 1000 users are defined in the AD, no additional work is required but for a large setup this limit needs to be changed at the AD using the “ntdsutil” utility. So the following steps need to be done at your AD to change the MaxPageSize value from 1000 to 5000(or whatever value suits ur requirement).

C:> ntdsutil

ntdsutil: ldap policies

ldap policy: connections

server connections: connect to server 192.168.1.1 ( here a few messages regarding connectivity are displayed)

server connections : q

ldap policy : show values ( here we will see all the values including MaxPageSize which is 1000 currently)

ldap policy : set maxpagesize to 5000

ldap policy : commit changes

ldap policy : q

ntdsutil : q

After performing above commands GLPI can successfully import more than 1000 users from the AD.

Mod_Security

The mod_security Apache module interferes with the AD connection parameters and the connection filters. Mod Security considers connection parameters as an LDAP Injection attack to a server and hence blocks the pages and gives an error “Method Not Implemented” on the web page. So as a temporary turnaround turn off mod_security on the apache web server. To do so go to /etc/httpd/conf.d directory and rename the file mod_security.conf to mod_security.temp or any other file name BUT WITHOUT THE .conf EXTENSION as apache parses all the .conf files while starting and then loads the modules as defined in the conf files. Do an apachectl restart and apache shall be loaded without mod_security. After completing the Import of AD users to GLPI mod_security may be turned on again to prevent apache server from various network attacks.