Аутентификация LDAP и подкаталоги

Аутентификация LDAP и подкаталоги

Мой сервер Apache использует LDAP для аутентификации пользователей, когда они хотят получить доступ к корневому каталогу сервера.

Я хотел бы добавить еще одну аутентификацию (без запроса), чтобы разрешить/запретить группам пользователей (определенным в файле на сервере), которые уже аутентифицированы на веб-сайте, доступ к страницам в определенных каталогах.

Как мне это сделать в файле конфигурации Apache?

На данный момент это выглядит так:

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>

решение1

Предположим, что вы хотите разрешить всем действительным пользователям (но не неавторизованным пользователям) доступ к большей части вашего веб-сайта, но разрешить доступ к некоторым разделам только ограниченному числу пользователей или групп. Тогда вам нужно будет сделать что-то вроде этого:

<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>

В качестве альтернативы, если вы все еще застряли на Apache 2.2, вы можете сделать что-то вроде:

<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>

С этой настройкой все допустимые пользователи могли получить доступ /, как сейчас, вместе с большей частью сайта. Затем, в 2.4, только люди, которые были в группе LDAP, secureнонетв группе LDAP salesбудет иметь доступ к вещам ниже /secure/(с 2.2 это secureмогут сделать только те, кто находится в группе). Пользователям не будет предложено повторно пройти аутентификацию, их существующая аутентификация будет использоваться повторно, с проверкой имен пользователей/групп. Наконец, вещи ниже /secure/jim/будут видны только Джиму.

Вы можете найти документацию по различным параметрам requireв документации Apache HTTPD 2.4 в разделе mod_authz_core / Require. Для Apache 2.2 вам понадобитсяДокументация Apache HTTPD 2.2 для mod_authnz_ldap

Связанный контент