如何为 VirtualHost 设置 mod_auth_cas?

Jam*_*sen 5 ruby-on-rails phusion-passenger cas apache-2.2

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

Include /private/etc/apache2/passenger_pane_vhosts/*.conf
Run Code Online (Sandbox Code Playgroud)

我有以下内容/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>
Run Code Online (Sandbox Code Playgroud)

Apache 将正常启动,但对我的 Rails 应用程序的每个请求都会返回 403,而不会重定向到我的 CAS 服务器。有一个在日志中没有CAS相关信息,即使CASDebugonLogLeveldebug无处不在,我能想到来设置。

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

有谁知道我如何mod_auth_cas才能真正重定向到我的 CAS 服务器?

(移自StackOverflow

Jam*_*sen 4

知道了。答案是结合<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>
Run Code Online (Sandbox Code Playgroud)