首先說明一下單點(diǎn)登錄與單設(shè)備登錄的含義畜侦。
單點(diǎn)登錄(Single Sign On)池充,簡(jiǎn)稱為?SSO,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一飞苇。SSO的定義是在多個(gè)應(yīng)用系統(tǒng)中菌瘫,用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系統(tǒng)。用人話說就是:從一個(gè)系統(tǒng)登錄以后布卡,其他地方不用再登錄雨让,可直接訪問。例如:QQ忿等,我在QQ空間登錄一次栖忠,我可以去訪問QQ產(chǎn)品的其他服務(wù):QQ郵箱、騰訊新聞等,都能保證你的賬戶保持登錄狀態(tài)庵寞。
單設(shè)備登錄:就是只能在一個(gè)設(shè)備上登錄虚汛,若同時(shí)在其他設(shè)備登錄,先前登錄的用戶會(huì)被提醒:該賬戶在其他設(shè)備登錄皇帮。例如qq卷哩,小米手機(jī)登錄中,同時(shí)拿華為手機(jī)登錄該賬戶属拾,小米手機(jī)的賬戶會(huì)被擠下線将谊。
一機(jī)一號(hào)機(jī)制:一個(gè)手機(jī)只能上一個(gè)賬號(hào),一個(gè)賬號(hào)只能在一個(gè)手機(jī)登錄渐白。
單點(diǎn)登錄的機(jī)制如下圖所示:
1.當(dāng)用戶第一次訪問應(yīng)用系統(tǒng)的時(shí)候尊浓,因?yàn)檫€沒有登錄,會(huì)被引導(dǎo)到認(rèn)證系統(tǒng)中進(jìn)行登錄纯衍;
2.根據(jù)用戶提供的登錄信息栋齿,認(rèn)證系統(tǒng)進(jìn)行身份效驗(yàn),如果通過效驗(yàn)襟诸,應(yīng)該返回給用戶一個(gè)認(rèn)證的憑據(jù)--ticket瓦堵;
3.用戶再訪問別的應(yīng)用的時(shí)候【3,5】就會(huì)將這個(gè)ticket帶上歌亲,作為自己認(rèn)證的憑據(jù)菇用,應(yīng)用系統(tǒng)接受到請(qǐng)求之后會(huì)把ticket送到認(rèn)證系統(tǒng)進(jìn)行效驗(yàn),檢查ticket的合法性【4陷揪,6】惋鸥。如果通過效驗(yàn),用戶就可以在不用再次登錄的情況下訪問【應(yīng)用系統(tǒng)2】和【應(yīng)用系統(tǒng)3】了悍缠。
[重點(diǎn)是Ticket,參考中國電信卦绣,重點(diǎn)還有 認(rèn)證中心]
要實(shí)現(xiàn)SSO,首先所有應(yīng)用系統(tǒng)需共享一個(gè)身份認(rèn)證系統(tǒng)飞蚓。認(rèn)證系統(tǒng)的主要功能是將用戶的登錄信息和用戶信息庫相比較滤港,對(duì)用戶進(jìn)行登錄認(rèn)證;認(rèn)證成功后玷坠,認(rèn)證系統(tǒng)應(yīng)該生成統(tǒng)一的認(rèn)證標(biāo)志(ticket)蜗搔,返還給用戶。另外八堡,認(rèn)證系統(tǒng)還應(yīng)該對(duì)ticket進(jìn)行效驗(yàn)樟凄,判斷其有效性。
其次:所有應(yīng)用系統(tǒng)能夠識(shí)別和提取ticket信息兄渺。要實(shí)現(xiàn)SSO的功能缝龄,讓用戶只登錄一次,就必須讓應(yīng)用系統(tǒng)能夠識(shí)別已經(jīng)登錄過的用戶。應(yīng)用系統(tǒng)應(yīng)該能對(duì)ticket進(jìn)行識(shí)別和提取叔壤,通過與認(rèn)證系統(tǒng)的通訊瞎饲,能自動(dòng)判斷當(dāng)前用戶是否登錄過,從而完成單點(diǎn)登錄的功能炼绘。
統(tǒng)一的認(rèn)證系統(tǒng)并不是說只有單個(gè)的認(rèn)證服務(wù)器嗅战,如下圖所示,整個(gè)系統(tǒng)可以存在兩個(gè)以上的認(rèn)證服務(wù)器俺亮,這些服務(wù)器甚至可以是不同的產(chǎn)品驮捍。認(rèn)證服務(wù)器之間要通過標(biāo)準(zhǔn)的通訊協(xié)議,互相交換認(rèn)證信息脚曾,就能完成更高級(jí)別的單點(diǎn)登錄东且。如下圖,當(dāng)用戶在訪問應(yīng)用系統(tǒng)1時(shí)本讥,由第一個(gè)認(rèn)證服務(wù)器進(jìn)行認(rèn)證后珊泳,得到由此服務(wù)器產(chǎn)生的ticket。當(dāng)他訪問應(yīng)用系統(tǒng)4的時(shí)候拷沸,認(rèn)證服務(wù)器2能夠識(shí)別此ticket是由第一個(gè)服務(wù)器產(chǎn)生的色查,通過認(rèn)證服務(wù)器之間標(biāo)準(zhǔn)的通訊協(xié)議(例如SAML)來交換認(rèn)證信息,仍然能夠完成SSO的功能堵漱。