已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
BatchDoc Word文档批量处理工具 让CAS支持客户端自定义登陆页面服务器篇 - Development2009-03-23版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明/logs/36907044.html上篇让CAS支持客户端自定义登陆页面原理篇讲述了一些修改的理论基础,这篇讲解如何对CAS服务器端进行修改。修改需要基于几个基本原则:1. 不影响原有统一登陆界面功能 2. 客户端应尽量保持简单 3. 尽量保证原有功能的完整性和安全性 对于第三点,必须事先说明:将登陆页面放到客户端本身就是降低了CAS安全性,这意味着作为服务向外发布的CAS服务器中的用户密码有可能由于客户端的不安全性而导致泄露,整个CAS系统成为了一个“水桶形态”,整个CAS体系的安全性将取决于所有客户端中安全性最低的一个。这也是CAS官方一直不推荐的方式。接下来我们讲解服务器端修改的详细过程:首先,修改/WEB-INF/web.xml,为cas增加一个/remoteLogin的映射: cas /remoteLogin然后修改cas-servlet.xml文件,增加我们对/remoteLogin映射的处理,需要增加一个新流程: loginController remoteController 然后在cas-servlet.xml文件中添加我们上面所配置的remoteController的bean: 可以看到上面将请求指向了webflow配置文件/WEB-INF/remoteLogin-webflow.xml文件,我们需要创建此文件并配置其成为我们所需的流程,以下是remoteLogin-webflow.xml全文: 以上文件根据原login-webflow.xml文件修改,黄色背景为修改部分。可以看到,我们在流程中增加了remoteLogin Action节点和remoteCallback View节点,下面我们配置remoteLogin节点:在/WEB-INF/cas-servlet.xml文件中增加remoteLoginAction配置:同时创建com.baidu.cas.web.flow.RemoteLoginAction类:/* 远程登陆票据提供Action.* 根据InitialFlowSetupAction修改.* 由于InitialFlowSetupAction为final类,因此只能将代码复制过来再进行修改.* * author GuoLin*/public class RemoteLoginAction extends AbstractAction /* CookieGenerator for the Warnings. */ NotNull private CookieRetrievingCookieGenerator warnCookieGenerator; /* CookieGenerator for the TicketGrantingTickets. */ NotNull private CookieRetrievingCookieGenerator ticketGrantingTicketCookieGenerator; /* Extractors for finding the service. */ NotEmpty private List argumentExtractors; /* Boolean to note whether weve set the values on the generators or not. */ private boolean pathPopulated = false; protected Event doExecute(final RequestContext context) throws Exception final HttpServletRequest request = WebUtils.getHttpServletRequest(context); if (!this.pathPopulated) final String contextPath = context.getExternalContext().getContextPath(); final String cookiePath = StringUtils.hasText(contextPath) ? contextPath :/; (Setting path for cookies to: + cookiePath); this.warnCookieGenerator.setCookiePath(cookiePath); this.ticketGrantingTicketCookieGenerator.setCookiePath(cookiePath); this.pathPopulated = true; context.getFlowScope().put(ticketGrantingTicketId, this.ticketGrantingTicketCookieGenerator.retrieveCookieValue(request); context.getFlowScope().put(warnCookieValue, Boolean.valueOf(this.warnCookieGenerator.retrieveCookieValue(request); final Service service = WebUtils.getService(this.argumentExtractors, context); if (service != null & logger.isDebugEnabled() logger.debug(Placing service in FlowScope: + service.getId(); context.getFlowScope().put(service, service); / 客户端必须传递loginUrl参数过来,否则无法确定登陆目标页面 if (StringUtils.hasText(request.getParameter(loginUrl) context.getFlowScope().put(remoteLoginUrl,request.getParameter(loginUrl); else request.setAttribute(remoteLoginMessage, loginUrl parameter must besupported.); return error(); / 若参数包含submit则进行提交,否则进行验证 if (StringUtils.hasText(request.getParameter(submit) return result(submit); else return result(checkTicketGrantingTicket); public void setTicketGrantingTicketCookieGenerator( final CookieRetrievingCookieGenerator ticketGrantingTicketCookieGenerator) this.ticketGrantingTicketCookieGenerator = ticketGrantingTicketCookieGenerator; public void setWarnCookieGenerator(final CookieRetrievingCookieGeneratorwarnCookieGenerator) this.warnCookieGenerator = warnCookieGenerator; public void setArgumentExtractors( final List argumentExtractors) this.argumentExtractors = argumentExtractors; 以上黄色背景为修改部分,要求客户端必须传入loginUrl参数,且当客户端传入submit参数时,直接为其提交用户名密码然后再配置remoteCallbackView显示节点,修改src/default_perties文件,增加remoteCallbackView配置:# 配置远程回调页面remoteCallbackView.(class)=org.springframework.web.servlet.view.JstlViewremoteCallbackView.url=/WEB-INF/view/jsp/default/ui/remoteCallbackView.jsp创建/WEB-INF/view/jsp/default/ui/remoteCallbackView.jsp文件: var remoteUrl = $remoteLoginUrl?validated=true; / 构造错误消息 var errorMessage = ; errorMessage = &errorMessage= + encodeURIComponent(); / 构造service var serivce = ; service = &service= + encodeURIComponent($service); / 跳转回去 window.location.href = remoteUrl + errorMessage + service; $remoteLoginMessage以上文件注意黄色背景部分validated=true,这里我们与客户端约定,当客户端登陆页面后带有参数validated=true时,不进行票据认证请求。这是因为,客户端登陆页面为http:/clienthost/login.jsp,那么当用户访问URL http:/clienthost/login.jsp时,客户端会重定向到CAS中央服务器请求TGT认证,但认证失败后CAS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025重庆大足区人民政府龙岗街道公益岗招聘3人备考题库含答案详解(基础题)
- 2025四川天府银行社会招聘备考题库(西充)及参考答案详解
- 2025年甘肃省平凉市崆峒区崆峒镇蒋家沟村招聘大学生村文书备考题库及完整答案详解
- 2025贵阳市某银行信用卡营销中心派遣用工招聘备考考点题库及答案解析
- 健康信息传播中的文化适配性策略
- 2025浙江宁波北仑区新碶街道社区卫生服务中心编外用工招聘1人备考题库含答案详解(典型题)
- 2026河南郑州铁路技师学院引进应届毕业生10人备考考点试题及答案解析
- 2026哈尔滨银行(集团)校园招聘197人备考题库附答案详解
- 2025北京市大兴区魏善庄镇人民政府劳务派遣人员招聘5人备考题库及参考答案详解1套
- 2025广东梅州市平远县总工会招聘社会化工会工作者6人备考题库含答案详解(轻巧夺冠)
- 医疗器械生产车间洁净要求
- (高清版)DZT 0287-2015 矿山地质环境监测技术规程
- 供应商竞价比价表
- 第三章-一元一次方程-复习课件
- 《卫生检疫》期末复习选择题及答案
- KTV员工消防安全教育培训记录
- 消毒供应中心护理质量课件
- 2024年浙江义乌市商城集团招聘笔试参考题库含答案解析
- 大学《中国特色社会主义理论体系》期末复习章节重点及试题解析
- 拓展课水晶滴胶的制作
- 读后续写+The+lost+gold+piece+课件【高效课堂精讲精研】 高三英语二轮复习
评论
0/150
提交评论