單點(diǎn)登錄(Single Sign On),是指在多個應(yīng)用系統(tǒng)中,只需要登錄一次,就可以訪問其他互相信任的應(yīng)用系統(tǒng)。
現(xiàn)在普通的登錄認(rèn)證機(jī)制,是建立在Cookie、session的基礎(chǔ)上的,用戶在瀏覽器輸入用戶名、密碼,應(yīng)用校驗(yàn)成功后,會簽發(fā)一組session,并將sessionId寫入瀏覽器的Cookie中,重定向訪問應(yīng)用時(shí)會帶上這個Cookie,應(yīng)用會根據(jù)sessionId識別用戶是否已登錄。
CAS 單點(diǎn)登錄機(jī)制建立在兩個基礎(chǔ)上:Cookie是不能跨域讀取的,不同應(yīng)用簽發(fā)的session是不共享的。
不同域下的單點(diǎn)登錄
CAS服務(wù):負(fù)責(zé)用戶的登錄,登錄成功后簽發(fā)一個session,并將sessionIdA寫入瀏覽器的cookie(domain: CAS域名),同時(shí)生成ticket參數(shù)并重定向到應(yīng)用域名。
應(yīng)用服務(wù):若請求中有ticket參數(shù),則去CAS服務(wù)校驗(yàn),校驗(yàn)成功后應(yīng)用服務(wù)簽發(fā)一個session,將sessionIdB寫入瀏覽器的cookie(domain: 應(yīng)用域名);若請求中有cookie(domain: 應(yīng)用域名)信息,session校驗(yàn)通過則說明在該服務(wù)已登錄;否則說明未登錄,則跳轉(zhuǎn)到CAS服務(wù)做用戶登錄。
圖解為:

ciaaxs2ued.png