Apache UserDir защищен паролем LDAP (не нужен «public_html»)

Я запускаю Apache 2.4.6-93 на CentOS 7. Мне нужно: у каждого пользователя должен быть свой домашний каталог (достигается через UserDir), но каталоги должны быть Пароль защищен. Один пользователь не должен видеть каталог другого пользователя.

Мне удалось настроить аутентификацию с помощью AD следующим образом:

<Directory "/mnt/shared/apache_userdir/*/private_html">
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
AuthName "Please Login"
AuthBasicProvider ldap
AuthType Basic
AuthLDAPGroupAttribute member
AuthLDAPGroupAttributeIsDN On
AuthLDAPURL ldap://x.x.x.x:389/DC=example,DC=org?sAMAccountName?sub?(objectClass=*)
AuthLDAPBindDN CN=binduser,OU=someou,OU=anotherou,DC=example,DC=org
AuthLDAPBindPassword somepassword
Require ldap-group CN=group-test-1-,OU=someou,OU=anotherou,DC=example,DC=org

Это работает. Пользователь может получить доступ к своему домашнему каталогу, используя: https://example.com/~username

Но аутентификация указывает на жестко заданную группу (в данном случае: group-test-1). Любой пользователь, входящий в эту группу, получит доступ к другим пользовательским каталогам. Я также мог бы жестко запрограммировать некоторых пользователей, используя Требовать ldap-user foobar , но я хочу, чтобы это требование было динамическим для пользователя, который обращается к веб-сайту.

Что-то вроде: Требовать ldap-user% имя пользователя

Есть ли способ получить имя пользователя в URL-адресе и использовать его в качестве переменной для этого параметра?

Спасибо.

1
задан 28 November 2020 в 05:03
1 ответ
<DirectoryMatch "/mnt/shared/apache_userdir/(?<username>[^/]+)/private_html">
  ...
  Require ldap-user %{env:MATCH_USERNAME}
</DirectoryMatch>

См. DirectoryMatch, где есть очень похожий пример. Вам нужен Apache 2.4.8 или выше, чтобы он работал.

0
ответ дан 28 November 2020 в 02:17

Теги

Похожие вопросы