<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 1,  comments - 3,  trackbacks - 0

    ???? 最近在項目中集成了CAS 結合Acegi來作單點登陸。感覺CAS雖然簡單,用起來還是很爽的。不過前幾天發布一個子系統的時候出現了下面的問題。

    edu.yale.its.tp.cas.client.CASAuthenticationException:?Unable?to?validate?ProxyTicketValidator
    ????
    < cas:authenticationFailure?code = ' INVALID_SERVICE ' >
    ????????ticket?
    ' ST-74-yBBJRjb3qnFle0Ynhq7sgUsdaox9nPoFbGu-20 ' ?does?not?match?supplied?service
    ????
    </ cas:authenticationFailure >

    ???? 經排查,發現是CAS java client2.1.1 與Tomcat 5.5.16配合有問題。查看log,發現Cas Server端解析出的service URL前后相差了一個“?”,懷疑是cas client在新版tomcat下生成 service URL時出現問題,檢查client代碼,定位到edu.yale.its.tp.cas.client.Util的getService方法,跟蹤了一下,發現
    if?(request.getQueryString()?!=?null)?
    ????????
    {
    ????????????
    //?first,?see?whether?we've?got?a?'ticket'?at?all
    ????????????int?ticketLoc?=?request.getQueryString().indexOf("ticket=");

    ????????????
    //?if?ticketLoc?==?0,?then?it's?the?only?parameter?and?we?ignore
    ????????????
    //?the?whole?query?string

    ????????????
    //?if?no?ticket?is?present,?we?use?the?query?string?wholesale
    ????????????if?(ticketLoc?==?-1)
    ????????????????sb.append(
    "?"?+?request.getQueryString());
    ????????????
    else?if?(ticketLoc?>?0)?
    {
    ????????????????ticketLoc?
    =?request.getQueryString().indexOf("&ticket=");
    ????????????????
    if?(ticketLoc?==?-1)?
    ????????????????
    {
    ????????????????????
    //?there?was?a?'ticket='?unrelated?to?a?parameter?named
    ????????????????????
    //?'ticket'
    ????????????????????sb.append("?"?+?request.getQueryString());
    ????????????????}
    ?else?if?(ticketLoc?>?0)?
    ????????????????
    {
    ????????????????????
    //?otherwise,?we?use?the?query?string?up?to?"&ticket="
    ????????????????????sb.append("?"
    ????????????????????????????
    +?request.getQueryString().substring(0,?ticketLoc));
    ????????????????}

    ????????????}

    ????????}

    發現對于沒有參數的http請求,request.getQueryString()函數在Tomcat5.5.15中是返回null,而5.5.16中是返回""。到這里問題就清楚了,看來yale的這幫學生代碼寫得還是有點業余呀,直接加上對空string判斷的邏輯,問題解決。
    ???????這個bug我已經提交到cas的jira上了,應該很快可以fix了,在新版本client沒有發布前,可以使用附件壓縮包中的jar替換casclient.jar。
    casclient.zip
    posted on 2006-04-04 09:30 zhangwh6882 閱讀(3977) 評論(3)  編輯  收藏 所屬分類: SSO


    FeedBack:
    # re: CAS java client2.1.1 在Tomcat5.5.16下bug的解決
    2006-07-19 10:17 | taole
    版主我按照你的方法試過 ,但是還是會出到訪問應用程序后提示輸入驗證用戶名和密碼以后就會出現錯誤頁面,
    異常如下:
    *************************************
    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://xufei:8443/cas/proxyValidate">https://xufei:8443/cas/proxyValidate] ticket=[ST-2-cHE06v0KjLXrd2YOwdbTQAM2hsZeCZfauiz-20] service=[http%3A%2F%2Fxufei%3A8080%2Fservlets-examples%2Fservlet%2FHelloWorldExample] renew=false]]]
    edu.yale.its.tp.cas.client.filter.CASFilter.doFilter(CASFilter.java:381)
    filters.ExampleFilter.doFilter(ExampleFilter.java:101)


    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://xufei:8443/cas/proxyValidate">https://xufei:8443/cas/proxyValidate] ticket=[ST-2-cHE06v0KjLXrd2YOwdbTQAM2hsZeCZfauiz-20] service=[http%3A%2F%2Fxufei%3A8080%2Fservlets-examples%2Fservlet%2FHelloWorldExample] 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)
    filters.ExampleFilter.doFilter(ExampleFilter.java:101)


    note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.
      回復  更多評論
      
    # re: CAS java client2.1.1 在Tomcat5.5.16下bug的解決
    2006-07-28 16:18 | feng
    暈,我也遇到這個問題。如果一開始輸入 https://localhost:8443,再繼續訪問的話,一點問題都沒有。 但是如果一開始輸入 http://localhost:8080的話,就出現上面的問題。下載斑竹的包也無用
    郁悶  回復  更多評論
      
    # re: CAS java client2.1.1 在Tomcat5.5.16下bug的解決
    2007-05-18 14:41 | 555
    能不能帶出來參數給下面的畫面

    怎么將從數據庫里面查到的數據放在session里  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2007年5月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    搜索

    •  

    積分與排名

    • 積分 - 4100
    • 排名 - 3287

    最新評論

    主站蜘蛛池模板: 亚洲国产精品一区二区久久hs| 亚洲欧洲日产国码二区首页| 亚洲精品久久无码| 精品无码人妻一区二区免费蜜桃 | 亚洲性线免费观看视频成熟 | 免费做爰猛烈吃奶摸视频在线观看 | 亚洲一区精品中文字幕| 香蕉免费一级视频在线观看| 91热久久免费精品99| 亚洲av无码专区国产乱码在线观看| 久久er国产精品免费观看8| 亚洲一区二区三区在线播放| 亚洲白嫩在线观看| 99在线观看免费视频| 又大又硬又爽免费视频| 亚洲情a成黄在线观看动漫尤物| 亚洲色成人WWW永久在线观看| 一个人看的www在线免费视频| 亚洲精品美女久久久久99小说| 亚洲成人黄色在线| 成年人在线免费看视频| 亚洲AV无码之国产精品| 男人的天堂亚洲一区二区三区 | 一级成人a做片免费| 亚洲伊人色欲综合网| 97在线视频免费| 亚洲情A成黄在线观看动漫软件| 国内免费高清在线观看| 美女露100%胸无遮挡免费观看 | 免费a级毛片无码av| eeuss影院免费92242部| 免费高清资源黄网站在线观看| 亚洲av成人中文无码专区| MM131亚洲国产美女久久| 久久国产精品免费专区| 中文文字幕文字幕亚洲色| 亚洲av无码不卡私人影院| 免费91麻豆精品国产自产在线观看 | 国产大片免费网站不卡美女 | 亚洲乱亚洲乱少妇无码| 日本免费一区二区三区四区五六区|