apache的mod_auth_cas模塊是一個集成到apache中的cas客戶端,一般是配合Apache的反向代理來使用,對某個url的請求先經過apache,apache會判斷是否經過cas認證,若未認證,則跳轉到cas進行認證,若認證通過,則根據反向代理的規則,將請求轉發到后台的應用中去處理,轉發的時候一般會帶上一個認證的頭信息,后端的應用從Apache轉發過來的頭信息中獲取到用戶信息,讓用戶登錄,整個登錄操作完成。
配置:
1.引入so文件
直接運行a2enmod auth_cas命令
或者是把mod_auth_cas的源碼編譯之后的so文件,放到/usr/lib/apache2/modules/mod_auth_cas.so 然后,在mods-available目錄新建auth_cas.load 和 auth_cas.conf
auth_cas.load內容:
LoadModule auth_cas_module /usr/lib/apache2/modules/mod_auth_cas.so
auth_cas.conf 見下節
在apache的mods-enabled 中創建auth_cas.load 和 auth_cas.conf的軟鏈接使配置生效
ln -s auth_cas.load ../mods-available/auth_cas.load
ln -s auth_cas.conf ../mods-available/auth_cas.conf
2.修改auth_cas.conf,內容如下
LogLevel Debug
CASDebug On
CASVersion 2
CASCookiePath /var/cache/apache2/mod_auth_cas/
#CASValidateServer off
#CASAllowWildcardCert on
CASTimeout 1740
CASIdleTimeout 1740
CASLoginURL http://casserver:8080/cas/login
#CASValidateURL http://casserver:8080/cas/samlValidate
CASValidateURL http://casserver:8080/cas/serviceValidate
#CASValidateURL http://casserver:8080/cas/samlValidate
CASRootProxiedAs http://yourhost
#CASValidateSAML On
CASSSOEnabled On
#CASAttributePrefix CAS_
新建/var/cache/apache2/mod_auth_cas/ 文件,並授予權限(讓apache用戶可以寫入cookie信息)
3.修改代理配置
<VirtualHost *:80>
<LocationMatch "(/wiki.*$)|(/issues.*$)">
Authtype CAS
CASAuthNHeader REMOTE_USER
require valid-user
</LocationMatch>
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost On
ProxyPass /wiki http://wiki:8090/wiki
ProxyPassReverse /wiki http://wiki:8090/wiki
ProxyPass /issues http://issues:8080/issues
ProxyPassReverse /issues http://issues:8080/issues
</VirtualHost>
以上代理配置的介紹:apache攔截以 /wiki和/issues開頭的url,發現沒有通過CAS認證的話,會重定向到CAS認證,CAS認證通過之后,會把COOKIE的信息寫入到auth_cas.conf中配置的CASCookiePath目錄里,然后再代理到相應的地址,同時增加名為REMOTE_USER的header,應用里邊只需要通過這個header找到相應的用戶,讓相應的用戶登錄即可