У Вас могут быть различные наборы, переписывают правила для различных местоположений. То, когда переписывают модуль, встречается last
, это прекращает обрабатывать текущий набор, и переписанный запрос передается еще раз для нахождения соответствующего местоположения (и новый набор перезаписи правил). Если правило заканчивается break
, перезапись также останавливается, но переписанный запрос не передается другому местоположению.
Таким образом, если существует два места: loc1 и loc2, и существуют правило перезаписи в loc1, который изменяет loc1 на loc2 И заканчивается last
, запрос будет переписан и передан местоположению loc2. Если правило заканчивается break
, это будет принадлежать местоположению loc1.
Вам нужно установить AuthLDAPSubGroupDepth
, чтобы это работало. Целое число, которое вы здесь указываете, определяет максимальную глубину вложенности подгрупп, которая будет оценена перед прекращением поиска пользователем.
Добавьте это в свою конфигурацию:
AuthLDAPSubGroupDepth 1
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.
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.
Помимо 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. Это специальный «расширенный» оператор сопоставления, который просматривает цепочку предков в объектах вплоть до корня, пока не найдет совпадение.
См. Также: