我們通常所使用的的單點登陸工具CAS以及Keycloak等,可以在一定的環境下做到多個應用統一登錄的功能,確實提供了不少的方便,但是如果是面臨多個單點登錄工具以及本地登錄的結合將如何對接呢,大公司或許只有一個穩定的單點登錄平臺,但是對於小公司尤其是三方公司就不一定了,針對這一情況,特意提出了一個可定製化的架構,只需要簡單的配置,就可實現多種單點登陸工具與本應用的解耦,架構圖如下所示:
中間爲控制轉發服務器control,用來註冊應用app與單點代理service的對應關係,而service是實際的單點配置端,
每個service對應一個單點登錄服務,有多少個單點服務,就可以對接多少個service,app發起請求,
會被control轉發到對應的service,service單點登錄成功以後,將結果通過control返回給對應的app,
這樣app就可以實現單點登錄。
並且在此框架運行期間,control以及已有的app與service可以不受任何影響的擴展,只要將app與與之對應的service註冊到control,
然後啓動新的app與service,就可以實現單點登錄功能,簡單方便不停機。
流程如下:
當然這只是設計中的一小部分。
對於其可實現性,已經實現,這也是在解決實際問題中突然出現的一個想法,然後被我做成一個項目,在這裏只是將思想分享一下。
希望對大家有所幫助。
還有實現細節可能並沒有描述的這麼簡單,在項目開發時也參考了keycloak以及cas的實現方式,當然由於面對的問題無法用他們解決,所以自己設計了一個簡單易用的框架。