標籤:style blog http color io ar for 檔案 sp
公司項目組同事最近開發部署SSO單點登入;要求所有系統登入都切換到SSO登入,陸續上了幾個系統都運行正常;公司內部系統都是.net項目 因此都是利用 DotNetCasClient 用戶端接SSO。
而我負責的項目部署後 登入時卻偶爾出現迴圈重新導向問題;臨時的解決辦法就是重啟網站或修改下config檔案;
但這治標不治本;基本上把網上能查到的都了,有兩篇文章轉寄量相當大 一是園裡 刑少 同學的《CAS 與.net 整合的 “迴圈重新導向”問題分析》 二是360文檔中在PerformHttpGet方法加認證自動回調驗證;
但兩篇文章都沒解決我的問題
仔細思考 發現之前webform項目利用接SSO都沒有這樣的問題 但我的項目卻是一個mvc4的項目,卻出現這樣的問題。
對票據輸出,發現一天內由於迴圈重新導向,票據量上升了幾萬個
查系統日誌,終於發現關於DotNetCasClient的 錯誤資訊 不能將空值插入緩衝
最終定位到ParseResponseFromServer方法 將一個string變數在沒有判斷是否為空白的情況下插入緩衝
加判斷;查看代碼邏輯;測試 發現沒問題 不會引發其它bug 最後上線 發現再沒有人反應迴圈重新導向問題。Ohyeah, 系統日誌灰常重要啊,還有網上解決方案不一定適合你啊,每個項目的環境畢竟不太一樣,在這上面浪費了不少時間。
if (CasAuthentication.ProxyTicketManager != null && !string.IsNullOrEmpty(proxyGrantingTicketIou)) { string proxyGrantingTicket = CasAuthentication.ProxyTicketManager.GetProxyGrantingTicket(proxyGrantingTicketIou); if (!string.IsNullOrEmpty(proxyGrantingTicketIou) && !string.IsNullOrEmpty(proxyGrantingTicket)) CasAuthentication.ProxyTicketManager.InsertProxyGrantingTicketMapping(proxyGrantingTicketIou, proxyGrantingTicket); }
CAS與MVC整合下的“迴圈重新導向”分析