求解?关于CAS单点登录

问题描述

这个就是我现在遇到的问题,请各位帮忙找下错误在哪?怎么解决?在tomcat6.0环境下,有乱码情况,浏览器报错500如上图。

packagecom.landray.sso.client.filter;importcom.landray.sso.client.EKPSSOChain;importcom.landray.sso.client.EKPSSOContext;importcom.landray.sso.client.util.Logger;importcom.landray.sso.client.util.StringUtil;importjava.io.IOException;importjava.util.HashMap;importjava.util.Map;importjava.util.Properties;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importorg.jasig.cas.client.authentication.AttributePrincipal;importorg.jasig.cas.client.util.CommonUtils;importorg.jasig.cas.client.util.XmlUtils;importorg.jasig.cas.client.validation.Assertion;importorg.jasig.cas.client.validation.Cas20ServiceTicketValidator;importorg.jasig.cas.client.validation.TicketValidationException;importorg.jasig.cas.client.validation.TicketValidator;publicclassCASURLFilterextendsAbstractFilter{privateMapsessionMap;privateStringcasServerUrlPrefix;privateStringticketParameterName;publicvoidinit(Propertiesprop)throwsServletException{this.sessionMap=newHashMap();this.casServerUrlPrefix=getConfigProperty(prop,"CASURLFilter.cas.server");this.ticketParameterName=getConfigProperty(prop,"CASURLFilter.cas.ticket");}publicvoiddestroy(){this.sessionMap=null;this.casServerUrlPrefix=null;this.ticketParameterName=null;}publicvoiddoFilter(EKPSSOContextcontext,EKPSSOChainchain)throwsIOException,ServletException{if("POST".equals(context.getRequest().getMethod()))doLogout(context,chain);elsedoLogin(context,chain);}privatevoiddoLogout(EKPSSOContextcontext,EKPSSOChainchain)throwsIOException,ServletException{StringlogoutRequest=CommonUtils.safeGetParameter(context.getRequest(),"logoutRequest");if(CommonUtils.isNotBlank(logoutRequest)){StringsessionIdentifier=XmlUtils.getTextForElement(logoutRequest,"SessionIndex");if(CommonUtils.isNotBlank(sessionIdentifier)){HttpSessionsession=(HttpSession)this.sessionMap.remove(sessionIdentifier);if(session!=null)try{session.invalidate();}catch(IllegalStateExceptionlocalIllegalStateException){}}}chain.doNextFilter();}privatevoiddoLogin(EKPSSOContextcontext,EKPSSOChainchain)throwsIOException,ServletException{HttpServletRequestrequest=context.getRequest();HttpServletResponseresponse=context.getResponse();Stringticket=request.getParameter(this.ticketParameterName);if((StringUtil.isNull(ticket))||(this.sessionMap.containsKey(ticket))){chain.doNextFilter();return;}Stringuri=request.getRequestURI();StringlocalServerName=request.getRequestURL().toString();if(StringUtil.isNotNull(uri)){localServerName=localServerName.substring(0,localServerName.length()-uri.length());}Logger.debug("锟斤拷URL锟叫伙拷取锟斤拷锟斤拷"+this.ticketParameterName+"锟斤拷锟斤拷为锟斤拷"+ticket);StringserviceURL=constructServiceUrl(request,response,null,localServerName,this.ticketParameterName,true);try{TicketValidatorvalidator=newCas20ServiceTicketValidator(this.casServerUrlPrefix);System.out.println("CASURLFilter..1..ticket..."+ticket);System.out.println("CASURLFilter..2..serviceURL..."+serviceURL);Assertionassertion=validator.validate(ticket,serviceURL);Stringusername=assertion.getPrincipal().getName();Logger.debug("锟斤拷锟斤拷锟斤拷证票锟捷o拷锟矫碉拷锟矫伙拷锟斤拷"+username);if(StringUtil.isNotNull(username))context.setCurrentUsername(username);elseticket=null;}catch(TicketValidationExceptione){response.setStatus(403);thrownewServletException(e);}chain.doNextFilter();if((chain.isFinish())&&(ticket!=null))this.sessionMap.put(ticket,request.getSession());}publicstaticStringconstructServiceUrl(HttpServletRequestrequest,HttpServletResponseresponse,Stringservice,StringserverName,StringartifactParameterName,booleanencode){if(isNotBlank(service)){returnencode?response.encodeURL(service):service;}StringBufferbuffer=newStringBuffer();synchronized(buffer){if((!serverName.startsWith("https://"))&&(!serverName.startsWith("http://"))){buffer.append(request.isSecure()?"https://":"http://");}buffer.append(serverName);buffer.append(request.getRequestURI());if(isNotBlank(request.getQueryString())){intlocation=request.getQueryString().indexOf(artifactParameterName+"=");if(location==0){StringreturnValue=encode?response.encodeURL(buffer.toString()):buffer.toString();System.out.println("serviceUrlgenerated:"+returnValue);returnreturnValue;}buffer.append("?");if(location==-1){buffer.append(request.getQueryString());}elseif(location>0){intactualLocation=request.getQueryString().indexOf("&"+artifactParameterName+"=");if(actualLocation==-1)buffer.append(request.getQueryString());elseif(actualLocation>0){buffer.append(request.getQueryString().substring(0,actualLocation));}}}}StringreturnValue=encode?response.encodeURL(buffer.toString()):buffer.toString();System.out.println("serviceUrlgenerated:"+returnValue);returnreturnValue;}publicstaticbooleanisEmpty(Stringstring){return(string==null)||(string.length()==0);}publicstaticbooleanisNotEmpty(Stringstring){return!isEmpty(string);}publicstaticbooleanisBlank(Stringstring){return(isEmpty(string))||(string.trim().length()==0);}publicstaticbooleanisNotBlank(Stringstring){return!isBlank(string);}}

