Apache 的mod_auth_cas模塊的介紹和使用

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找到相應的用戶,讓相應的用戶登陸便可

相關文章
相關標籤/搜索