所以我有一个运行mod_auth_cas模块的Apache服务器。我正在尝试保护某个安全目录。我在httpd.conf文件中加载模块:
LoadModule auth_cas_module /usr/lib64/php/modules/mod_auth_cas.so
并从cas.conf文件中加载它的所有配置:
CASVersion 1
CASDebug On
CASRootProxiedAs http://something.com/secure
CASLoginURL https://secure.its.somewhere.edu/cas/login
CASValidateURL https://secure.its.somewhere.edu/cas/servlet/validate
CASCookiePath /var/www/webroot/CAS/
<Directory /var/www/webroot/ROOT/secure>
AuthType CAS
Require valid-user
</Directory>
当我访问安全目录时,网站会将我重定向到CAS登录页面,并在我登录后将其发回给我。但是我得到了401 Authorization Required页面。我查看了Apache日志,这是我发现的:
[debug] mod_auth_cas.c(2026): [client ] Entering cas_authenticate()
[debug] mod_auth_cas.c(575): [client ] CAS Service 'http%3a%2f%2fsomething.com%2fsecure%2fsecure'
[debug] mod_auth_cas.c(523): [client ] entering getCASLoginURL()
[debug] mod_auth_cas.c(500): [client ] entering getCASGateway()
[debug] mod_auth_cas.c(590): [client ] entering redirectRequest()
[debug] mod_auth_cas.c(602): [client ] Adding outgoing header: Location: https://secure.its.somewhere.edu/cas/login?service=http%3a%2f%2fsomething.com%2fsecure%2fsecure
[debug] mod_auth_cas.c(2026): [client ] Entering cas_authenticate()
[debug] mod_auth_cas.c(645): [client ] Modified r->args (now '')
[debug] mod_auth_cas.c(1729): [client ] entering getResponseFromServer()
[debug] mod_auth_cas.c(575): [client ] CAS Service 'http%3a%2f%2fsomewhere.com%2fsecure%2fsecure%2fsecure'
[debug] mod_auth_cas.c(1806): [client ] Validation response: no\n\n
[debug] mod_auth_cas.c(1434): [client ] entering isValidCASTicket()
[debug] mod_auth_cas.c(1440): [client 73.163.185.61] MOD_AUTH_CAS: response = no\n\n
我查看了文件中应该保存的cookie,并且没有cookie。
我一直在寻找CAS的文档,并试图弄清楚为什么它不起作用。我按照所有文档来设置Apache模块。我完全糊涂了。有什么帮助吗?
答案 0 :(得分:1)
所以,在撕掉我的头发一段时间并尝试各种Apache配置更改,重新编译模块,并阅读更多文档之后,我发现了一个小而烦人的bug。
CASRootProxiedAs http://something.com/secure
这不起作用。它必须代理为:
CASRootProxiedAs http://something.com
简单的错误。让我把头发撕掉几天。