Spec-Zone.ru › Apache HTTP Server

Модуль Apache mod_authnz_ldap

Описание: Позволяет использовать LDAP-каталог для хранения базы данных для аутентификации HTTP Basic.
Статус: Расширение
Идентификатор модуля: authnz_ldap_module
Файл исходного кода: mod_authnz_ldap.c
Совместимость: Доступен в версии 2.1 и более поздних

Обзор

Этот модуль позволяет таким средствам аутентификации, как mod_auth_basic, аутентифицировать пользователей через каталог ldap.

mod_authnz_ldap поддерживает следующие функции:

  • Поддерживает OpenLDAP SDK (как 1.x, так и 2.x), Novell LDAP SDK и iPlanet (Netscape) SDK.
  • Сложные политики авторизации могут быть реализованы путём представления политики с помощью фильтров LDAP.
  • Использует расширенное кэширование операций LDAP через mod_ldap.
  • Поддержка LDAP через SSL (требуется Netscape SDK) или TLS (требуется OpenLDAP 2.x SDK или Novell LDAP SDK).

При использовании mod_auth_basic, этот модуль вызывается через директиву AuthBasicProvider со значением ldap.

Содержание

  • Общие замечания
  • Функционирование
    • Фаза аутентификации
    • Фаза авторизации
  • Директивы Require
    • Require ldap-user
    • Require ldap-group
    • Require ldap-dn
    • Require ldap-attribute
    • Require ldap-filter
  • Примеры
  • Использование TLS
  • Использование SSL
  • Отображение информации об авторизации
  • Использование Active Directory
  • Использование Microsoft FrontPage с mod_authnz_ldap
    • Как это работает
    • Замечания

Общие замечания

Этот модуль кэширует результаты аутентификации и авторизации на основе конфигурации mod_ldap. Изменения, внесённые в базовый LDAP-сервер, не будут сразу отражены на HTTP-сервере, включая, но не ограничиваясь, блокировкой/восстановлением пользователей, изменением паролей или изменениями в группах. Подробности о параметрах настройки кэша см. в директивах mod_ldap.

Функционирование

Для предоставления доступа пользователю есть две фазы. Первая — аутентификация, в которой поставщик аутентификации mod_authnz_ldap проверяет, являются ли учётные данные пользователя действительными. Это также называется фазой поиска/связи. Вторая фаза — авторизация, в которой mod_authnz_ldap определяет, разрешён ли данному аутентифицированному пользователю доступ к интересуемому ресурсу. Это также известно как фаза сравнения.

mod_authnz_ldap регистрирует как поставщик аутентификации authn_ldap, так и обработчик авторизации authz_ldap. Поставщик аутентификации authn_ldap может быть включён с помощью директивы AuthBasicProvider со значением ldap. Обработчик authz_ldap расширяет типы авторизации директивы Require добавлением значений ldap-user, ldap-dn и ldap-group.

Фаза аутентификации

В фазе аутентификации mod_authnz_ldap ищет запись в каталоге, соответствующую имени пользователя, переданному HTTP-клиентом. Если найдено единственное уникальное совпадение, то mod_authnz_ldap пытается связаться с сервером каталогов, используя DN записи и пароль, предоставленный HTTP-клиентом. Поскольку выполняется поиск, а затем связь, это часто называют фазой поиска/связи. Вот шаги, выполняемые во время фазы поиска/связи.

  1. Сгенерировать фильтр поиска, комбинируя атрибут и фильтр, предоставленные в директиве AuthLDAPURL с именем пользователя, переданным HTTP-клиентом.
  2. Произвести поиск в каталоге, используя сгенерированный фильтр. Если поиск не вернул ровно одну запись, отклонить или отказать в доступе.
  3. Получить имя записи, полученной из результата поиска, и попытаться связаться с LDAP-сервером, используя этот DN и пароль, переданный HTTP-клиентом. Если попытка связи не удалась, отклонить или отказать в доступе.

Следующие директивы используются во время фазы поиска/связи

AuthLDAPURL Указывает LDAP-сервер, базовый DN, атрибут для использования в поиске, а также дополнительный фильтр поиска.
AuthLDAPBindDN Необязательный DN для связи во время фазы поиска.
AuthLDAPBindPassword Необязательный пароль для связи во время фазы поиска.

Фаза авторизации

Во время фазы авторизации mod_authnz_ldap пытается определить, авторизован ли пользователь для доступа к ресурсу. Многие из этих проверок требуют от mod_authnz_ldap выполнить операцию сравнения на LDAP-сервере. Вот почему эту фазу часто называют фазой сравнения. mod_authnz_ldap принимает следующие директивы Require для определения того, приемлемы ли учётные данные:

  • Предоставить доступ, если есть директива Require ldap-user, и имя пользователя в директиве совпадает с именем пользователя, переданным клиентом.
  • Предоставить доступ, если есть директива Require ldap-dn, и DN в директиве совпадает с DN, полученным из LDAP-каталога.
  • Предоставить доступ, если есть директива Require ldap-group, и DN, полученный из LDAP-каталога (или имя пользователя, переданное клиентом), присутствует в LDAP-группе или, потенциально, в одной из её подгрупп.
  • Предоставить доступ, если есть директива Require ldap-attribute, и атрибут, полученный из LDAP-каталога, совпадает с заданным значением.
  • Предоставить доступ, если есть директива Require ldap-filter, и фильтр поиска успешно находит единственный объект пользователя, соответствующий dn аутентифицированного пользователя.
  • в противном случае отклонить или отказать в доступе.

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

  • Предоставить доступ всем успешно аутентифицированным пользователям, если есть директива Require valid-user. (требуется mod_authz_user)
  • Предоставить доступ, если есть директива Require group, и mod_authz_groupfile был загружен с помощью директивы AuthGroupFile.
  • и другие...

