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

最新文章

  1. C# 获取计算机信息
  2. 详细解读XMLHttpRequest(一)同步请求和异步请求
  3. 【个人使用.Net类库】(4)验证码类
  4. C#开发规范总结(个人建议)
  5. 深入剖析HADOOP程序日志
  6. Ecshop与Jquery冲突的完美解决方案
  7. axel源码学习(0)&mdash;&mdash;程序逻辑
  8. mvc 的 OutputCache
  9. 关于css中使用ul li的一些体会
  10. CFNetwork SSLHandshake failed (-9824) ios 9
  11. Cacti安装详细步骤(转)
  12. .NET MVC扩展UrlHelper支持CDN
  13. pandas函数get_dummies的坑
  14. Unity主线程和子线程跳转调用(2)
  15. Electron 调用系统Office软件
  16. &quot;reason&quot;:&quot;No handler for type [attachment] declared on field [file]&quot; 最完全解决方案
  17. java TreeSet 实现存自定义不可重复数据
  18. Linux操作系统--help、man和info工具的区别介绍
  19. 配置Docker中国区官方镜像http://get.daocloud.io/ 很好的一个源http://get.daocloud.io/#install-docker
  20. IDEA创建的Maven项目中 解决编写pom.xml没有提示

热门文章

  1. SOA及分布式
  2. $(this).bind(&quot;change&quot;,itemno_change);
  3. [AngularJS]ng-repeat指令要点
  4. 软件设计模式之代理模式(JAVA)
  5. 在阿里云创建子域名,配置nginx,使用pm2部署node项目到ubuntu服务器
  6. Win7 共享打印机 “错误:共享无法保存设置”
  7. tornado入门1
  8. ios的两种界面跳转方式
  9. dos命令收集
  10. Apache性能优化总结