一.什么是單點登錄?
單點登錄全稱Single Sign On(以下簡稱SSO),是指在多系統(tǒng)應(yīng)用群中登錄一個系統(tǒng),便可在其他所有系統(tǒng)中得到授權(quán)而無需再次登錄,包括單點登錄與單點注銷兩部分
二.認(rèn)證中心為核心—TOKEN機(jī)制
sso需要一個獨立的認(rèn)證中心,只有認(rèn)證中心能接受用戶的用戶名密碼等安全信息,其他系統(tǒng)不提供登錄入口,只接受認(rèn)證中心的間接授權(quán)。間接授權(quán)通過令牌TOKEN實現(xiàn),sso認(rèn)證中心驗證用戶的用戶名密碼沒問題,創(chuàng)建授權(quán)令牌TOKEN,在接下來的跳轉(zhuǎn)過程中,授權(quán)令牌TOKEN作為參數(shù)發(fā)送給各個子系統(tǒng),子系統(tǒng)拿到TOKEN,即得到了授權(quán),可以借此創(chuàng)建局部會話,這個過程,也就是單點登錄的原理
1)登錄/注冊說明

用戶訪問系統(tǒng)1的受保護(hù)資源,系統(tǒng)1發(fā)現(xiàn)用戶未登錄,跳轉(zhuǎn)至sso認(rèn)證中心,并將自己的地址作為參數(shù)
sso認(rèn)證中心發(fā)現(xiàn)用戶未登錄,將用戶引導(dǎo)至登錄頁面
用戶輸入用戶名密碼提交登錄申請
sso認(rèn)證中心校驗用戶信息,創(chuàng)建用戶與sso認(rèn)證中心之間的會話,稱為全局會話,同時創(chuàng)建授權(quán)令牌
sso認(rèn)證中心帶著令牌跳轉(zhuǎn)會最初的請求地址(系統(tǒng)1)
系統(tǒng)1拿到令牌,去sso認(rèn)證中心校驗令牌是否有效
sso認(rèn)證中心校驗令牌,返回有效,注冊系統(tǒng)1
系統(tǒng)1使用該令牌創(chuàng)建與用戶的會話,稱為局部會話,返回受保護(hù)資源
用戶訪問系統(tǒng)2的受保護(hù)資源
系統(tǒng)2發(fā)現(xiàn)用戶未登錄,跳轉(zhuǎn)至sso認(rèn)證中心,并將自己的地址作為參數(shù)
sso認(rèn)證中心發(fā)現(xiàn)用戶已登錄,跳轉(zhuǎn)回系統(tǒng)2的地址,并附上令牌
系統(tǒng)2拿到令牌,去sso認(rèn)證中心校驗令牌是否有效
sso認(rèn)證中心校驗令牌,返回有效,注冊系統(tǒng)2
系統(tǒng)2使用該令牌創(chuàng)建與用戶的局部會話,返回受保護(hù)資源
2)注銷說明

sso認(rèn)證中心一直監(jiān)聽全局會話的狀態(tài),一旦全局會話銷毀,監(jiān)聽器將通知所有注冊系統(tǒng)執(zhí)行注銷操作:
用戶向系統(tǒng)1發(fā)起注銷請求
系統(tǒng)1根據(jù)用戶與系統(tǒng)1建立的會話id拿到令牌,向sso認(rèn)證中心發(fā)起注銷請求
sso認(rèn)證中心校驗令牌有效,銷毀全局會話,同時取出所有用此令牌注冊的系統(tǒng)地址
sso認(rèn)證中心向所有注冊系統(tǒng)發(fā)起注銷請求
各注冊系統(tǒng)接收sso認(rèn)證中心的注銷請求,銷毀局部會話
sso認(rèn)證中心引導(dǎo)用戶至登錄頁面
三.統(tǒng)一用戶體系
在做單點方案之前,首先需要把所有系統(tǒng)層面的賬號規(guī)范化,這是一個篩選合并數(shù)據(jù)的過程,打個比方:
系統(tǒng)1用手機(jī)注冊,系統(tǒng)2用郵箱注冊,獲取到TOKEN也無法打破防火墻;所以碰到類似的情況,第一
先把賬號規(guī)則進(jìn)行規(guī)范,目前主流的以手機(jī)號碼作為用戶唯一表示,之前未通過手機(jī)注冊的,可以在郵箱
登陸時,讓用戶綁定手機(jī)號;(如果手機(jī)號被使用可以增加賬號合并功能,去進(jìn)行數(shù)據(jù)整合)