# 二、多系統的復雜性
web系統早已從久遠的單系統發展成為如今由多系統組成的應用群,面對如此眾多的系統,用戶難道要一個一個登錄、然后一個一個注銷嗎?就像下圖描述的這樣

web系統由單系統發展成多系統組成的應用群,復雜性應該由系統內部承擔,而不是用戶。無論web系統內部多么復雜,對用戶而言,都是一個統一的整體,也就是說,用戶訪問web系統的整個應用群與訪問單個系統一樣,登錄/注銷只要一次就夠了

雖然單系統的登錄解決方案很完美,但對于多系統應用群已經不再適用了,為什么呢?
單系統登錄解決方案的核心是cookie,cookie攜帶會話id在瀏覽器與服務器之間維護會話狀態。但cookie是有限制的,這個限制就是cookie的域(通常對應網站的域名),瀏覽器發送http請求時會自動攜帶與該域匹配的cookie,而不是所有cookie

既然這樣,為什么不將web應用群中所有子系統的域名統一在一個頂級域名下,例如“*.baidu.com”,然后將它們的cookie域設置為“baidu.com”,這種做法理論上是可以的,甚至早期很多多系統登錄就采用這種同域名共享cookie的方式。
然而,可行并不代表好,共享cookie的方式存在眾多局限。首先,應用群域名得統一;其次,應用群各系統使用的技術(至少是web服務器)要相同,不然cookie的key值(tomcat為JSESSIONID)不同,無法維持會話,共享cookie的方式是無法實現跨語言技術平臺登錄的,比如java、php、.net系統之間;第三,cookie本身不安全。
因此,我們需要一種全新的登錄方式來實現多系統應用群的登錄,這就是單點登錄