Autenticação LDAP e subdiretórios

Autenticação LDAP e subdiretórios

Meu servidor Apache está usando o LDAP para autenticar usuários quando eles desejam acessar a raiz do servidor.

Gostaria de adicionar outra autenticação (sem prompt) para permitir/proibir grupos de usuários (definidos em um arquivo no servidor), que já estão autenticados no site, de acessar páginas em diretórios específicos.

Como eu poderia fazer isso no meu arquivo de configuração do Apache?

Atualmente está assim:

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>

Responder1

Supondo que o que você deseja é permitir que todos os usuários válidos (mas nenhum usuário não autenticado) acessem a maior parte do seu site, mas permitir apenas que alguns usuários ou grupos acessem algumas áreas, o que você precisa fazer é 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>

Como alternativa, se você ainda estiver preso no Apache 2.2, opte 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>

Com essa configuração, todos os usuários válidos poderiam acessar /como agora, junto com a maior parte do site. Então, no 2.4, apenas as pessoas que estavam no grupo LDAP secure, masnãono grupo LDAP salesseria capaz de acessar as coisas abaixo /secure/(com 2.2 são apenas aqueles no securegrupo que poderiam). Os usuários não seriam solicitados a autenticar novamente, sua autenticação existente seria reutilizada, com nomes de usuários/grupos verificados. Finalmente, as coisas abaixo /secure/jim/só seriam visíveis para Jim.

Você pode encontrar a documentação sobre as diferentes opções de exigêncianos documentos do Apache HTTPD 2.4 em mod_authz_core / Require. Para o Apache 2.2, você precisaria doDocumentos Apache HTTPD 2.2 para mod_authnz_ldap

informação relacionada