mod_authnz_ldap использует следующие директивы во время фазы сравнения:

AuthLDAPURL Атрибут, указанный в URL, используется в операциях сравнения для операции Require ldap-user.
AuthLDAPCompareDNOnServer Определяет поведение директивы Require ldap-dn .
AuthLDAPGroupAttribute Определяет атрибут для использования в сравнениях в директиве Require ldap-group .
AuthLDAPGroupAttributeIsDN Указывает, использовать ли DN пользователя или имя пользователя при выполнении сравнений для директивы Require ldap-group .
AuthLDAPMaxSubGroupDepth Определяет максимальную глубину подгрупп, которые будут оцениваться во время сравнений в директиве Require ldap-group .
AuthLDAPSubGroupAttribute Определяет атрибут для использования при получении членов подгрупп текущей группы во время сравнений в директиве Require ldap-group .
AuthLDAPSubGroupClass Указывает значения objectClass LDAP, используемые для определения, являются ли запрошенные объекты каталога действительно объектами групп (в отличие от объектов пользователей) во время обработки подгрупп директивы Require ldap-group .

Директивы Require

Директивы Require Apache Require используются во время фазы авторизации для обеспечения возможности доступа пользователя к ресурсу. mod_authnz_ldap расширяет типы авторизации ldap-user, ldap-dn, ldap-group, ldap-attribute и ldap-filter. Другие типы авторизации также могут быть использованы, но могут потребовать загрузки дополнительных модулей авторизации.

Начиная с версии 2.4.8, в директивах LDAP require поддерживаются выражения.

Require ldap-user

Директива Require ldap-user указывает, какие имена пользователей могут получить доступ к ресурсу. После того как mod_authnz_ldap извлёк уникальный DN из каталога, он выполняет LDAP-операцию сравнения, используя имя пользователя, указанное в директиве Require ldap-user, чтобы определить, является ли этот пользователь частью только что полученной записи LDAP. Доступ нескольким пользователям можно предоставить, перечислив имена пользователей в строке через пробелы. Если имя пользователя содержит пробелы, оно должно быть заключено в двойные кавычки. Доступ нескольким пользователям также можно предоставить, используя несколько директив Require ldap-user, по одному пользователю в строке. Например, с AuthLDAPURL (т.е., cn используется для поиска), следующие директивы Require могут быть использованы для ограничения доступа:

Require ldap-user "Barbara Jenson"
Require ldap-user "Fred User"
Require ldap-user "Joe Manager"

Из-за того, как mod_authnz_ldap обрабатывает эту директиву, Барбара Дженсен могла войти как Барбара Дженсен, Барбара или любое другое значение cn, которое она имеет в своей записи LDAP. Для поддержки всех значений атрибута в записи пользователя достаточно единственной строки Require ldap-user.

Если вместо атрибута cn в URL использовался атрибут uid, три строки выше можно было бы свернуть в:

Require ldap-user bjenson fuser jmanager

Require ldap-group

Эта директива указывает LDAP-группу, члены которой имеют разрешение на доступ. Она принимает имя в формате distinguished name LDAP-группы. Обратите внимание: имя группы не должно быть заключено в кавычки. Например, предположим, что в каталоге LDAP существовала запись:

dn: cn=Administrators, o=Example
objectClass: groupOfUniqueNames
uniqueMember: cn=Barbara Jenson, o=Example
uniqueMember: cn=Fred User, o=Example

Следующая директива предоставит доступ как Фреду, так и Барбаре:

Require ldap-group cn=Administrators, o=Example

Члены также могут быть найдены в подгруппах указанной LDAP-группы, если AuthLDAPMaxSubGroupDepth установлено значением больше 0. Например, предположим, что в каталоге LDAP существуют следующие записи:

dn: cn=Employees, o=Example
objectClass: groupOfUniqueNames
uniqueMember: cn=Managers, o=Example
uniqueMember: cn=Administrators, o=Example
uniqueMember: cn=Users, o=Example

dn: cn=Managers, o=Example
objectClass: groupOfUniqueNames
uniqueMember: cn=Bob Ellis, o=Example
uniqueMember: cn=Tom Jackson, o=Example

dn: cn=Administrators, o=Example
objectClass: groupOfUniqueNames
uniqueMember: cn=Barbara Jenson, o=Example
uniqueMember: cn=Fred User, o=Example

dn: cn=Users, o=Example
objectClass: groupOfUniqueNames
uniqueMember: cn=Allan Jefferson, o=Example
uniqueMember: cn=Paul Tilley, o=Example
uniqueMember: cn=Temporary Employees, o=Example

dn: cn=Temporary Employees, o=Example
objectClass: groupOfUniqueNames
uniqueMember: cn=Jim Swenson, o=Example
uniqueMember: cn=Elliot Rhodes, o=Example

