У меня работает аутентификация LDAP со следующей настройкой
AuthName "whatever"
AuthType Basic
AuthBasicProvider ldap
AuthLDAPUrl "ldap://server/OU=SBSUsers,OU=Users,OU=MyBusiness,DC=company,DC=local?sAMAccountName?sub?(objectClass=*)"
Require ldap-group CN=MySpecificGroup,OU=Security Groups,OU=MyBusiness,DC=company,DC=local
Это работает, однако я должен поставить всех пользователей, в которых я хочу пройти аутентификацию MySpecificGroup
. Но на сервере LDAP я настроил, что MySpecificGroup
также содержит группу MyOtherGroup
с другим списком пользователей.
Но эти пользователи MyOtherGroup
не аутентифицированы, я должен вручную добавить их всех MySpecificGroup
и не могу использовать вложенную группировку. Я использую Windows SBS 2003.
Есть ли способ настроить Apache LDAP для этого? Или есть проблема с возможной бесконечной рекурсией и, следовательно, не допускается?
источник
AuthnProviderAlias
сейчас. Если никто не предложит решение для Apache 2.2, щедрость ваша :)Кроме того
AuthLDAPSubGroupDepth
, это доступно только в Apache 2.4, при использовании Microsoft AD LDAP можно выполнять авторизацию с использованием вложенных групп, используя правило сопоставления LDAP_MATCHING_RULE_IN_CHAIN. Это намного быстрее, чем поиск подгрупп на клиенте, потому что это делается на сервере DC с меньшим количеством запросов по сети.Строка
1.2.840.113556.1.4.1941
является OID называетсяLDAP_MATCHING_RULE_IN_CHAIN
. Этот OID назначается Microsoft для использования с реализацией LDAP (часть Active Directory). Вы не можете использовать его с другими серверами LDAP. Формат, пригодный для человека:iso(1).member_body(2).us(840).microsoft(113556).ad(1).as_schema(4).LDAP_MATCHING_RULE_IN_CHAIN(1941)
Из документации Microsoft:
Смотрите также:
источник
LDAP_MATCHING_RULE_IN_CHAIN
для получения рекурсивного членства в группе и передать его в качестве заголовка на внутренний сервер (используя Apache в качестве обратного прокси-сервера) ??mod_authnz_ldap
не обеспечивает это. Однако вы можете использоватьLDAP_MATCHING_RULE_IN_CHAIN
фильтр LDAP в вашем приложении. См .: stackoverflow.com/a/34075052/290087Похоже, что ваша единственная возможность в Apache 2.2 - перечислить каждую группу, которая входит в вашу основную авторизованную группу.
Это должно быть разумно, если ваши вложенные группы не слишком сложны.
Пересечение доменов AD (с использованием двух серверов LDAP)
Вы можете настроить OpenLDAP с оверлеем slapd_meta, работающим на вашем веб-сервере, для прокси-аутентификации.
/etc/ldap/slapd.conf должен выглядеть примерно так:
Тогда ваш раздел mod_authnz_ldap будет выглядеть примерно так:
Это потребует некоторого массажа, чтобы заставить его работать, но я думаю, что это общая идея.
источник
Хотя решение, предоставленное @Mircea_Vutcovici, сработало для меня, моя единственная критика заключается в том, что люди могут стать брезгливыми, когда увидят, что используются битовые операторы.
Например, я передам установку коллеге-разработчикам установки Apache Bloodhound, которая использует Apache HTTPd в качестве внешнего интерфейса с аутентификацией группы AD. У них будут проблемы с битовыми операторами. Админы не будут такими брезгливыми конечно ... надеюсь.
При этом у меня есть решение, которое не использует побитовый оператор и не использует несколько определений ldap-группы.
У меня работает следующий конфиг:
Критическая часть была следующая конфигурация:
AuthLDAPMaxSubGroupDepth не работает ни сам по себе, ни в сочетании с AuthLDAPSubgroupAttribute. Только когда я использовал AuthLDAPSubGroupClass, аутентификация для подгрупп стала работать ... по крайней мере, для меня и моей ситуации.
источник