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
メインブロックの後、しかしそれは私を助けませんでした。
引っ越した 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>
それで私の問題は解決しました。
これをどのように行うかは、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>
ブロックもあります。