如何为虚拟主机设置mod_auth_cas?

我在/etc/apache2/httpd.conf有以下内容:

 Include /private/etc/apache2/passenger_pane_vhosts/*.conf 

我在/etc/apache2/passenger_pane_vhosts/my_site.conf有以下内容:

 LoadModule auth_cas_module /usr/libexec/apache2/mod_auth_cas.so CASCookiePath /tmp/mod_auth_cas/ CASVersion 2 CASDebug on CASValidateServer off CASAllowWildcardCert on CASTimeout 86400 CASIdleTimeout 7200 CASLoginURL https://cas.mycompany.com/cas/login CASValidateURL https://cas.mycompany.com/cas/serviceValidate CASCookieDomain hattip-dev.mitre.org LogLevel debug <VirtualHost *:80> LogLevel debug ServerName hattip.local DocumentRoot "/path/to/rails_app/public" RailsEnv development <Location /> AuthType CAS AuthName "MyCompany CAS" CASAuthNHeader MOD_AUTH_CAS_USER require valid-user </Location> <directory "/path/to/rails_app/public"> Order allow,deny Allow from all </directory> </VirtualHost> 

Apache将会正常启动,但是对Rails应用程序的每个请求都会返回一个403,而不会redirect到CAS服务器。 日志中没有与CAS有关的信息,即使CASDebug on并且LogLevel是我可以设置的任何地方都可以进行debug

PS:我已经尝试了上述configuration的一些变体,包括将mod_auth_cas声明放入<VirtualHost>定义中,但大多数在启动时失败。 我也尝试删除<Location>块并将该身份validation移动到<Directory>块中:没有更改。

有谁知道我可以如何让mod_auth_cas实际redirect到我的CAS服务器?

(从StackOverflow移动)

得到它了。 答案是结合<Location><Directory>块并添加一个Satisfy指令:

 LoadModule auth_cas_module /usr/libexec/apache2/mod_auth_cas.so CASCookiePath /tmp/mod_auth_cas/ CASVersion 2 CASDebug on CASValidateServer off CASAllowWildcardCert on CASTimeout 86400 CASIdleTimeout 7200 LogLevel debug <VirtualHost *:80> CASCookieDomain "myapp" CASLoginURL "https://cas.mycompany.com/cas/login" CASValidateURL "https://cas.mycompany.com/cas/serviceValidate" LogLevel debug ServerName "myapp" DocumentRoot "/path/to/rails_app/public" RailsEnv development <Location /> Order deny,allow Deny from all AuthType CAS AuthName "MyCompany CAS" require valid-user Satisfy Any </Location> </VirtualHost>