apache的mod_auth_cas模塊是一個集成到apache中的cas客戶端,通常是配合Apache的反向代理來使用,對某個url的請求先通過apache,apache會判斷是否通過cas認證,若未認證,則跳轉到cas進行認證,若認證經過,則根據反向代理的規則,將請求轉發到後臺的應用中去處理,轉發的時候通常會帶上一個認證的頭信息,後端的應用從Apache轉發過來的頭信息中獲取到用戶信息,讓用戶登陸,整個登陸操做完成。git
配置:github
1.引入so文件apache
直接運行a2enmod auth_cas命令後端
或者是把mod_auth_cas的源碼編譯以後的so文件,放到/usr/lib/apache2/modules/mod_auth_cas.so 而後,在mods-available目錄新建auth_cas.load 和 auth_cas.confcookie
auth_cas.load內容:ui
LoadModule auth_cas_module /usr/lib/apache2/modules/mod_auth_cas.so
auth_cas.conf 見下節url
在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,內容以下code
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信息)server
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找到相應的用戶,讓相應的用戶登陸便可