Назад | Перейти на главную страницу

Как отключить аутентификацию Kerberos только для корня моего сайта?

У меня есть аутентификация на основе Kerberos, и я хочу отключить ее только для корневого URL: http://mysite.com/. И я хочу, чтобы он продолжал нормально работать на любой другой странице, например http://mysite.com/page1.

У меня в .htaccess есть такие вещи:

AuthType Kerberos
AuthName "Domain login"
KrbAuthRealms DOMAIN.COM
KrbMethodK5Passwd on
Krb5KeyTab /etc/httpd/httpd.keytab
require valid-user

Я хочу отключить его только для корневого URL. В качестве обходного пути можно отключить, используя .htaccess в конфигурации виртуального хоста. К сожалению, я не знаю, как это сделать.

Часть моего vhost.conf:

    <Directory /home/user/www/current/public/>
            Options -MultiViews +FollowSymLinks
            AllowOverride All
            Order allow,deny
            Allow from all
    </Directory>

UPD. Я использую Apache / 2.2.3 (Linux / SUSE)

Я пробовал использовать такую ​​версию .htaccess:

SetEnvIf Request_URI ^/$ rootdir=1
Allow from env=rootdir
Satisfy Any
AuthType Kerberos
AuthName "Domain login"
KrbAuthRealms DOMAIN.COM
KrbMethodK5Passwd on
Krb5KeyTab /etc/httpd/httpd.keytab
require valid-user

К сожалению, такая конфигурация включает Kerberos AuthType для всех URL-адресов. Я попытался разместить первые 3 строчки

SetEnvIf Request_URI ^/$ rootdir=1
Allow from env=rootdir
Satisfy Any

после основного блока, но мне это не помогло.

я переехал mod_auth_kerb конфигурацию в vhost.conf. И использовал Location директива для отключения авторизации на некоторых URL.

    # root_url
    <LocationMatch "(^\/$|^$)">
            Satisfy Any
    </LocationMatch>
    <Location /incidents/last>
            Satisfy Any
    </Location>

    <Directory /home/user/www/>
            Options -MultiViews +FollowSymLinks
            AllowOverride None
            Order allow,deny
            Allow from all
            AuthType Kerberos
            AuthName "Domain login"
            KrbAuthRealms DOMAIN.COM
            KrbMethodK5Passwd On
            Krb5KeyTab /etc/httpd/httpd.keytab
            require valid-user
    </Directory>

Это решило мою проблему.

Как вы это сделаете, будет зависеть от того, используете ли вы Apache 2.2 или Apache 2.4. Я на самом деле не тестировал их, поэтому вполне возможно, что он вообще не будет работать или может потребоваться некоторая настройка.

Для 2.2 мы можем использовать SetEnvIf установить переменную, если они запрашивают / и использовать Allow from и Satisfy any для контроля доступа. Вся ваша существующая конфигурация должна оставаться как есть:

SetEnvIf Request_URI ^/$ rootdir=1
Allow from env=rootdir
Satisfy Any

В версии 2.4 есть изменения в аутентификация и авторизация. Теперь у нас есть набор <Require> блоки, которые вы можете обернуть вокруг любого контроля доступа для точной настройки авторизации:

SetEnvIf Request_URI ^/$ rootdir=1

<RequireAny>
  AuthType Kerberos
  AuthName "Domain login"
  KrbAuthRealms DOMAIN.COM
  KrbMethodK5Passwd on
  Krb5KeyTab /etc/httpd/httpd.keytab
  Require valid-user
  Require env rootdir=1
</RequireAny>

В <RequireAny> блок означает, что кто угодно из Require директивы должны совпадать для успешной авторизации. Это также <RequireAll> и <RequireNone> блоки.

Попробуйте AllowOverride None Это отключит .htaccess