一、簡(jiǎn)單例子
在講單點(diǎn)登錄之前,我們講一些客戶端是如何跟服務(wù)器交互的。舉微信為例子,我們手機(jī)登錄了微信,此時(shí)服務(wù)器就會(huì)返回一把鑰匙(token)給APP,這把鑰匙就是證明我是誰(shuí)?例如我是Candy,每次都拿這把鑰匙去請(qǐng)求服務(wù)器,例如獲取Candy的朋友圈數(shù)據(jù),Candy的微信好友列表等,當(dāng)我們退出登錄的時(shí)候,我們會(huì)告訴微信說(shuō)鑰匙過(guò)期啦。
好,這里我們要記住,登錄微信,獲取微信給我們的鑰匙,用鑰匙去拿對(duì)應(yīng)數(shù)據(jù)。當(dāng)我們退出微信的時(shí)候,我們會(huì)告訴微信說(shuō)鑰匙
二、概念講解
進(jìn)入主題,單點(diǎn)登錄SSO,英文是Single Sign On。那什么是單點(diǎn)登錄呢?
你有兩個(gè)手機(jī),一個(gè)登陸了微信,另一個(gè)只要點(diǎn)擊登錄微信,前一個(gè)手機(jī)就會(huì)推出微信,這個(gè)就是單點(diǎn)登錄。
那多點(diǎn)登錄呢?你想想你的iPad,或者是電腦,是不是都可以同時(shí)登陸微信?這個(gè)就是多點(diǎn)登錄,
那他的原理是什么?還是那把鑰匙,只是微信給了他們iPad跟手機(jī)一把強(qiáng)關(guān)聯(lián)的鑰匙,手機(jī)也好,iPad也好,都可以用這把鑰匙,拿到他們對(duì)應(yīng)的數(shù)據(jù)。
三、思維拓展
例子:為什么說(shuō)是強(qiáng)關(guān)聯(lián)呢?還是舉微信手機(jī)的例子,
1、從主次來(lái)講,我們先區(qū)分手機(jī),電腦,iPad的鑰匙主次,當(dāng)電腦登錄微信的時(shí)候,手機(jī)能否把電腦的微信退出?答案是可以。我們手機(jī)可以控制電腦的微信鎖定,甚至是退出。這里的鑰匙主次是以手機(jī)為主,但這不是唯一的答案,這是產(chǎn)品設(shè)計(jì)的,只要產(chǎn)品愿意,程序員也是可以把電腦的主權(quán)上升的,電腦也可以讓手機(jī)退出,關(guān)鍵在于電腦登錄微信是通過(guò)手機(jī)掃碼的,所以手機(jī)的鑰匙肯定是占據(jù)主動(dòng)的,這樣比較符合產(chǎn)品設(shè)計(jì)。
2、還是剛剛那樣的例子,手機(jī)A已經(jīng)登錄了微信,甚至也登錄了電腦微信,此時(shí)手機(jī)B登錄微信,會(huì)怎么樣?手機(jī)A會(huì)退出微信,同時(shí)手機(jī)A登錄的電腦微信也會(huì)退出。為什么?這就是那把鑰匙被退出的原因。
例子:那為什么有些APP他們可以同時(shí)在多個(gè)手機(jī)上面使用啊,他們不符合單點(diǎn)登錄,但又和微信的多點(diǎn)登錄沖突啊。
這里還是那把鑰匙的問(wèn)題,因?yàn)樗麄兊某绦蛟O(shè)計(jì),都是給了同一把鑰匙,手機(jī)A用賬號(hào)密碼登錄后,給了鑰匙A,手機(jī)B用賬號(hào)密碼登錄后,服務(wù)器還是給了鑰匙A,他們都用鑰匙A去服務(wù)器拿數(shù)據(jù),都是可以的。那什么時(shí)候鑰匙會(huì)失效呢?一個(gè)是服務(wù)器設(shè)置了過(guò)期時(shí)間,一個(gè)是其中有一個(gè)手機(jī),點(diǎn)了退出按鈕,服務(wù)器把這把鑰匙設(shè)置為失效!
總結(jié)一下這節(jié)課,這節(jié)課最重要的概念是,手機(jī)登錄,服務(wù)器給鑰匙,這把鑰匙就是證明你是誰(shuí),每次訪問(wèn)服務(wù)器,都會(huì)根據(jù)這把鑰匙是誰(shuí),而給出對(duì)應(yīng)的數(shù)據(jù),如candy的朋友圈,candy的好友列表等。
四、程序優(yōu)化,架構(gòu)優(yōu)化。
關(guān)于架構(gòu)優(yōu)化的知識(shí)點(diǎn)。
舉個(gè)例子,某電商公司A收購(gòu)了物流公司B,我們用戶在電商APP登錄的時(shí)候,需要先登錄電商系統(tǒng)A,獲得了電商鑰匙A,然后用電商鑰匙A,去物流系統(tǒng)B拿物流鑰匙B,這一步用了兩個(gè)步驟,那當(dāng)出現(xiàn)系統(tǒng)3,系統(tǒng)4的時(shí)候,我們的步驟會(huì)非常的多,所以我們可以在多個(gè)服務(wù)中建立SSO系統(tǒng)(單點(diǎn)登錄系統(tǒng)),所有系統(tǒng),電商系統(tǒng)A,物流系統(tǒng)B,房地產(chǎn)系統(tǒng)C…全都去那里登錄,統(tǒng)一一把鑰匙訪問(wèn)所有功能系統(tǒng)。