一个关于cas单点登录问题

zrwlc2008 2007-10-18 12:06:29
cas是你进入页面就先到cas的登录页面去登录,然后再返回到相应的页面对吧!因为在过滤器中是/*就是过滤全部的。但是现在的问题是在现实中不能这样,你不能要求用户一进入页面就要先登录吧!而是要当用户需要登录才能进行操作的部分才能提示登录或者让其跳转到登录页面当用户登录完成再跳转回原来的页面,这样才合理,但是怎么解决呢!是在过滤器中过滤吗?但是怎么写呀?如果像网上的一些例子中那样,把需要登录才能看的页面统一放在一个文件夹中让过滤器去过滤那个文件夹中的文件就可以了,大事问题出来了。有这样一种情况,在用户浏览页面的时候,可能在某一区域中只有用户登陆后才能进行操作或访问,其他的地方用户是不用先登录才能浏览的。那我过滤那个文件夹就不能实现了。到底怎么办,谁能帮帮我。555555555555555555555
...全文
676 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
diaoerfeiji123 2010-04-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 tyyz1314168 的回复:]
我的问题解决了!
楼上的OK!
[/Quote]

大侠,能不能告诉我是怎么解决的啊。。
我的证书添加到jvm中去了。。
C:\Program Files\Java\jdk1.6.0_16\bin>keytool -list -keystore w:/jre/lib/securit
y/cacerts -storepass changeit
证书的认证指纹可以在里面找到。。
请问这是什么原因啊?
ivychen102 2009-11-19
  • 打赏
  • 举报
回复
建议电脑上只安装一个jdk,还有就是生成的证书导入到javahome的jre中的相应位置
zwh_wait 2009-09-24
  • 打赏
  • 举报
回复
怎么解决,共享一下
tyyz1314168 2008-07-08
  • 打赏
  • 举报
回复
我的问题解决了!
楼上的OK!
pl2e37mv 2008-04-24
  • 打赏
  • 举报
回复
to: tyyz1314168

你的问题是没有把cacerts文件导入“%JAVA_HOME%\jre\lib\security”。看看你是否定义了环境变量%JAVA_HOME%,并在path中添加该路径。
holdup20080808 2008-04-14
  • 打赏
  • 举报
回复
请注意看提示:PKIX path building failed.
tyyz1314168 2008-04-11
  • 打赏
  • 举报
回复
root cause

sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:285)
sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:191)
sun.security.validator.Validator.validate(Validator.java:218)
com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:126)
com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:209)
com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:249)
com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:954)
com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:123)
com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:511)
com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:449)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:817)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1029)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1056)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1040)
sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:405)
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:170)
sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:981)
sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234)
edu.yale.its.tp.cas.util.SecureURL.retrieve(SecureURL.java:84)
edu.yale.its.tp.cas.client.ServiceTicketValidator.validate(ServiceTicketValidator.java:212)
edu.yale.its.tp.cas.client.CASReceipt.getReceipt(CASReceipt.java:50)
edu.yale.its.tp.cas.client.filter.CASFilter.getAuthenticatedUser(CASFilter.java:455)
edu.yale.its.tp.cas.client.filter.CASFilter.doFilter(CASFilter.java:378)


root cause

sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174)
java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238)
sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:280)
sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:191)
sun.security.validator.Validator.validate(Validator.java:218)
com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:126)
com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:209)
com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:249)
com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:954)
com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:123)
com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:511)
com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:449)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:817)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1029)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1056)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1040)
sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:405)
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:170)
sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:981)
sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234)
edu.yale.its.tp.cas.util.SecureURL.retrieve(SecureURL.java:84)
edu.yale.its.tp.cas.client.ServiceTicketValidator.validate(ServiceTicketValidator.java:212)
edu.yale.its.tp.cas.client.CASReceipt.getReceipt(CASReceipt.java:50)
edu.yale.its.tp.cas.client.filter.CASFilter.getAuthenticatedUser(CASFilter.java:455)
edu.yale.its.tp.cas.client.filter.CASFilter.doFilter(CASFilter.java:378)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5.26 logs.


--------------------------------------------------------------------------------
tyyz1314168 2008-04-11
  • 打赏
  • 举报
回复
哪个有CAS这方面的经验,给小弟说一下,我将感激不尽。


大家帮我看看这是怎么了?
QQ:309728470
Email:tyyz1314168@163.com



HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Unable to validate ProxyTicketValidator [[edu.yale.its.tp.cas.client.ProxyTicketValidator proxyList=[null] [edu.yale.its.tp.cas.client.ServiceTicketValidator casValidateUrl=[https://localhost:8443/cas/proxyValidate] ticket=[ST-2-dTALWIQjD0QFn7Iftm2KRQmqlFkciecTj1B-20] service=[http%3A%2F%2Flocalhost%3A8080%2FtestCAS%2Flogin.jsp] renew=false]]]
edu.yale.its.tp.cas.client.filter.CASFilter.doFilter(CASFilter.java:381)


root cause

edu.yale.its.tp.cas.client.CASAuthenticationException: Unable to validate ProxyTicketValidator [[edu.yale.its.tp.cas.client.ProxyTicketValidator proxyList=[null] [edu.yale.its.tp.cas.client.ServiceTicketValidator casValidateUrl=[https://localhost:8443/cas/proxyValidate] ticket=[ST-2-dTALWIQjD0QFn7Iftm2KRQmqlFkciecTj1B-20] service=[http%3A%2F%2Flocalhost%3A8080%2FtestCAS%2Flogin.jsp] renew=false]]]
edu.yale.its.tp.cas.client.CASReceipt.getReceipt(CASReceipt.java:52)
edu.yale.its.tp.cas.client.filter.CASFilter.getAuthenticatedUser(CASFilter.java:455)
edu.yale.its.tp.cas.client.filter.CASFilter.doFilter(CASFilter.java:378)


root cause

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1520)
com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:182)
com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:176)
com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:975)
com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:123)
com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:511)
com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:449)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:817)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1029)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1056)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1040)
sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:405)
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:170)
sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:981)
sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234)
edu.yale.its.tp.cas.util.SecureURL.retrieve(SecureURL.java:84)
edu.yale.its.tp.cas.client.ServiceTicketValidator.validate(ServiceTicketValidator.java:212)
edu.yale.its.tp.cas.client.CASReceipt.getReceipt(CASReceipt.java:50)
edu.yale.its.tp.cas.client.filter.CASFilter.getAuthenticatedUser(CASFilter.java:455)
edu.yale.its.tp.cas.client.filter.CASFilter.doFilter(CASFilter.java:378)




Apache Tomcat/5.5.26
zrwlc2008 2007-10-24
  • 打赏
  • 举报
回复
我现在把cas的登录页面嵌入到我的页面中去。但是登录成功后直接进入的是cas的登录成功页面。而不能返回去
sea_way 2007-10-22
  • 打赏
  • 举报
回复
补充一下,就是说过滤器的通用功能改成与业务结合的代码。其实这个过滤器没什么的,如果你不用过滤器自己把url转到cas登录url也是可以。
sea_way 2007-10-22
  • 打赏
  • 举报
回复
我以前也遇到过类似这种问题,解决的办法是重写过滤器代码。其实只要了解CAS原理修改起来很简单。

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