Следующие директивы позволят получить доступ Бобу Эллису, Тому Джексону, Барбаре Дженсен, Фреду Юзеру, Аллану Джефферсону и Полу Тилли, но не позволят получить доступ Джиму Свенсону или Эллиоту Родсу (поскольку они находятся на глубине вложенности подгрупп 2):

Require ldap-group cn=Employees, o=Example
AuthLDAPMaxSubGroupDepth 1

Поведение этой директивы изменяется директивами AuthLDAPGroupAttribute, AuthLDAPGroupAttributeIsDN, AuthLDAPMaxSubGroupDepth, AuthLDAPSubGroupAttribute, и AuthLDAPSubGroupClass.

Требовать ldap-dn

Директива Require ldap-dn позволяет администратору предоставлять доступ на основе имени с отличительными характеристиками. Она указывает DN, которому должно соответствовать имя с отличительными характеристиками для предоставления доступа. Если имя с отличительными характеристиками, полученное с сервера каталогов, соответствует имени с отличительными характеристиками в Require ldap-dn, то авторизация предоставляется. Примечание: не заключайте имя с отличительными характеристиками в кавычки.

Следующая директива предоставит доступ к конкретному DN:

Require ldap-dn cn=Barbara Jenson, o=Example

Поведение этой директивы изменяется директивой AuthLDAPCompareDNOnServer.

Требовать ldap-атрибут

Директива Require ldap-attribute позволяет администратору предоставлять доступ на основе атрибутов аутентифицированного пользователя в каталоге LDAP. Если атрибут в каталоге соответствует значению, заданному в конфигурации, доступ предоставляется.

Следующая директива предоставит доступ любому пользователю с атрибутом employeeType = active

Require ldap-attribute employeeType="active"

Несколько пар атрибут/значение могут быть указаны в одной строке, разделенные пробелами, или они могут быть указаны в нескольких директивах Require ldap-attribute. Эффект перечисления нескольких пар атрибут/значение — операция ИЛИ. Доступ будет предоставлен, если любое из перечисленных значений атрибута соответствует значению соответствующего атрибута в объекте пользователя. Если значение атрибута содержит пробел, только значение должно быть заключено в двойные кавычки.

Следующая директива предоставит доступ любому пользователю с атрибутом city, равным "San Jose", или status, равным "Active"

Require ldap-attribute city="San Jose" status="active"

Требовать ldap-фильтр

Директива Require ldap-filter позволяет администратору предоставлять доступ на основе сложного фильтра поиска LDAP. Если dn, возвращенный по результатам поиска фильтра, соответствует dn аутентифицированного пользователя, доступ предоставляется.

Следующая директива предоставит доступ любому пользователю, у которого есть сотовый телефон и который находится в отделе маркетинга

Require ldap-filter "&(cell=*)(department=marketing)"

Разница между директивой Require ldap-filter и директивой Require ldap-attribute заключается в том, что ldap-filter выполняет операцию поиска в каталоге LDAP с использованием указанного фильтра поиска, а не просто сравнение атрибутов. Если требуется простое сравнение атрибутов, операция сравнения, выполняемая директивой ldap-attribute, будет быстрее, чем операция поиска, используемая директивой ldap-filter, особенно в большом каталоге.

Примеры

  • Предоставить доступ любому пользователю, присутствующему в каталоге LDAP, используя их UID для поиска.
    AuthLDAPURL "ldap://ldap1.example.com:389/ou=People, o=Example?uid?sub?(objectClass=*)"
    Require valid-user
  • Следующий пример такой же, как выше; но с опущенными полями, которые имеют полезные значения по умолчанию. Также обратите внимание на использование избыточного сервера LDAP.
    AuthLDAPURL "ldap://ldap1.example.com ldap2.example.com/ou=People, o=Example"
    Require valid-user
  • Следующий пример похож на предыдущий, но он использует общее имя вместо UID. Обратите внимание, что это может быть проблематично, если несколько человек в каталоге имеют одинаковое cn, потому что поиск по cn должен вернуть ровно одну запись. Вот почему этот подход не рекомендуется: лучше выбрать атрибут, гарантированно уникальный в вашем каталоге, например uid.
    AuthLDAPURL "ldap://ldap.example.com/ou=People, o=Example?cn"
    Require valid-user
  • Предоставить доступ любому пользователю в группе Администраторы. Пользователи должны пройти аутентификацию с помощью своего UID.
    AuthLDAPURL ldap://ldap.example.com/o=Example?uid
    Require ldap-group cn=Administrators, o=Example
  • Предоставить доступ любому пользователю в группе, имя которого соответствует имени хоста виртуального хоста. В этом примере используется выражение для построения фильтра.
    AuthLDAPURL ldap://ldap.example.com/o=Example?uid
    Require ldap-group cn=%{SERVER_NAME}, o=Example
  • Следующий пример предполагает, что каждый в Example, кто носит буквенно-цифровой пейджер, будет иметь атрибут LDAP qpagePagerID. Пример предоставит доступ только людям (аутентифицированным по их UID), которые имеют буквенно-цифровые пейджеры:
    AuthLDAPURL ldap://ldap.example.com/o=Example?uid??(qpagePagerID=*)
    Require valid-user
  • Следующий пример демонстрирует возможности использования фильтров для достижения сложных административных требований. Без фильтров было бы необходимо создать новую группу LDAP и убедиться, что члены группы остаются синхронизированными с пользователями пейджеров. Это становится тривиальным с помощью фильтров. Цель состоит в предоставлении доступа любому пользователю, у которого есть пейджер, а также предоставлении доступа Джоу Менеджеру, у которого нет пейджера, но которому необходимо получить доступ к тому же ресурсу:

    AuthLDAPURL ldap://ldap.example.com/o=Example?uid??(|(qpagePagerID=*)(uid=jmanager))
    Require valid-user

    Это может показаться запутанным, поэтому полезно оценить, как будет выглядеть фильтр поиска в зависимости от того, кто подключается, как показано ниже. Если Фред Юзер подключается как fuser, фильтр будет выглядеть так

    (&(|(qpagePagerID=*)(uid=jmanager))(uid=fuser))

    Вышеупомянутый поиск увенчается успехом только в том случае, если у fuser есть пейджер. Когда Джоу Менеджер подключается как jmanager, фильтр выглядит так

    (&(|(qpagePagerID=*)(uid=jmanager))(uid=jmanager))

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

