Autenticación LDAP y subdirectorios

Autenticación LDAP y subdirectorios

Mi servidor Apache utiliza LDAP para autenticar a los usuarios cuando desean acceder a la raíz del servidor.

Me gustaría agregar otra autenticación (sin solicitud) para permitir/prohibir que grupos de usuarios (definidos en un archivo en el servidor), que ya están autenticados en el sitio web, accedan a páginas en directorios específicos.

¿Cómo podría hacer esto en mi archivo de configuración de Apache?

Actualmente se ve así:

NameVirtualHost *:443

<VirtualHost *:443>
    ServerName some.ip.address

    SSLEngine on
    SSLCertificateFile    /etc/ssl/certs/ssl-cert.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert.key

    <Directory /var/www/mywebsite>
        AllowOverride All
        Order deny,allow
        Deny from All

        AuthType Basic
        AuthName "LDAP Access - Mywebsite"
        AuthBasicProvider ldap
        AuthzLDAPAuthoritative on
        AuthLDAPURL "ldap://myldapserver:389/ou=mygroup,dc=mydc,dc=com?uid?sub?(objectClass=*)"

        AuthLDAPBindDN "uid=someuser,ou=apache,dc=mydc,dc=com"
        AuthLDAPBindPassword "mysuperpassword"
        Require valid-user
        Satisfy all
    </Directory>

    <Directory /var/www/mywebsite/directory>
        #What do I put in here ?
    </Directory>

</VirtualHost>

Respuesta1

Suponiendo que lo que desea es permitir que todos los usuarios válidos (pero no los usuarios no autenticados) accedan a la mayor parte de su sitio web, pero solo permita que un puñado de usuarios o grupos accedan a algunas áreas, lo que deberá hacer es algo como:

<Directory /var/www/mywebsite>
   # Ldap authentication bits here as now
</Directory>
<Location /secure/>
   <RequireAll>
      Require group secure
      Require not group sales
   </RequireAll>
</Location>
<Location /secure/jim/>
   <RequireAll>
      Require user jim
   </RequireAll>
</Location>

Alternativamente, si todavía estás atascado en Apache 2.2, puedes optar por algo como:

<Directory /var/www/mywebsite>
   # Ldap authentication bits here as now
</Directory>
<Location /secure/>
   Require ldap-group cn=secure
   # Negative matching not possible with 2.2
</Location>
<Location /secure/jim/>
   Require ldap-user jim
</Location>

Con esa configuración, todos los usuarios válidos podrían acceder /como ahora, junto con la mayor parte del sitio. Luego, en 2.4, sólo las personas que estaban en el grupo LDAP secureperonoen el grupo LDAP salespodrían acceder a las cosas siguientes /secure/(con 2.2, solo aquellos en el securegrupo podrían hacerlo). A los usuarios no se les pedirá que se vuelvan a autenticar, su autenticación existente se reutilizará, con los nombres de usuario/grupos marcados. Finalmente, las cosas siguientes /secure/jim/solo serían visibles para Jim.

Puede encontrar la documentación sobre las diferentes opciones requeridas.en los documentos de Apache HTTPD 2.4 en mod_authz_core/Require. Para Apache 2.2, necesitarías elDocumentos de Apache HTTPD 2.2 para mod_authnz_ldap

información relacionada