He trabajado la autenticación LDAP con la siguiente configuración
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
Esto funciona, sin embargo, tengo que poner a todos los usuarios que quiero autenticar MySpecificGroup
. Pero en el servidor LDAP que configuré MySpecificGroup
también contiene el grupo MyOtherGroup
con otra lista de usuarios.
Pero esos usuarios MyOtherGroup
no están autenticados, tengo que agregarlos manualmente MySpecificGroup
y básicamente no puedo usar la agrupación anidada. Estoy usando Windows SBS 2003.
¿Hay alguna manera de configurar Apache LDAP para hacer esto? ¿O hay un problema con una posible recursión infinita y, por lo tanto, no está permitido?
fuente
AuthnProviderAlias
por ahora. Si nadie ofrecerá una solución para Apache 2.2, la recompensa es suya :)Además
AuthLDAPSubGroupDepth
, eso está disponible solo en Apache 2.4, es posible, cuando se usa Microsoft AD LDAP, hacer una autorización usando grupos anidados usando la regla de coincidencia LDAP_MATCHING_RULE_IN_CHAIN. Esto es mucho más rápido que buscar subgrupos en el cliente, porque se realiza en el servidor DC con menos consultas a través de la red.La cadena
1.2.840.113556.1.4.1941
es un OID llamadoLDAP_MATCHING_RULE_IN_CHAIN
. Microsoft asigna este OID para usarlo con su implementación LDAP (parte de Active Directory). No puede usarlo con otros servidores LDAP. El formato humano redeable es:iso(1).member_body(2).us(840).microsoft(113556).ad(1).as_schema(4).LDAP_MATCHING_RULE_IN_CHAIN(1941)
De la documentación de Microsoft:
Ver también:
fuente
LDAP_MATCHING_RULE_IN_CHAIN
para recuperar la pertenencia recursiva al grupo y pasarla como encabezado a un servidor de fondo (usando Apache como proxy inverso)?mod_authnz_ldap
no proporciona esto Sin embargo, puede usar elLDAP_MATCHING_RULE_IN_CHAIN
filtro LDAP en su aplicación. Ver: stackoverflow.com/a/34075052/290087Parece que su única opción en Apache 2.2 es enumerar todos los grupos incluidos por su grupo autorizado principal.
Esto debería ser razonable si sus grupos anidados no son demasiado complicados.
Cruzando dominios AD (usando dos servidores LDAP)
Puede configurar OpenLDAP con la superposición slapd_meta que se ejecuta en su servidor web para representar su autenticación.
/etc/ldap/slapd.conf debería verse más o menos así:
Entonces, su estrofa mod_authnz_ldap se vería así:
Esto requerirá un poco de masaje para que funcione, pero creo que esta es la idea general.
fuente
Si bien la solución proporcionada por @Mircea_Vutcovici funcionó para mí, mi única crítica es que las personas pueden ser aprensivas cuando ven a operadores bit a bit en uso.
Por ejemplo, entregaré una instalación Apache Bloodhound, que usa Apache HTTPd como front-end con autenticación de grupo AD, a un grupo de desarrolladores. Tendrán problemas para enfrentarse a los operadores bit a bit. Los administradores no serán tan aprensivos, por supuesto ... espero.
Dicho esto, tengo una solución que no usa el operador bit a bit y que no usa múltiples definiciones de grupo ldap.
La siguiente configuración funciona para mí:
La parte crítica fue la siguiente configuración:
AuthLDAPMaxSubGroupDepth no funciona por sí solo, ni cuando se combina con AuthLDAPSubgroupAttribute. Fue solo cuando usé AuthLDAPSubGroupClass que la autenticación contra subgrupos comenzó a funcionar ... al menos para mí y mi situación.
fuente