Как аутентифицировать пользователей во вложенных группах в Apache LDAP?

У Вас могут быть различные наборы, переписывают правила для различных местоположений. То, когда переписывают модуль, встречается last, это прекращает обрабатывать текущий набор, и переписанный запрос передается еще раз для нахождения соответствующего местоположения (и новый набор перезаписи правил). Если правило заканчивается break, перезапись также останавливается, но переписанный запрос не передается другому местоположению.

Таким образом, если существует два места: loc1 и loc2, и существуют правило перезаписи в loc1, который изменяет loc1 на loc2 И заканчивается last, запрос будет переписан и передан местоположению loc2. Если правило заканчивается break, это будет принадлежать местоположению loc1.

21
задан 20 November 2011 в 16:36
3 ответа

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

Добавьте это в свою конфигурацию:

AuthLDAPSubGroupDepth 1

Дополнительная информация: здесь и здесь .

19
ответ дан 2 December 2019 в 20:02

It looks like your only option in Apache 2.2 is to list every group that is included by your main authorized group.

Require ldap-group  CN=MySpecificGroup,OU=Security Groups,OU=MyBusiness,DC=company,DC=local
Require ldap-group  CN=MyOtherGroup,OU=Security Groups,OU=MyBusiness,DC=company,DC=local

This should be reasonable if your nested groups aren't too complicated.


Crossing AD Domains(using two LDAP servers)

You can set up OpenLDAP with the slapd_meta overlay running on your web server to proxy your authentication.

/etc/ldap/slapd.conf should look something like:

database meta
suffix   "DC=company,DC=local"
uri      "ldap://a.foo.com/OU=MyBusiness,DC=company,DC=local"
uri      "ldap://b.foo.com/OU=otherdomainsuffix,DC=company,DC=local"

Then, your mod_authnz_ldap stanza would look something like:

AuthName            "whatever"
AuthType            Basic
AuthBasicProvider   ldap
AuthLDAPUrl         "ldapi:///DC=company,DC=local?sAMAccountName?sub?(objectClass=*)"
Require ldap-group  CN=MySpecificGroup,OU=Security Groups,OU=MyBusiness,DC=company,DC=local
Require ldap-group  CN=MyOtherGroup,OU=Security Groups,OU=otherdomainsuffix,DC=company,DC=local

This will require some massaging to get it to work, but I think this is the general idea.

6
ответ дан 2 December 2019 в 20:02

Помимо AuthLDAPSubGroupDepth , который доступен только в apache 2.4, при использовании Microsoft AD LDAP можно выполнить авторизацию с использованием вложенных групп с помощью правила сопоставления LDAP_MATCHING_RULE_IN_CHAIN. Это намного быстрее, чем поиск подгрупп на клиенте, поскольку он выполняется на сервере DC с меньшим количеством запросов по сети.

Require ldap-filter memberof:1.2.840.113556.1.4.1941:=CN=Access to Apache,OU=My Organization Unit,DC=company,DC=com

Строка 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:

Это правило ограничено фильтрами, которые применяются к DN. Это специальный «расширенный» оператор сопоставления, который просматривает цепочку предков в объектах вплоть до корня, пока не найдет совпадение.

См. Также:

33
ответ дан 2 December 2019 в 20:02

Теги

Похожие вопросы