Использование TLS

Для использования TLS см. директивы mod_ldap LDAPTrustedClientCert, LDAPTrustedGlobalCert и LDAPTrustedMode.

Дополнительный второй параметр может быть добавлен к AuthLDAPURL для переопределения типа подключения по умолчанию, установленного LDAPTrustedMode. Это позволит подключению, установленным с помощью ldap:// Url, быть модернизированным до безопасного подключения на том же порту.

Использование SSL

Для использования SSL см. директивы mod_ldap LDAPTrustedClientCert, LDAPTrustedGlobalCert и LDAPTrustedMode.

Для указания защищенного сервера LDAP используйте ldaps:// в директиве AuthLDAPURL вместо ldap://.

Размещение информации о входе

при выполнении модулем аутентификации, атрибуты ldap, указанные в директиве AuthLDAPURL, помещаются в переменные среды с префиксом "AUTHENTICATE_".

при выполнении модулем авторизации, атрибуты ldap, указанные в директиве AuthLDAPURL, помещаются в переменные среды с префиксом "AUTHORIZE_".

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

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

Использование Active Directory

Установка Active Directory может поддерживать несколько доменов одновременно. Для различения пользователей между доменами может быть добавлен идентификатор, называемый именем принципа пользователя (UPN), в запись пользователя в каталоге. Этот UPN обычно имеет вид имени учетной записи пользователя, за которым следуют компоненты домена конкретного домена, например, somebody@nz.example.com.

Вы можете настроить модуль mod_authnz_ldap для аутентификации пользователей, присутствующих в любом из доменов, образующих лес Active Directory. Таким образом, оба somebody@nz.example.com и someone@au.example.com могут быть аутентифицированы с помощью одного запроса одновременно.

Для практического применения Active Directory поддерживает концепцию глобального каталога. Этот глобальный каталог — это только для чтения копия выбранных атрибутов всех серверов Active Directory в лесу Active Directory. Обращение к глобальному каталогу позволяет обращаться ко всем доменам в одном запросе, без необходимости охватывать сервера через потенциально медленные ссылки.

Если включен, глобальный каталог — это независимый сервер каталогов, работающий на порту 3268 (3269 для SSL). Для поиска пользователя выполните поиск поддерева для атрибута userPrincipalName с пустым корнем поиска, как показано ниже:

AuthLDAPBindDN apache@example.com
AuthLDAPBindPassword password
AuthLDAPURL ldap://10.0.0.1:3268/?userPrincipalName?sub

Пользователям нужно будет вводить свое имя принципа пользователя в качестве логина в формате somebody@nz.example.com.

Использование Microsoft FrontPage с mod_authnz_ldap

Обычно FrontPage использует веб-специфичные файлы пользователей/групп FrontPage (т.е., модули mod_authn_file и mod_authz_groupfile ) для обработки всей аутентификации. К сожалению, простое изменение на аутентификацию LDAP путем добавления соответствующих директив невозможно, так как это нарушит формы Разрешений в клиенте FrontPage, которые пытаются изменить стандартные текстовые файлы авторизации.

После создания веб-сайта FrontPage добавление аутентификации LDAP сводится к добавлению следующих директив в каждый файл .htaccess , который создается в веб-приложении

AuthLDAPURL       "the url"
AuthGroupFile     "mygroupfile"
Require group     "mygroupfile"

Как это работает

FrontPage ограничивает доступ к веб-сайту, добавляя директиву Require valid-user к файлам .htaccess. Директива Require valid-user будет успешной для любого пользователя, который действителен с точки зрения LDAP. Это означает, что любой, у кого есть запись в каталоге LDAP, считается действительным пользователем, тогда как FrontPage рассматривает только тех людей в локальном файле пользователей как действительных. Заменив авторизацию группы ldap файлом группы, Apache разрешается обращаться к локальному файлу пользователей (который управляется FrontPage) — вместо LDAP — при обработке авторизации пользователя.

После добавления директив, как указано выше, пользователи FrontPage смогут выполнять все операции управления из клиента FrontPage.

