<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 閱讀(3976) 評論(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里  回復  更多評論
      

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


    網站導航:
     
    <2006年7月>
    2526272829301
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    搜索

    •  

    積分與排名

    • 積分 - 4099
    • 排名 - 3286

    最新評論

    主站蜘蛛池模板: 91视频国产免费| 激情吃奶吻胸免费视频xxxx| 亚洲国产成人九九综合| 亚洲综合校园春色| 激情小说亚洲图片| 色窝窝亚洲av网| 成人片黄网站色大片免费观看APP| 香蕉97碰碰视频免费| 亚洲欧洲AV无码专区| 一本岛v免费不卡一二三区| 免费视频成人片在线观看| 国产一精品一AV一免费| 99精品视频在线观看免费| 91久久精品国产免费一区| 精品国产免费观看久久久| 成年18网站免费视频网站| 亚洲精品视频免费| 亚洲综合无码一区二区三区| 亚洲色大18成人网站WWW在线播放| 在线精品亚洲一区二区| jizz免费在线观看| 韩国免费a级作爱片无码| 91成年人免费视频| 亚洲色一色噜一噜噜噜| 亚洲电影免费观看| 三年片在线观看免费观看大全中国| 人成午夜免费大片在线观看| 99久久久国产精品免费蜜臀| 国产大片51精品免费观看| 亚洲AV无码AV男人的天堂| 日韩国产欧美亚洲v片| 午夜免费福利视频| 免费精品国偷自产在线在线 | 亚洲精品成a人在线观看☆| 国产免费福利体检区久久| 华人在线精品免费观看| 免费观看的av毛片的网站| 国产jizzjizz视频免费看| 亚洲视频免费播放| 一个人免费观看视频在线中文| 免费91最新地址永久入口|