web-dev-qa-db-ja.com

サイトのルートに対してのみ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

残念ながら、このような構成では、すべてのURLに対してKerberosAuthTypeが使用されます。最初の3行を配置しようとしました

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

メインブロックの後、しかしそれは私を助けませんでした。

1
petRUShka

引っ越した mod_auth_kerbvhost.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>

それで私の問題は解決しました。

2
petRUShka

これをどのように行うかは、Apache2.2とApache2.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>ブロックもあります。

0
Ladadadada