一.什么是單點登錄印蔬?
單點登錄全稱Single Sign On(以下簡稱SSO)勋桶,是指在多系統(tǒng)應(yīng)用群中登錄一個系統(tǒng),便可在其他所有系統(tǒng)中得到授權(quán)而無需再次登錄侥猬,包括單點登錄與單點注銷兩部分
二.認(rèn)證中心為核心—TOKEN機制
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的受保護資源,系統(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)建與用戶的會話,稱為局部會話裁良,返回受保護資源
用戶訪問系統(tǒng)2的受保護資源
系統(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)建與用戶的局部會話,返回受保護資源
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用手機注冊芦劣,系統(tǒng)2用郵箱注冊粗俱,獲取到TOKEN也無法打破防火墻;所以碰到類似的情況虚吟,第一
先把賬號規(guī)則進行規(guī)范寸认,目前主流的以手機號碼作為用戶唯一表示,之前未通過手機注冊的串慰,可以在郵箱
登陸時偏塞,讓用戶綁定手機號;(如果手機號被使用可以增加賬號合并功能模庐,去進行數(shù)據(jù)整合)