Ограничения

  • При выборе URL LDAP атрибут, используемый для аутентификации, должен быть таким, чтобы он был также действительным для помещения в файл пользователей mod_authn_file. Идентификатор пользователя идеально подходит для этого.
  • При добавлении пользователей через FrontPage администраторы FrontPage должны выбирать имена пользователей, которые уже существуют в каталоге LDAP (по понятным причинам). Кроме того, пароль, который администратор вводит в форму, игнорируется, так как Apache фактически будет выполнять аутентификацию по паролю в базе данных LDAP, а не по паролю в локальном файле пользователей. Это может вызвать путаницу у веб-администраторов.
  • Apache должен быть скомпилирован с mod_auth_basic, mod_authn_file и mod_authz_groupfile для использования поддержки FrontPage. Это связано с тем, что Apache по-прежнему будет использовать файл группы mod_authz_groupfile для определения объема доступа пользователя к веб-сайту FrontPage.
  • Директивы должны быть помещены в файлы .htaccess. Попытка разместить их внутри директив <Location> или <Directory> не сработает. Это связано с тем, что mod_authnz_ldap должен иметь возможность получить директиву AuthGroupFile, которая находится в файлах FrontPage .htaccess, чтобы знать, где искать список действительных пользователей. Если директивы mod_authnz_ldap не находятся в одном файле .htaccess с директивами FrontPage, то этот хак не сработает, так как mod_authnz_ldap никогда не получит возможность обработать файл .htaccess и не сможет найти файл пользователей, управляемый FrontPage.

Директива AuthLDAPAuthorizePrefix

Описание: Указывает префикс для переменных окружения, устанавливаемых во время авторизации
Синтаксис:
AuthLDAPAuthorizePrefix prefix
По умолчанию:
AuthLDAPAuthorizePrefix AUTHORIZE_
Контекст: directory, .htaccess
Переопределение: AuthConfig
Статус: Расширение
Модуль: mod_authnz_ldap
Совместимость: Доступно в версии 2.3.6 и более поздних

Эта директива позволяет переопределить префикс, используемый для переменных окружения, устанавливаемых во время авторизации в LDAP. Если указано AUTHENTICATE_, потребители этих переменных окружения видят ту же информацию, независимо от того, выполнила ли LDAP аутентификацию, авторизацию или обе операции.

Примечание

Переменные авторизации не устанавливаются, когда пользователь авторизован на основе Require valid-user.

Директива AuthLDAPBindAuthoritative

Описание: Определяет, используются ли другие поставщики аутентификации, когда пользователь может быть сопоставлен с DN, но сервер не может успешно связаться с учетными данными пользователя.
Синтаксис:
AuthLDAPBindAuthoritative off|on
По умолчанию:
AuthLDAPBindAuthoritative on
Контекст: directory, .htaccess
Переопределение: AuthConfig
Статус: Расширение
Модуль: mod_authnz_ldap

По умолчанию, последующие поставщики аутентификации запрашиваются только в том случае, если пользователь не может быть сопоставлен с DN, но не если пользователь может быть сопоставлен с DN, а его пароль не может быть проверен с помощью LDAP bind. Если AuthLDAPBindAuthoritative установлено в off, другие настроенные модули аутентификации получат возможность проверить пользователя, если LDAP bind (с текущими учетными данными пользователя) завершится неудачей по любой причине.

Это позволяет пользователям, присутствующим как в LDAP, так и в AuthUserFile, выполнять аутентификацию, когда LDAP-сервер доступен, но учетная запись пользователя заблокирована или пароль по какой-либо причине недоступен.

См. также

  • AuthUserFile
  • AuthBasicProvider

Директива AuthLDAPBindDN

Описание: Необязательный DN для использования при подключении к LDAP-серверу
Синтаксис:
AuthLDAPBindDN distinguished-name
Контекст: directory, .htaccess
Переопределение: AuthConfig
Статус: Расширение
Модуль: mod_authnz_ldap

Необязательный DN, используемый для подключения к серверу при поиске записей. Если не указано, mod_authnz_ldap будет использовать анонимное подключение.

Директива AuthLDAPBindPassword

Описание: Пароль, используемый совместно с bind DN
Синтаксис:
AuthLDAPBindPassword password
Контекст: directory, .htaccess
Переопределение: AuthConfig
Статус: Расширение
Модуль: mod_authnz_ldap
Совместимость: exec: добавлен в 2.4.5.

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

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

#Password used as-is
AuthLDAPBindPassword secret

#Run /path/to/program to get my password
AuthLDAPBindPassword exec:/path/to/program

#Run /path/to/otherProgram and provide arguments
AuthLDAPBindPassword "exec:/path/to/otherProgram argument1"

Директива AuthLDAPCharsetConfig

Описание: Файл конфигурации преобразования языка в набор символов
Синтаксис:
AuthLDAPCharsetConfig file-path
Контекст: Конфигурация сервера
Статус: Расширение
Модуль: mod_authnz_ldap

Директива AuthLDAPCharsetConfig задает расположение файла конфигурации преобразования языка в набор символов. Путь к файлу — это путь, относительный к ServerRoot. Этот файл указывает список расширений языков для наборов символов. Большинство администраторов используют предоставленный файл charset.conv, который сопоставляет распространенные языковые расширения с наборами символов.

Файл содержит строки в следующем формате:

Language-Extension charset [Language-String] ...

