Cas详细配置.docx
- 文档编号:9305313
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:14
- 大小:125.12KB
Cas详细配置.docx
《Cas详细配置.docx》由会员分享,可在线阅读,更多相关《Cas详细配置.docx(14页珍藏版)》请在冰豆网上搜索。
Cas详细配置
CAS框架配置详解
博客分类:
∙CAS
一、概述
单点登录(SingleSignOn,简称SSO)是目前比较流行的服务于企业业务整合的解决方案之一,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
CAS(CentralAuthenticationService)是一款不错的针对Web应用的单点登录框架,本文介绍了CAS的原理、协议、在Tomcat中的配置和使用,对于采用CAS实现轻量级单点登录解决方案的入门读者具有一定指导作用。
二、CAS介绍
CAS是Yale大学发起的一个开源项目,旨在为Web应用系统提供一种可靠的单点登录方法,CAS在2004年12月正式成为JA-SIG的一个项目(http:
//www.jasig.org)。
CAS具有以下特点:
1)开源的企业级单点登录解决方案
2)CASServer为需要独立部署的Web应用
3)CASClient支持非常多的客户端(指Web应用),包括Java,.Net,PHP,Perl,Ruby等
三、CAS原理及协议
从结构上看,CAS 包含两个部分:
CAS Server 和 CAS Client。
CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。
AS 最基本的协议过程:
CASClient与受保护的客户端应用部署在一起,以Filter方式保护受保护的资源。
对于访问受保护资源的每个Web请求,CASClient会分析该请求的Http请求中是否包含ServiceTicket,如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的CASServer登录地址,并传递Service(也就是要访问的目的资源地址),以便登录成功过后转回该地址。
用户在第3步中输入认证信息,如果登录成功,CASServer随机产生一个相当长度、唯一、不可伪造的ServiceTicket,并缓存以待将来验证,之后系统自动重定向到Service所在地址,并为客户端浏览器设置一个TicketGrantedCookie(TGC),CASClient在拿到Service和新产生的Ticket过后,在第5,6步中与CASServer进行身份合适,以确保ServiceTicket的合法性。
在该协议中,所有与CAS的交互均采用SSL协议,确保,ST和TGC的安全性。
协议工作过程中会有2次重定向的过程,但是CASClient与CASServer之间进行Ticket验证的过程对于用户是透明的。
另外,CAS协议中还提供了Proxy(代理)模式,以适应更加高级、复杂的应用场景,具体介绍可以参考CAS官方网站上的相关文档。
四、CASSERVER配置
1.准备工作
安装配置JDK、安装Tomcat7,此处不做详解。
到CAS官网下载CASServer和Client,地址如下:
http:
//downloads.jasig.org/cas/cas-server-4.0.0-release.zip
http:
//downloads.jasig.org/cas-clients/cas-client-3.2.1-release.zip
2.部署
1.将下载的cas-server-4.0.0-release.zip解开,把cas-server-4.0.0/modules/cas-server-webapp-4.0.0.war拷贝到tomcat的webapps目录,并更名为cas.war。
2.修改cas\WEB-INF\spring-configuration\ticketGrantingTicketCookieGenerator.xml文件,将属性p:
cookieSecure="true"变成p:
cookieSecure="false"(这个设置主要是让CAS不走SSL协议,详见:
让CAS不用SSL也可实现跨域)
3.启动tomcat,然后访问:
http:
//localhost:
8888/cas,如果能出现正常的CAS登录页面,则说明CASServer已经部署成功。
如下图:
虽然 CAS Server 已经部署成功,但这只是一个缺省的实现,在实际使用的时候,还需要根据实际概况做扩展和定制,最主要的是扩展认证 (Authentication) 接口和 CAS Server 的界面。
五、CASClient配置
将下载的cas-client-3.2.1-release.zip解开,将cas-client-3.2.1/modules/
cas-client-core-3.2.1.jar,放入你的web项目lib目录中,修改web.xml,添加如下web.xml中单点登录块配置信息:
Xml代码
1.
xml version="1.0" encoding="UTF-8"?
>
2. xsi="http: //www.w3.org/2001/XMLSchema-instance" 3. xmlns=" 4. xsi: schemaLocation=" 5. id="WebApp_ID" version="2.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. //localhost: 8888/cas/login -- cas 服务器登录 地址 http: //IP: PORT/CasWebProName/login --> 40. 41. 42. -- 这里的server是服务端的IP --> 43. 44. //localhost: 8080 -- 客户端服务器地址 http: //IP: PORT --> 45. 46. 47. 48. 49. 50. 51. 52. 53. -- 该过滤器负责对Ticket的校验工作,必须启用它 --> 54. 55. 56. 57. 58. 59. //localhost: 8888/cas -- cas 服务器地址 http: //IP: PORT/CasWebProName --> 60. 61. 62. 63. //localhost: 8080 -- 客户端服务器地址 http: //IP: PORT --> 64. 65. 66. 67. 68. 69. 70. 71. -- 该过滤器负责实现HttpServletRequest请求的包裹, 比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。 --> 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. -- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 比如AssertionHolder.getAssertion().getPrincipal().getName()。 --> 82. 83. 84. 85. 86. 87. 88. 89. 90. -- ======================== 单点登录结束 ======================== --> 91.
配置完毕后,启动tomcat,然后访问:
http:
//IP:
PORT/WebProName/index.jsp,如果系统跳转到CAS登录页面,输入用户名/密码(正确的)后,会跳转到http:
//IP:
PORT/WebProName/index.jsp,则说明CASClient已经部署成功。
注:
到此CAS框架已搭建完毕,此种方法未采用SSL协议(需要修改Cas),如果想采用SSL协议方式,则在上述配置中需要以下调整:
∙修改CasServer所处Web容器(本文为Tomcat),使其支持SSL协议
∙CasServer部署时,不需要修改cas\WEB-INF\spring-configuration\ticketGrantingTicketCookieGenerator.xm
∙CasClient web.xml中配置的CasServer相关地址需要将http变更成https
六、JDBC认证方式
1.相关JAR包准备
cas-server-4.0.0-release.zip\cas-server-4.0.0\modules\cas-server-support-jdbc-4.0.0.jar及相应的数据库驱动包(这里是MySQL驱动mysql-connector-java-5.1.7-bin.jar)复制到cas/WEB-INF/lib目录下。
2.修改deployerConfigContext.xml1.
-- 注释掉原本固定登录用户 -->
--
-- class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler"> -->
--
--
--
-- -->
-- -->
-- -->
-- 变更为JDBC验证方式 -->
">
-- 数据源配置 -->
mysql:
//localhost:
3309/ossm?
characterEncoding=utf8
-- 添加MD5密码加密功能 -->
七、客户端获取用户登录信息
CAS登录成功默认返回的只有用户名,
JAVA客户端获取:
AttributePrincipalprincipal=(AttributePrincipal)request.getUserPrincipal();
Stringusername=principal.getName();
而在实际应用中,客户端需要知道更多的用户信息,比如用户的性别,年龄,爱好,地址,用户的分组,角色信息等等,下面介绍如何给客户端返回更多的用户资料和信息:
1.修改cas/WEB-INF/deployerConfigContext.xml,注释掉原有的attributeRepository及attributeRepository的引用信息,添加如下信息:
--
-- 组装sql用的查询条件属性 -->
-- 这里的key需写username,value对应数据库用户名字段 -->
--
-- 如果要组装多个查询条件,需要加上下面这个,默认为AND -->
-- 要获取的属性在这里配置 -->
--key为对应的数据库字段名称,value为提
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Cas 详细 配置
![提示](https://static.bdocx.com/images/bang_tan.gif)