怎样制作网站站点,一键seo提交收录,常熟建设局网站,品牌广告图片CAS Client 3.2.1 配置详解 http://www.pinhuba.com/casclient/101256.htm 摘要: CAS作为开源的单点登陆框架已经非常的流行了。由于它对已有系统的入侵性小#xff0c;支持的语言多#xff0c;备受广大开发者关注#xff1b;CAS作为开源的单点登陆框架已经非常的流行了。由… CAS Client 3.2.1 配置详解 http://www.pinhuba.com/casclient/101256.htm 摘要: CAS作为开源的单点登陆框架已经非常的流行了。由于它对已有系统的入侵性小支持的语言多备受广大开发者关注 CAS作为开源的单点登陆框架已经非常的流行了。由于它对已有系统的入侵性小支持的语言多备受广大开发者关注也是很多公司将之作为单点登陆的首选框架。关于CAS如何搭建的文章网上已经非常多了随便搜搜都一大堆。我也就不再写些重复的东西了但是网上的东西有时候常常是不全或版本问题搞的很多人都很迷糊。我曾经也很迷糊如果刚接触CAS请你继续往下看如果你是CAS高手请指正我说错的地方。 CAS最早是耶鲁大学开发的CAS2.0以前的版本后来开源出来由JASIG来继续开发CAS2.0以后的版本。所以当你准备那某一片文章上手练习的时候请分清版本。个人建议还是阅读JASIG官方文档比较好。https://wiki.jasig.org/display/CASC 一个完整的单点登陆方案分两部分 CAS server CAS server如何配置就不多说了基本的步骤就是 1. 下载CAS server包 2. 配置Tomcat的Https访问设置 3. 部署CAS server其实就是将.war文件拷贝到Tomcat目录下 4. 生成证书可以买也可以使用自签名证书或者干脆就用http协议那就不需要证书了 5. 修改用户访问配置CAS支持关系数据库LDAP等多种数据存储 CAS client CAS client是部署在应用端的因为通常单点登陆都会涉及到对已有系统的改造。所以client端的侵入性就变的很重要。侵入性越小越容易部署和测试。CAS框架的优点之一就在于它的client端对应用系统的侵入性比较小。对于Java的Web项目来说你只需要在web.xml里面添加一个filter拷贝CAS client的jar包到应用系统然后改造登陆认证过程即可。如果CAS server用的是Https那就还需要将证书导入到JVM的可信证书域中,通常是$JAVA_HOME/lib/security/cacerts。 所有的一切看着都挺简单的但实际部署中你会遇到各式各样的问题。有很多问题网上都有人解答这里我就记录一下我遇到的一个没找到答案的问题 现象 当你配置完CAS server 也部署了CAS client后。用https登陆CAS server也都没问题时而你无论如何都无法在登陆后跳转到你期待的页面。尽管一切看起来都配置对了证书也导了https也配了filter也加了。但是还是不停的抛CAS ticket validation expection, CAS server no response错误。 解决方案 请检查你的client是否把4个filter都配置全了并且顺序要对。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 !-- CAS SSO -- filter filter-nameCAS Authentication Filter/filter-name filter-classorg.jasig.cas.client.authentication.AuthenticationFilter/filter-class init-param param-namecasServerLoginUrl/param-name param-valuehttps://cas-server:8443/cas/login/param-value /init-param init-param param-namerenew/param-name param-valuefalse/param-value /init-param init-param param-namegateway/param-name param-valuefalse/param-value /init-param init-param param-nameserverName/param-name param-valuehttp://client-host:8080/param-value /init-param /filter filter filter-nameCAS Validation Filter/filter-name filter-class org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter /filter-class init-param param-namecasServerUrlPrefix/param-name param-valuehttps://cas-server:8443/cas//param-value /init-param init-param param-nameserverName/param-name param-valuehttp://client-host:8080/param-value /init-param init-param param-nameuseSession/param-name param-valuetrue/param-value /init-param init-param param-nameredirectAfterValidation/param-name param-valuetrue/param-value /init-param /filter filter filter-nameCAS HttpServletRequest Wrapper Filter/filter-name filter-class org.jasig.cas.client.util.HttpServletRequestWrapperFilter /filter-class /filter filter filter-nameCAS Assertion Thread Local Filter/filter-name filter-class org.jasig.cas.client.util.AssertionThreadLocalFilter /filter-class /filter filter-mapping filter-nameCAS Authentication Filter/filter-name url-pattern/sso/*/url-pattern /filter-mapping filter-mapping filter-nameCAS Validation Filter/filter-name url-pattern/sso/*/url-pattern /filter-mapping filter-mapping filter-nameCAS HttpServletRequest Wrapper Filter/filter-name url-pattern/sso/*/url-pattern /filter-mapping filter-mapping filter-nameCAS Assertion Thread Local Filter/filter-name url-pattern/sso/*/url-pattern /filter-mapping 官方文档特别说明这4个Filter是必须的 1 The correct order of the filters in web.xml is necessary: AuthenticationFilter TicketValidationFilter (whichever one is chosen) HttpServletRequestWrapperFilter AssertionThreadLocalFilter 这里我要说明一下为什么这4个filter是必须要配的。 AuthenticationFilter的作用是用于拦截SSO登陆请求的当你提交的request符合SSO登陆规则CAS client会通过这个filter将登陆请求转向到CAS server的登陆界面。因为这是第一步所以它要在最上面。 TicketValidationFilter的作用是用于拦截登陆返回的跳转请求的。当CAS server确认登陆用户名密码后会返回一个server ticket这个ticket会由应用服务器上的CAS client再送回CAS server进行验证用于防止仿冒攻击的。 HttpServletRequestWrapperFilter的目的是将CAS server返回的信息封装到Http request里面这样客户端就可以用request.getRemoteUser()来获取用户名等信息了。 AssertionThreadLocalFilter的作用是用于前端程序通常是前端脚本程序访问因为这个时候你无法通过request来获取信息。 所以如果这4个filter不配置正确就会报各种错误。 转载于:https://www.cnblogs.com/handsome1013/p/8920231.html