<?xmlversion="1.0"encoding="UTF-8"?><web-appversion="2.5"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><display-name></display-name><filter><filter-name>EKPSSOClient</filter-name><filter-class>com.landray.sso.client.EKPSSOClient</filter-class><init-param><description>对应的配置文件位置</description><param-name>filterConfigFile</param-name><param-value>/sso-config.properties</param-value></init-param></filter><filter-mapping><filter-name>EKPSSOClient</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter><filter-name>EKPSSOClientAuthenticationFilter</filter-name><filter-class>com.landray.sso.client.EKPSSOClient</filter-class><init-param><param-name>filterclien</param-name><param-value>/EKPSSOClientAuthenticationFilter</param-value></init-param></filter><filter-mapping><filter-name>EKPSSOClientAuthenticationFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><servlet><servlet-name>webserver</servlet-name><servlet-class>Webserver</servlet-class></servlet><servlet-mapping><servlet-name>webserver</servlet-name><url-pattern>/webserver</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>

解决方案

本帖最后由 u013283773 于 2013-12-26 11:44:46 编辑

时间: 2024-09-20 13:48:59

求解?关于CAS单点登录的相关文章

CAS单点登录(SSO)完整教程

CAS单点登录(SSO)完整教程(2012-02-01更新) 一.教程说明 前言 教程目的:从头到尾细细道来单点登录服务器及客户端应用的每个步骤 单点登录(SSO):请看百科解释猛击这里打开 本教程使用的SSO服务器是Yelu大学研发的CAS(Central Authentication Server), 官网:http://www.jasig.org/cas 本教程环境: Tomcat6.0.29 JDK6 CAS Server版本:cas-server-3.4.3.1.cas-server-

CAS单点登录时AJAX页面刷新无反应(302 Moved Temporarily)

