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

Как мне настроить mod_auth_cas для VirtualHost?

У меня в /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 без перенаправления на мой сервер CAS. В журналах нет информации о CAS, хотя CASDebug является on и LogLevel является debug везде, где я могу думать, чтобы установить это.

PS: Я пробовал несколько вариантов вышеуказанной конфигурации, включая установку mod_auth_cas декларации внутри <VirtualHost> определение, но большинство из них не работают при запуске. Я также попытался удалить <Location> заблокировать и переместить эту аутентификацию в <Directory> блок: без изменений.

Кто-нибудь знает, как я могу получить mod_auth_cas на самом деле перенаправить на мой сервер CAS?

(Переехал из Переполнение стека)

Понял. Ответ заключался в том, чтобы объединить <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>