Estou trabalhando com autenticação LDAP com a seguinte configuração
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
Isso funciona, no entanto, tenho que colocar todos os usuários nos quais quero me autenticar MySpecificGroup
. Mas no servidor LDAP eu configurei que MySpecificGroup
também contém o grupo MyOtherGroup
com outra lista de usuários.
Mas esses usuários MyOtherGroup
não são autenticados, tenho que adicioná-los manualmente MySpecificGroup
e basicamente não podemos usar o agrupamento aninhado. Estou usando o Windows SBS 2003.
Existe uma maneira de configurar o Apache LDAP para fazer isso? Ou existe um problema com possível recursão infinita e, portanto, não é permitido?
fonte
AuthnProviderAlias
por enquanto. Se ninguém irá oferecer solução para Apache 2.2, generosidade é sua :)Além disso
AuthLDAPSubGroupDepth
, disponível apenas no apache 2.4, é possível, ao usar o Microsoft AD LDAP, autorizar usando grupos aninhados usando a regra de correspondência LDAP_MATCHING_RULE_IN_CHAIN. Isso é muito mais rápido do que pesquisar subgrupos no cliente, porque isso é feito no servidor DC com menos consultas na rede.A sequência
1.2.840.113556.1.4.1941
é um OID chamadoLDAP_MATCHING_RULE_IN_CHAIN
. Esse OID é atribuído pela Microsoft para ser usado com sua implementação LDAP (parte do Active Directory). Você não pode usá-lo com outros servidores LDAP. O formato redeable humano é:iso(1).member_body(2).us(840).microsoft(113556).ad(1).as_schema(4).LDAP_MATCHING_RULE_IN_CHAIN(1941)
Da documentação da Microsoft:
Veja também:
fonte
LDAP_MATCHING_RULE_IN_CHAIN
para recuperar a associação do grupo recursivo e passá-lo como um cabeçalho para um servidor back-end (usando o Apache como um proxy reverso)?mod_authnz_ldap
não fornece isso. No entanto, você pode usar oLDAP_MATCHING_RULE_IN_CHAIN
filtro LDAP no seu aplicativo. Veja: stackoverflow.com/a/34075052/290087Parece que sua única opção no Apache 2.2 é listar todos os grupos incluídos pelo seu grupo autorizado principal.
Isso deve ser razoável se seus grupos aninhados não forem muito complicados.
Cruzando domínios do AD (usando dois servidores LDAP)
Você pode configurar o OpenLDAP com a sobreposição slapd_meta em execução no servidor da Web para proxy sua autenticação.
O arquivo /etc/ldap/slapd.conf deve se parecer com:
Então, sua sub-rotina mod_authnz_ldap seria algo como:
Isso exigirá alguma massagem para que funcione, mas acho que essa é a ideia geral.
fonte
Embora a solução fornecida por @Mircea_Vutcovici tenha funcionado para mim, minha única crítica é que as pessoas podem ficar melindrosas quando vêem operadores bit a bit em uso.
Por exemplo, entregarei uma instalação do Apache Bloodhound, que usa o Apache HTTPd como front-end com autenticação de grupo do AD, a um grupo de colegas desenvolvedores. Eles terão problemas em lidar com os operadores bit a bit. Administradores não serão tão delicados, é claro ... espero.
Dito isto, tenho uma solução que não usa o operador bit a bit e que não usa várias definições de grupo LDAP.
A seguinte configuração funciona para mim:
A parte crítica foi a seguinte configuração:
AuthLDAPMaxSubGroupDepth não funciona por si só, nem quando associado a AuthLDAPSubgroupAttribute. Foi somente quando eu usei AuthLDAPSubGroupClass que a autenticação em subgrupos começou a funcionar ... pelo menos para mim e minha situação.
fonte