單點登錄和 單一登錄的 區別?


1.單點登錄:

單點登錄是登錄之后 所有該域名的網站都可以不用登錄了把 包括子域名。

單點登錄是從一個系統登錄以后,其他地方不用登錄。。。

單點登錄(Single Sign On),簡稱為 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。
較大的企業內部,一般都有很多的業務支持系統為其提供相應的管理和IT服務
 
單點登錄的機制也一樣,如下圖所示,當用戶第一次訪問應用系統1的時候,因為還沒有登錄,會被引導到認證系統中進行登錄(1);根據用戶提供的登錄信息,認證系統進行身份效驗,如果通過效驗,應該返回給用戶一個認證的憑據--ticket(2);用戶再訪問別的應用的時候(3,5)就會將這個ticket帶上,作為自己認證的憑據,應用系統接受到請求之后會把ticket送到認證系統進行效驗,檢查ticket的合法性(4,6)。如果通過效驗,用戶就可以在不用再次登錄的情況下訪問應用系統2和應用系統3了。
[重點是Ticket,參考中國電信,重點還有 認證中心]

從上面的視圖可以看出,要實現SSO,需要以下主要的功能:
  • 所有應用系統共享一個身份認證系統。
    統一的認證系統是SSO的前提之一。認證系統的主要功能是將用戶的登錄信息和用戶信息庫相比較,對用戶進行登錄認證;認證成功后,認證系統應該生成統一的認證標志(ticket),返還給用戶。另外,認證系統還應該對ticket進行效驗,判斷其有效性。
  • 所有應用系統能夠識別和提取ticket信息
    要實現SSO的功能,讓用戶只登錄一次,就必須讓應用系統能夠識別已經登錄過的用戶。應用系統應該能對ticket進行識別和提取,通過與認證系統的通訊,能自動判斷當前用戶是否登錄過,從而完成單點登錄的功能。
 
  • 統一的認證系統並不是說只有單個的認證服務器,如下圖所示,整個系統可以存在兩個以上的認證服務器,這些服務器甚至可以是不同的產品。認證服務器之間要通過標准的通訊協議,互相交換認證信息,就能完成更高級別的單點登錄。如下圖,當用戶在訪問應用系統1時,由第一個認證服務器進行認證后,得到由此服務器產生的ticket。當他訪問應用系統4的時候,認證服務器2能夠識別此ticket是由第一個服務器產生的,通過認證服務器之間標准的通訊協議(例如SAML)來交換認證信息,仍然能夠完成SSO的功能。

 

 

 

2.單一登錄,單賬號單ip登錄策略:

 

用是Cache.Insert(key(用戶名),value(用戶名),時間為(session.Timeout));

if(Cache["key"]==用戶名)
response.write(己經登錄)

 

我說一個比較普遍的做法,我看過很多就是這么干的
其實可以這樣的,用一個Application存儲一個Table
Table里記錄username,sessionid,time
那么在正式登陸之前就檢查這個Table就可以了
用戶退出,可以根據這個Table移除記錄,session   timeout可以根據sessionid移除記錄

服務器中斷了 Application也就沒了...這個思路應該可以幫你解決

 

放在服務器緩存中就可以。再次登錄的時候判斷當前用戶列表中有沒有,有的話,說明已經登錄。

 

 

如果樓主說的一機一號的機制,那么可以直接綁定用戶首次登錄的IP地址,將用戶的IP地址綁定在數據庫中,每次登錄的時候判斷IP是否正確。如用戶是IP是自動獲取的話,那么就綁定用戶的硬件串口號。
要做成QQ那種形式的話可以在數據庫中加字段來表明,帳號是否屬於登錄的狀態。

 

用緩存+session控制,如果緩存存在 則不讓另外地方登錄

 

每次登錄都自動更新一次隨機密碼, 也就是在用戶表中 usrId usrName usrPass usrRanPass   用戶每次登錄后把隨機密碼記錄 Cookie 或 session 中 (包括用戶ID),然后 每次刷新頁面的時候 用UsrId與 UsrRanPass  與數據庫進行對比。如果 隨機密碼不同則退出。。。也可以設為定時對比。

 

webform? 登錄的時候提取一個sessionID 保存在數據庫里 ajax和服務器保持聯絡..檢測服務器上的登錄記錄..當另一個用戶登錄的時候數據庫的sessionID就會被現在登錄的用戶生存的sessionID替換掉..那當ajax和服務器通信時匹配數據庫里的sessionID不同時就提示...

據說sessionID是唯一的...實在不行就用guid生成一個也一樣...不知道有沒有說錯

 

系統中一個LoginSession表(sessionId,UserId,ip,expireDate)

登錄成功后,檢查單點登錄策略,如果當前是不允許多個地方登錄,那么就清空LoginSession中當前UesrId的記錄。同時,把當前Session記錄起來,同時返回一個token{sessionId,userId}給客戶端。

每次和服務端的請求,都要到LoginSession中校驗這個token,看是否存在(被踢啦),是否過期(expireDate),是否被限定的Ip地址。

如果Ok的話,修改expireDate,再延遲20分鍾之類

上述接近方案,可以實現 踢人,限定Ip,登錄超時的問題

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM