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找到相应的用户,让相应的用户登陆便可

相关文章
相关标签/搜索