Как принять несколько вариантов аутентификации в Apache?

Я хочу защитить путь в моем VirtualHost, но разрешить пользователям различные варианты аутентификации (например, mod-auth-cas, mod-auth-openid а также mod-auth-digest.) Как настроить определение виртуального хоста, чтобы разрешить несколько auth-typeдля того же места?

4 ответа

Проблема с несколькими типами аутентификации состоит в том, что они имеют несовместимые протоколы. Вы можете попробовать метод, показанный в документации 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 для разных Virtual Host s

более подробная информация о моем решении в коротком сообщении в блоге: текст ссылки

HTH, чао:) Джанлука

Вы пробовали " удовлетворить любого"?

Другое решение — дифференцировать аутентификацию на основе содержимого заголовка HTTP с помощью предложения:

       <If "%{HTTP:Authorization} =~ /^Basic/">
   AuthType Basic
   AuthUserFile /path/to/.htpasswd
   Require valid-user
 </If>
 <Elseif "%{HTTP:Authorization} =~ /^Bearer/">
   AuthOpenIDEnabled On
   Require valid-user
 </Elseif>
 <Else>
   AuthType CAS
   Require valid-user
 </Else>
Другие вопросы по тегам