CAS 登入後訪問應用太慢

2021-10-09 12:18:56 字數 1029 閱讀 4555

shiro + pac4j + cas5 封裝的客戶端 callback介面反應過慢問題

專案上利用cas5 認證授權,登入時反應過慢問題

呼叫後台介面日誌,發現所有耗時均集中在授權認證完成後,cas服務端呼叫客戶端 callback介面上。

繼續跟進callback介面,發現框架封裝的該介面實際就是做了兩個事情,一是從cas服務端獲取使用者資訊,二是將獲取到的資訊儲存下來。

通過斷點發現在呼叫服務端 /cas/p3/servicevalidate 介面時,竟然耗時在5秒鐘左右。

隨後本地整合環境,單獨呼叫介面未發現延時情況,排除網路等多方面因素後,仍未發現問題所限。最後不得不看下 callback介面到底做了什麼。

斷點發現問題主要集中於通過httpurlconnection呼叫請求的地方

httpurlconnection 利用socket建立連線

進入socketpermission類的init方法,引起注意的是獲取位址這裡

上面的 texttonumericformatv4 方法中,發現專門用來區分ip位址的,是ip位址格式則直接返回,不是則返回為null。

同時檢視 init_with_ip引數的用途

ip位址的請求直接取值,而非ip的使用了inetaddress 來獲取。看到這裡,聯想到是否是因為網域名稱解析的問題導致介面耗時較長?

於是將測試環境cas服務介面的位址從網域名稱方式改為ip位址形式。重新測試呼叫 callback介面,響應時間在100ms以內。沒想到會因為httpurlconnection的網域名稱解析消耗了大半時間

通過網域名稱訪問的cas服務介面,最好修改為ip位址,或則在伺服器上加hosts

CAS 登出登入後跳轉到登入頁

cas單點登出後,缺省會跳到它自帶的登出介面 這裡建立在已部署好cas server的基礎上,詳情見上篇文章 如下圖 對應的jsp如下目錄 修改cas servlet.xml檔案的bean的id為logoutcontroller下的p followserviceredirects屬性為 true 如...

CAS 登出登入後跳轉到登入頁

cas單點登出後,缺省會跳到它自帶的登出介面,但是很多時候我們是希望它跳轉到登入介面,需要做如下修改 cas servlet.xml檔案中 p centralauthenticationservice ref centralauthenticationservice p logoutview cas...

CAS 登入後返回更多使用者資訊

從cas server 登入成功後,預設只能從 casclient 得到使用者名稱。但程式中也可能遇到需要得到更多如姓名,手機號,email等更多使用者資訊的情況。cas client 拿到使用者名稱後再到資料庫中查詢,的確可以得到關於該使用者的更多資訊。但是如果使用者登入成功後,直接從 cas s...