单点登录和 单一登录的 区别?
1.單點登錄:
單點登錄是登錄之后所有該域名的網(wǎng)站都可以不用登錄了把包括子域名。
單點登錄是從一個系統(tǒng)登錄以后,其他地方不用登錄。。。
單點登錄(Single Sign On),簡稱為SSO,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。SSO的定義是在多個應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系統(tǒng)。
較大的企業(yè)內(nèi)部,一般都有很多的業(yè)務(wù)支持系統(tǒng)為其提供相應(yīng)的管理和IT服務(wù)
單點登錄的機制也一樣,如下圖所示,當(dāng)用戶第一次訪問應(yīng)用系統(tǒng)1的時候,因為還沒有登錄,會被引導(dǎo)到認(rèn)證系統(tǒng)中進行登錄(1);根據(jù)用戶提供的登錄信息,認(rèn)證系統(tǒng)進行身份效驗,如果通過效驗,應(yīng)該返回給用戶一個認(rèn)證的憑據(jù)--ticket(2);用戶再訪問別的應(yīng)用的時候(3,5)就會將這個ticket帶上,作為自己認(rèn)證的憑據(jù),應(yīng)用系統(tǒng)接受到請求之后會把ticket送到認(rèn)證系統(tǒng)進行效驗,檢查ticket的合法性(4,6)。如果通過效驗,用戶就可以在不用再次登錄的情況下訪問應(yīng)用系統(tǒng)2和應(yīng)用系統(tǒng)3了。
[重點是Ticket,參考中國電信,重點還有 認(rèn)證中心]
從上面的視圖可以看出,要實現(xiàn)SSO,需要以下主要的功能:
所有應(yīng)用系統(tǒng)共享一個身份認(rèn)證系統(tǒng)。
統(tǒng)一的認(rèn)證系統(tǒng)是SSO的前提之一。認(rèn)證系統(tǒng)的主要功能是將用戶的登錄信息和用戶信息庫相比較,對用戶進行登錄認(rèn)證;認(rèn)證成功后,認(rèn)證系統(tǒng)應(yīng)該生成統(tǒng)一的認(rèn)證標(biāo)志(ticket),返還給用戶。另外,認(rèn)證系統(tǒng)還應(yīng)該對ticket進行效驗,判斷其有效性。
所有應(yīng)用系統(tǒng)能夠識別和提取ticket信息
要實現(xiàn)SSO的功能,讓用戶只登錄一次,就必須讓應(yīng)用系統(tǒng)能夠識別已經(jīng)登錄過的用戶。應(yīng)用系統(tǒng)應(yīng)該能對ticket進行識別和提取,通過與認(rèn)證系統(tǒng)的通訊,能自動判斷當(dāng)前用戶是否登錄過,從而完成單點登錄的功能。
統(tǒng)一的認(rèn)證系統(tǒng)并不是說只有單個的認(rèn)證服務(wù)器,如下圖所示,整個系統(tǒng)可以存在兩個以上的認(rèn)證服務(wù)器,這些服務(wù)器甚至可以是不同的產(chǎn)品。認(rèn)證服務(wù)器之間要通過標(biāo)準(zhǔn)的通訊協(xié)議,互相交換認(rèn)證信息,就能完成更高級別的單點登錄。如下圖,當(dāng)用戶在訪問應(yīng)用系統(tǒng)1時,由第一個認(rèn)證服務(wù)器進行認(rèn)證后,得到由此服務(wù)器產(chǎn)生的ticket。當(dāng)他訪問應(yīng)用系統(tǒng)4的時候,認(rèn)證服務(wù)器2能夠識別此ticket是由第一個服務(wù)器產(chǎn)生的,通過認(rèn)證服務(wù)器之間標(biāo)準(zhǔn)的通訊協(xié)議(例如SAML)來交換認(rèn)證信息,仍然能夠完成SSO的功能。
2.單一登錄,單賬號單ip登錄策略:
用是Cache.Insert(key(用戶名),value(用戶名),時間為(session.Timeout));
if(Cache["key"]==用戶名)
response.write(己經(jīng)登錄)
我說一個比較普遍的做法,我看過很多就是這么干的
其實可以這樣的,用一個Application存儲一個Table
Table里記錄username,sessionid,time
那么在正式登陸之前就檢查這個Table就可以了
用戶退出,可以根據(jù)這個Table移除記錄,sessiontimeout可以根據(jù)sessionid移除記錄
服務(wù)器中斷了Application也就沒了...這個思路應(yīng)該可以幫你解決
放在服務(wù)器緩存中就可以。再次登錄的時候判斷當(dāng)前用戶列表中有沒有,有的話,說明已經(jīng)登錄。
如果樓主說的一機一號的機制,那么可以直接綁定用戶首次登錄的IP地址,將用戶的IP地址綁定在數(shù)據(jù)庫中,每次登錄的時候判斷IP是否正確。如用戶是IP是自動獲取的話,那么就綁定用戶的硬件串口號。
要做成QQ那種形式的話可以在數(shù)據(jù)庫中加字段來表明,帳號是否屬于登錄的狀態(tài)。
用緩存+session控制,如果緩存存在則不讓另外地方登錄
每次登錄都自動更新一次隨機密碼,也就是在用戶表中usrIdusrNameusrPassusrRanPass用戶每次登錄后把隨機密碼記錄Cookie或session中(包括用戶ID),然后每次刷新頁面的時候用UsrId與UsrRanPass與數(shù)據(jù)庫進行對比。如果隨機密碼不同則退出。。。也可以設(shè)為定時對比。
webform?登錄的時候提取一個sessionID保存在數(shù)據(jù)庫里ajax和服務(wù)器保持聯(lián)絡(luò)..檢測服務(wù)器上的登錄記錄..當(dāng)另一個用戶登錄的時候數(shù)據(jù)庫的sessionID就會被現(xiàn)在登錄的用戶生存的sessionID替換掉..那當(dāng)ajax和服務(wù)器通信時匹配數(shù)據(jù)庫里的sessionID不同時就提示...
據(jù)說sessionID是唯一的...實在不行就用guid生成一個也一樣...不知道有沒有說錯
系統(tǒng)中一個LoginSession表(sessionId,UserId,ip,expireDate)
登錄成功后,檢查單點登錄策略,如果當(dāng)前是不允許多個地方登錄,那么就清空LoginSession中當(dāng)前UesrId的記錄。同時,把當(dāng)前Session記錄起來,同時返回一個token{sessionId,userId}給客戶端。
每次和服務(wù)端的請求,都要到LoginSession中校驗這個token,看是否存在(被踢啦),是否過期(expireDate),是否被限定的Ip地址。
如果Ok的話,修改expireDate,再延遲20分鐘之類
上述接近方案,可以實現(xiàn)踢人,限定Ip,登錄超時的問題
總結(jié)
以上是生活随笔為你收集整理的单点登录和 单一登录的 区别?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java注释模板_Java注释模板设置
- 下一篇: 怎么创建具有真实纹理的CG场景岩石?