Регистр расширения не имеет значения. Пустые строки и строки, начинающиеся с символа решетки (#), игнорируются.

Директива AuthLDAPCompareAsUser

Описание: Использовать учетные данные аутентифицированного пользователя для выполнения сравнений авторизации
По умолчанию:
AuthLDAPCompareAsUser off
Контекст: directory, .htaccess
Переопределение: AuthConfig
Статус: Расширение
Модуль: mod_authnz_ldap
Совместимость: Доступно в версии 2.3.6 и более поздних

При установленной директиве и выполнении аутентификации пользователя mod_authnz_ldap, LDAP-сравнения для авторизации используют запрошенный DN (имя объекта) и пароль HTTP-базовой аутентификации аутентифицированного пользователя вместо настроенных учетных данных сервера.

Проверки авторизации ldap-attribute, ldap-user и ldap-group (только одноуровневые) используют сравнения.

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

Эта директива должна использоваться только в том случае, если ваш LDAP-сервер не поддерживает анонимные сравнения, и вы не можете использовать выделенный AuthLDAPBindDN.

См. также

  • AuthLDAPInitialBindAsUser
  • AuthLDAPSearchAsUser

Директива AuthLDAPCompareDNOnServer

Описание: Использование LDAP-сервера для сравнения DN
По умолчанию:
AuthLDAPCompareDNOnServer on
Контекст: directory, .htaccess
Переопределение: AuthConfig
Статус: Расширение
Модуль: mod_authnz_ldap

При установленной директиве mod_authnz_ldap будет использоваться LDAP-сервер для сравнения DN. Это единственный надежный способ сравнения DN. mod_authnz_ldap будет искать в каталоге DN, указанный с помощью директивы Require dn, затем извлечет DN и сравнит его с DN, полученным из записи пользователя. Если эта директива не установлена, mod_authnz_ldap просто выполняет строковое сравнение. С этим подходом возможно получение ложных отрицаний, но он намного быстрее. Обратите внимание, что кеш mod_ldap может ускорить сравнение DN в большинстве ситуаций.

Директива AuthLDAPDereferenceAliases

Описание: Когда модуль будет де-ссылать псевдонимы
По умолчанию:
AuthLDAPDereferenceAliases always
Контекст: directory, .htaccess
Переопределение: AuthConfig
Статус: Расширение
Модуль: mod_authnz_ldap

Эта директива определяет, когда mod_authnz_ldap будет де-ссылать псевдонимы во время LDAP-операций. По умолчанию — always.

Директива AuthLDAPGroupAttribute

Описание: LDAP-атрибуты, используемые для идентификации пользователей, входящих в группы.
По умолчанию:
AuthLDAPGroupAttribute member uniqueMember
Контекст: directory, .htaccess
Переопределение: AuthConfig
Статус: Расширение
Модуль: mod_authnz_ldap

Эта директива указывает, какие LDAP-атрибуты используются для проверки принадлежности пользователей к группам. Несколько атрибутов могут быть использованы, указав эту директиву несколько раз. Если не указано, то mod_authnz_ldap использует атрибуты member и uniqueMember.

Директива AuthLDAPGroupAttributeIsDN

Описание: Использование DN имени пользователя клиента при проверке принадлежности к группе
По умолчанию:
AuthLDAPGroupAttributeIsDN on
Контекст: directory, .htaccess
Переопределение: AuthConfig
Статус: Расширение
Модуль: mod_authnz_ldap

При установленной директиве on, эта директива указывает использовать имя объекта (DN) имени пользователя клиента при проверке принадлежности к группе. В противном случае будет использоваться имя пользователя. Например, предположим, что клиент отправил имя пользователя bjenson, которое соответствует LDAP-DN cn=Babs Jenson, o=Example. Если эта директива установлена, mod_authnz_ldap будет проверять, является ли группа членом cn=Babs Jenson, o=Example. Если эта директива не установлена, то mod_authnz_ldap будет проверять, является ли группа членом bjenson.

Директива AuthLDAPInitialBindAsUser

Описание: Определяет, использует ли сервер начальный поиск DN с использованием имени пользователя основного аутентификационного пользователя вместо анонимного или с жестко заданными учетными данными сервера
Синтаксис:
AuthLDAPInitialBindAsUser off|on
По умолчанию:
AuthLDAPInitialBindAsUser off
Контекст: directory, .htaccess
Переопределение: AuthConfig
Статус: Расширение
Модуль: mod_authnz_ldap
Совместимость: Доступно в версии 2.3.6 и более поздних

По умолчанию сервер анонимно или с использованием выделенного пользователя и пароля преобразует имя пользователя основного аутентификационного пользователя в отличительный имя (DN) LDAP. Данная директива заставляет сервер использовать точное имя пользователя и пароль, предоставленные входящим пользователем, для выполнения начального поиска DN.

Если точное имя пользователя не может быть напрямую связано, но требует некоторого косметического преобразования, см. AuthLDAPInitialBindPattern.

Данная директива должна использоваться только в том случае, если ваш сервер LDAP не принимает анонимные запросы, и вы не можете использовать выделенного AuthLDAPBindDN.

Не доступно с только авторизацией

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

См. также

  • AuthLDAPInitialBindPattern
  • AuthLDAPBindDN
  • AuthLDAPCompareAsUser
  • AuthLDAPSearchAsUser

Директива AuthLDAPInitialBindPattern

Описание: Указывает преобразование имени пользователя основного аутентификационного пользователя, которое будет использоваться при подключении к серверу LDAP для выполнения поиска DN
Синтаксис:
AuthLDAPInitialBindPattern regex substitution
По умолчанию:
AuthLDAPInitialBindPattern (.*) $1 (remote username used verbatim)
Контекст: directory, .htaccess
Переопределение: AuthConfig
Статус: Расширение
Модуль: mod_authnz_ldap
Совместимость: Доступно в версии 2.3.6 и более поздних

Если AuthLDAPInitialBindAsUser установлено в ON, имя пользователя основного аутентификационного пользователя будет преобразовано в соответствии с регулярным выражением и аргументами подстановки.

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

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

AuthLDAPInitialBindPattern (.+) $1@example.com
AuthLDAPInitialBindPattern (.+) cn=$1,dc=example,dc=com

Не доступно с только авторизацией

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

отладка

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

См. также

  • AuthLDAPInitialBindAsUser
  • AuthLDAPBindDN

Директива AuthLDAPMaxSubGroupDepth

Описание: Указывает максимальную глубину вложенности подгрупп, которая будет обработана перед прекращением поиска пользователя.
Синтаксис:
AuthLDAPMaxSubGroupDepth Number
По умолчанию:
AuthLDAPMaxSubGroupDepth 10
Контекст: directory, .htaccess
Переопределение: AuthConfig
Статус: Расширение
Модуль: mod_authnz_ldap
Совместимость: Доступно в версии 2.3.0 и более поздних

Когда эта директива установлена в ненулевое значение X в сочетании с использованием директивы Require ldap-group someGroupDN, предоставленные учетные данные пользователя будут искать как члена someGroupDN объекта каталога или любого члена группы текущей группы до максимального уровня вложенности X, указанного в этой директиве.

См. раздел Require ldap-group для более подробного примера.

Производительность вложенных групп

Когда AuthLDAPSubGroupAttribute перекрывается с AuthLDAPGroupAttribute (как по умолчанию, так и как это требуется стандартными схемами LDAP), некэшированный поиск подгрупп в больших группах может быть очень медленным. Если вы используете большие, не вложенные группы, установите AuthLDAPMaxSubGroupDepth в ноль.

Директива AuthLDAPRemoteUserAttribute

Описание: Использование значения атрибута, возвращённого во время запроса пользователя, для установки переменной окружения REMOTE_USER
Синтаксис:
AuthLDAPRemoteUserAttribute uid
По умолчанию: none
Контекст: directory, .htaccess
Переопределение: AuthConfig
Статус: Расширение
Модуль: mod_authnz_ldap

Если эта директива установлена, значение переменной окружения REMOTE_USER будет установлено в значение указанного атрибута. Убедитесь, что этот атрибут включён в список атрибутов в определении AuthLDAPURL, в противном случае данная директива не будет иметь эффекта. Эта директива, если присутствует, имеет приоритет над AuthLDAPRemoteUserIsDN. Данная директива полезна в случаях, когда пользователи должны входить на сайт используя адрес электронной почты, а приложение обратной связи ожидает имя пользователя в виде идентификатора пользователя.

Директива AuthLDAPRemoteUserIsDN

Описание: Использование DN имени клиента для установки переменной окружения REMOTE_USER
Синтаксис:
AuthLDAPRemoteUserIsDN on|off
По умолчанию:
AuthLDAPRemoteUserIsDN off
Контекст: directory, .htaccess
Переопределение: AuthConfig
Статус: Расширение
Модуль: mod_authnz_ldap

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

Директива AuthLDAPSearchAsUser

Описание: Использование учетных данных аутентифицированного пользователя для выполнения поисков авторизации
Синтаксис:
AuthLDAPSearchAsUser on|off
По умолчанию:
AuthLDAPSearchAsUser off
Контекст: directory, .htaccess
Переопределение: AuthConfig
Статус: Расширение
Модуль: mod_authnz_ldap
Совместимость: Доступно в версии 2.3.6 и более поздних

При установке и mod_authnz_ldap аутентифицировав пользователя, поиски LDAP для авторизации используют запрошенное отличительное имя (DN) и пароль HTTP базовой аутентификации аутентифицированного пользователя вместо настроенных учетных данных сервера.

Проверки авторизации ldap-filter и ldap-dn используют поиски.

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

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

См. также

  • AuthLDAPInitialBindAsUser
  • AuthLDAPCompareAsUser

Директива AuthLDAPSubGroupAttribute

Описание: Указывает метки атрибутов, по одному значению на строку директивы, используемые для различения членов текущей группы, являющихся группами.
Синтаксис:
AuthLDAPSubGroupAttribute attribute
По умолчанию:
AuthLDAPSubGroupAttribute member uniqueMember
Контекст: directory, .htaccess
Переопределение: AuthConfig
Статус: Расширение
Модуль: mod_authnz_ldap
Совместимость: Доступно в версии 2.3.0 и более поздних

Объект LDAP-группы может содержать членов, которые являются пользователями и членами, которые являются группами (называемыми вложенными или подгруппами). Директива AuthLDAPSubGroupAttribute идентифицирует метки членов группы, а директива AuthLDAPGroupAttribute идентифицирует метки пользовательских членов. Несколько атрибутов могут использоваться, указывая эту директиву несколько раз. Если не указано, то mod_authnz_ldap использует атрибуты member и uniqueMember.

Директива AuthLDAPSubGroupClass

Описание: Указывает значения LDAP objectClass, которые идентифицируют объекты каталога, являющиеся группами во время обработки подгрупп.
Синтаксис:
AuthLDAPSubGroupClass LdapObjectClass
По умолчанию:
AuthLDAPSubGroupClass groupOfNames groupOfUniqueNames
Контекст: directory, .htaccess
Переопределение: AuthConfig
Статус: Расширение
Модуль: mod_authnz_ldap
Совместимость: Доступно в версии 2.3.0 и более поздних

Объект LDAP-группы может содержать членов, которые являются пользователями и членами, которые являются группами (называемыми вложенными или подгруппами). Директива AuthLDAPSubGroupAttribute идентифицирует метки членов, которые могут быть подгруппами текущей группы (в отличие от пользовательских членов). Директива AuthLDAPSubGroupClass указывает значения LDAP objectClass, используемые для проверки того, что эти потенциальные подгруппы на самом деле являются объектами группы. Проверенные подгруппы затем могут быть проверены на наличие дополнительных членов или подгрупп. Несколько атрибутов могут использоваться, указывая эту директиву несколько раз. Если не указано, то mod_authnz_ldap использует значения groupOfNames и groupOfUniqueNames.

Директива AuthLDAPURL

Описание: URL, определяющий параметры поиска LDAP
Синтаксис:
AuthLDAPURL url [NONE|SSL|TLS|STARTTLS]
Контекст: directory, .htaccess
Переопределение: AuthConfig
Статус: Расширение
Модуль: mod_authnz_ldap

URL в формате RFC 2255, который определяет параметры поиска LDAP. Синтаксис URL:

ldap://host:port/basedn?attribute?scope?filter

Если требуется указать несколько URL-адресов LDAP, которые Apache должен проверять по очереди, синтаксис будет следующим:

AuthLDAPURL "ldap://ldap1.example.com ldap2.example.com/dc=..."

Примечание: Если вы указываете несколько серверов, вам необходимо заключить всю строку URL в кавычки; в противном случае вы получите ошибку: "AuthLDAPURL принимает один аргумент, URL для определения подключения LDAP..." Конечно, вы можете использовать параметры поиска на каждом из них.

ldap
Для обычного LDAP используйте строку ldap. Для защищённого LDAP используйте ldaps вместо неё. Защищённый LDAP доступен только если Apache был скомпилирован с поддержкой SSL для библиотеки LDAP.
host:port

Имя/порт сервера LDAP (по умолчанию localhost:389 для ldap, и localhost:636 для ldaps). Для указания нескольких резервных серверов LDAP просто перечислите все сервера, разделив их пробелами. mod_authnz_ldap будет пытаться подключиться к каждому серверу по очереди, пока не установит успешное соединение. Если указаны несколько серверов LDAP, то весь URL LDAP должен быть заключён в двойные кавычки.

После успешного подключения к серверу, это соединение остаётся активным до завершения работы процесса httpd или до выхода из строя сервера LDAP.

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

basedn
DN ветви каталога, с которой должны начинаться все поиски. По меньшей мере, это должна быть вершина дерева каталога, но также может быть указана подветвь в каталоге.
attribute
Атрибут для поиска. Хотя RFC 2255 допускает запятую в качестве разделителя атрибутов, будет использован только первый атрибут, независимо от того, сколько их указано. Если атрибуты не указаны, по умолчанию используется uid. Рекомендуется выбирать атрибут, уникальный для всех записей в поддереве, которое вы будете использовать. Все перечисленные атрибуты будут помещены в среду с префиксом AUTHENTICATE для использования другими модулями.
scope
Область поиска. Может быть либо one, либо sub. Обратите внимание, что область base также поддерживается RFC 2255, но не поддерживается данным модулем. Если область не указана или указана область base, по умолчанию используется область sub.
filter
Действительный фильтр поиска LDAP. Если не указан, по умолчанию используется (objectClass=*), что означает поиск всех объектов в дереве. Фильтры ограничены примерно 8000 символами (определение MAX_STRING_LEN в исходном коде Apache). Этого должно быть достаточно для любого приложения. В версиях 2.4.10 и более поздних, ключевое слово none отключает использование фильтра; это требуется некоторыми примитивными серверами LDAP.

При проведении поиска атрибут, фильтр и имя пользователя, переданные клиентом HTTP, объединяются для создания фильтра поиска, который выглядит так: (&(filter)(attribute=username)).

Например, рассмотрим URL ldap://ldap.example.com/o=Example?cn?sub?(posixid=*). При попытке подключения клиентом с именем пользователя Babs Jenson, результирующий фильтр поиска будет (&(posixid=*)(cn=Babs Jenson)).

Можно добавить необязательный параметр, чтобы позволить URL LDAP переопределить тип соединения. Этот параметр может быть одним из следующих:

NONE
Установить незащищённое соединение на стандартном порту LDAP. Это то же, что и ldap:// на порту 389.
SSL
Установить защищённое соединение на стандартном защищённом порту LDAP. Это то же, что и ldaps://
TLS | STARTTLS
Установить обновлённое защищённое соединение на стандартном порту LDAP. Это соединение будет инициировано на порте 389 по умолчанию, а затем обновлено до защищённого соединения на том же порту.

Примеры AuthLDAPURL URL приведены выше.

© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/mod/mod_authnz_ldap.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API