最近使用CAS做单点认证服务时发现过大概二十分钟后就发现凡是异步方式刷新页面就无反应了(由于使用EasyUI框架,所以页面刷新基于ajax+div方式),刚开始一直认为是CAS服务端超时的问题,查看了各个配置,网上也参考了许多帖子,一直没有解决,今天无意想起来是不是session过期了呢,因为单点登录客户端没有配置任何session有效时长,也就是说客户端的session时长为tomcat默认时长(网上有人说Tomcat默认session有效期为30分钟,而现在发现的是大概20分钟后就会出现用a

.net cas 单点登录 求助

问题描述 .net cas 单点登录 求助 本人花了一个多星期找资料+测试,还是实现不了这个单点登录功能.请csdn网友出手相助 外部单点登录网址:http://59.41.39.98:808/CAS_Server/login 登录帐号与密码:0166166 123456 功能描述:1.在一个自己开发的网站登录界面,输入帐号密码,实现单点登录. 2.如果1无法实现,那在打开单点登录网址,输入帐号密码登录成功后能返回本网站页面. PS:需要是.net开发的,如果有完整可用的样例源码最好,感谢..

java-关于CAS单点登录的用户认证

问题描述 关于CAS单点登录的用户认证 现有多个系统web1,web2,web3... 用户张三,在web1里用户名密码是user1/123,在web2里用户名密码是zhangsan/456,在web3里用户名密码是abc/789-- 这些多个系统的用户名密码存放在不同数据库中,但是每个数据库里都有"工号"这个字段,且为必填项. 现在将这多个系统用CAS做单点登录,这多个数据库如何通过"工号"这个字段统一? 刚看到的一个思路: 单对多模式:一个用户使用不同凭证登录不

spring-Springsecurity cas单点登录,循环重定向问题

问题描述 Springsecurity cas单点登录,循环重定向问题 最近在弄springsecurity+cas实现单点登录,但配置完成测试,去发现在cas server端登录成功之后,竟出现了循环重定向问题,我springsecurity配置如下: <?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/b

JAVA CAS单点登录之四:CAS服务器增加JDBC访问能力

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dba10g.blog.51cto.com/764602/1753680 经过前面说明,已经完成了CAS服务器的搭建,代理客户端的搭建以及普通客户端,back-end-service客户端的搭建.如果不明白的,参照如下链接. JAVA CAS单点登录之一:搭建CAS服务器  JAVA CAS单点登录之二:CAS普通模式1演练 JAVA CAS单点登录之三:CAS代理模式演练  现

java-【急】求大神帮帮忙,CAS单点登录问题,登录成功后controller收不到请求(要哭了)

问题描述 [急]求大神帮帮忙,CAS单点登录问题,登录成功后controller收不到请求(要哭了) 首先说下问题,我们的项目之前SSO单点登录一直用的http的方式, 这一块登录一直都是正常的,现在要切上正式环境了,SSO服务器那边就改用了https的方式SSO配置如下: <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-cla

SpringSecurity+JPA+CAS单点登录

问题描述 SpringSecurity+JPA+CAS单点登录错误信息如下:ERRORContextLoader:220-Contextinitializationfailedorg.springframework.beans.factory.BeanDefinitionStoreException:UnexpectedexceptionparsingXMLdocumentfromServletContextresource[/WEB-INF/classes/applicationContext

JAVA CAS单点登录之三:CAS代理模式演练

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dba10g.blog.51cto.com/764602/1753244 前言  JAVA CAS单点登录之一:搭建CAS服务器     JAVA CAS单点登录之二:CAS普通模式1演练     代理模式相相对上一节的普通模式,更加复杂了.但配置起来也会稍微有些差别.所谓难者不会,会者不难.如果遇到一个从来没有遇到的问题,解决起来也是非常棘手的,当然解决之后就不是事了.我就遇到

JAVA CAS单点登录之二:CAS普通模式1演练

前言 经过上一JAVA CAS单点登录之一:搭建CAS服务器 这一章,CAS服务器已经搭建好了.当然这时候的CAS服务器仅仅是最初版本的.比如密码验证,页面美观度都需要进一步调整.但这都是无关紧要的. 最主要的是先把整个一套认证流程走下来,至于完善的工作,都是没个点的工作了,相对比较简单. 主要内容    1. 新建一个web应用mywebapp1,测试与CAS服务器的认证效果     2.如果上一步骤1认证成功的话,将mywebapp1复制一份,调整若干参数,继续测试.     如果步骤1,步