隨筆 - 37  文章 - 14  trackbacks - 0
          <2007年11月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          相關鏈接

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          針對上篇所提的問題
          1:假設有A、B兩個應用程式,現在在瀏覽器窗口1輸入對A應用程式的請求,會跳轉到cas login窗口身份驗證;身份驗證完成后跳轉會A應用程式請求頁面
          2:在窗口2輸入對B應用程式請求,還會需要身份驗證
          3:在窗口1修改URL為對B應用程式的請求,不需求身份驗證
          首先為什么在同一個窗口修改URL就可以對B應用程式請求而不需要身份驗證
          通過查看edu.yale.its.tp.cas.client.filter.CASFilter源碼可以發現有這么一段
                  HttpSession session = ((HttpServletRequest) request).getSession();

                  // if our attribute's already present and valid, pass through the filter chain
                  CASReceipt receipt = (CASReceipt) session.getAttribute(CAS_FILTER_RECEIPT);
                  if (receipt != null && isReceiptAcceptable(receipt)) {
                          log.trace("CAS_FILTER_RECEIPT attribute was present and acceptable - passing  request through filter..");
                      fc.doFilter(request, response);
                      return;
                  }
          就是說如果在session里已存在有效的CASRecipt就不再需要身份驗證。
          那如何解決不同窗口的問題;通過查看CAS SSO原理可以發現,當CAS SERVER驗證通過后向client傳遞ST的時候也同時向USER瀏覽器里傳遞一個TGC cookies;初步判定是因為找不到這個cookies導致的問題。具體SSO原理可看“SSO原理”這篇文章
          查找cookies:在cas server的cas-servlet.xml里
              <bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
                  p:cookieSecure
          ="true"
                  p:cookieMaxAge
          ="-1"
                  p:cookieName
          ="CASTGC"
                  p:cookiePath
          ="/cas" />
          這是傳送cookies到user端的bean,其中cookieMaxAge的意思是:Use the given maximum age (in seconds) for cookies created by this generator. Useful special value: -1 ... not persistent, deleted when client shuts down(沒持久化)
          cooliePath的意思:Use the given path for cookies created by this generator. The cookie is only visible to URLs in this path and below.
          摘至:spring api
          因此通過修改cookieMaxAge的值控制cookies在User客戶端持久化的存活期如;至此就解決了不同窗口請求需要再次驗證的問題了。
          posted on 2007-11-19 12:58 扭曲的鉛筆 閱讀(2813) 評論(0)  編輯  收藏 所屬分類: J2EE
          主站蜘蛛池模板: 桐梓县| 天等县| 雷山县| 昌宁县| 舞阳县| 普兰县| 张家口市| 滕州市| 庐江县| 太原市| 页游| 加查县| 阜南县| 长治市| 甘洛县| 开原市| 钦州市| 文成县| 茂名市| 孝义市| 富阳市| 皮山县| 馆陶县| 津市市| 民乐县| 通道| 视频| 兴海县| 宁河县| 阿克陶县| 无锡市| 逊克县| 土默特左旗| 桑日县| 揭东县| 镇坪县| 玉山县| 新绛县| 康定县| 汤原县| 阿克苏市|