<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里  回復  更多評論
      

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


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

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    搜索

    •  

    積分與排名

    • 積分 - 4099
    • 排名 - 3287

    最新評論

    主站蜘蛛池模板: www.亚洲精品.com| 成人午夜免费福利| 国产av天堂亚洲国产av天堂| 一级毛片a免费播放王色电影 | 在线成人精品国产区免费| 久久亚洲欧洲国产综合| aa在线免费观看| 亚洲av无码一区二区三区乱子伦| a级毛片黄免费a级毛片| 亚洲福利在线观看| **俄罗斯毛片免费| 色噜噜亚洲男人的天堂| 日韩黄色免费观看| 一级做a爰片久久毛片免费看| 亚洲欧洲国产成人综合在线观看| 国产一区二区三区免费观在线| 亚洲国产精品无码久久SM| 99免费在线观看视频| 国产成人亚洲综合网站不卡| 国产又长又粗又爽免费视频| 一级有奶水毛片免费看| 久久久久亚洲AV无码网站| 成年大片免费视频| 一级午夜免费视频| 亚洲精品国产肉丝袜久久| 日本高清免费aaaaa大片视频| 大片免费观看92在线视频线视频| 亚洲AV中文无码乱人伦下载| 国拍在线精品视频免费观看| 免费看黄网站在线看| 久久精品国产亚洲av四虎| 一二三四在线观看免费高清中文在线观看 | 亚洲欧美一区二区三区日产| 亚洲国产精品综合久久一线| 免费A级毛片无码视频| 亚洲中文字幕久久精品无码A | 亚洲国产精品国自产拍电影| 成年女人免费视频播放77777| 久久成人18免费网站| 久久精品国产亚洲αv忘忧草| 亚洲人成电影网站国产精品|