Я хочу защитить путь в моем VirtualHost, но разрешить пользователям различные варианты аутентификации (например, mod-auth-cas
, mod-auth-openid
и mod-auth-digest
.) Как мне настроить определение виртуального хоста, чтобы разрешить несколько auth-type
s для того же места?
Проблема с несколькими типами аутентификации заключается в том, что они, как правило, имеют несовместимые протоколы. Вы можете попробовать технику, показанную на Документация Shibboleth, где вы помещаете все в подкаталог, создаете символическую ссылку на этот каталог для каждого типа аутентификации, который хотите поддерживать, а затем настраиваете каждое расположение символической ссылки для другого типа аутентификации.
<Location /basic>
AuthType Basic
AuthUserFile /path/to/.htpasswd
require valid-user
</Location>
<Location /cas>
AuthType CAS
require valid-user
</Location>
<Location /openid>
AuthOpenIDEnabled On
require valid-user
</Location>
У меня была почти такая же ситуация, решаемая следующим образом:
на уровне конфигурации сервера в apache2.conf (при условии, что дистрибутивы на основе Debian)
<AuthnProviderAlias method1 auth1_name >
# config options
# ...
</AuthnProviderAlias>
<AuthnProviderAlias method2 auth2_name >
# config options
# ...
</AuthnProviderAlias>
в файле конфигурации виртуального хоста:
<VirtualHost *>
# config options
# ...
<Location /your_location>
# config options
AuthBasicProvider auth1_name auth2_name
# other needed config options
# ...
</Location>
</VirtualHost>
таким образом вы можете использовать разные методы авторизации / аутентификации с разными именами в одной директиве Location для разных VirtualHosts.
подробнее о моем решении в небольшом сообщении в блоге: текст ссылки
HTH, чао :) Джанлука
Ты пробовала "Удовлетворительно"?