多伺服器的使用者身份認證方案

2021-04-12 17:46:06 字數 973 閱讀 4142

當遊戲伺服器群達到一定規模後,讓使用者只從乙個入口連入會給這個入口帶來很大的壓力。這樣,我們就需要讓伺服器群中的多台機器都允許使用者直接連線。

當伺服器開放給使用者直接登陸後,必須面臨的乙個問題就是使用者身份認證的問題。

大多數提供網路服務的公司都做了一套統一的使用者認證系統,比如微軟的 passport ,網易的通行證,等等。為了避免重複驗證使用者身份而給使用者認證系統帶來過大的負擔,雲風在這裡給出乙個參考解決方案。

登陸伺服器可以只有一台,專門用於使用者第一次登陸的身份認證。它認證完使用者的身份後,則發放乙個遊戲系統內部用的臨時通行證給使用者,使用者可以拿著這個臨時通行證到指定的地點玩遊戲。

我們需要討論的是,以上流程中的安全問題,以及如何加強安全性。

使用者認證過程自然不能傳送使用者密碼的全部資訊,這跟密碼是否加密無關。簡單的安全措施是先由登陸伺服器傳送乙個隨機串給使用者,使用者把這個字串同自己的密碼連線起來,並 md5 以後傳回伺服器做驗證。(這裡用 md5 指代一種特定的不可逆 hash 演算法)

臨時通行證的生成可以是這樣:登陸伺服器從資料庫中取得使用者所屬的伺服器 id (通常是他最後一次登陸的位置,或者遊戲邏輯認為他所在位置)、使用者的遊戲 id (往往不同於他的使用者名稱)、乙個約定字串、乙個順序版本號、一些隨機位元組、把它們連在作一次 des 加密(這裡用 des 指代一種特定的可逆密匙加密演算法)。每生成一次臨時通行證,版本號遞增。加密臨時通行證的密碼由登陸伺服器與每個可以接受使用者直接連線的伺服器約定,永遠不傳送給使用者。

使用者拿到這個臨時通行證後,可以用之一次性登陸指定伺服器。直到從伺服器正常登出,若需切入新伺服器,可由老伺服器生成下乙份臨時通行證。臨時通行證由於被伺服器加密,所以對使用者來說是一串無意義字串,所以無法偽造。

臨時通行證傳送給使用者時,可用使用者自己的密碼之 md5 值(或者連線乙個約定串增加安全性)做密匙加密。這樣不知道密匙的人截獲資料報也不能獲得臨時身份證。而臨時身份證總是一次有效,且只針對特定伺服器(伺服器會檢查臨時通行證中包含的版本號、伺服器 id ),企圖用臨時身份證多次登陸也會失敗。

多伺服器的使用者身份認證方案

當遊戲伺服器群達到一定規模後,讓使用者只從乙個入口連入會給這個入口帶來很大的壓力。這樣,我們就需要讓伺服器群中的多台機器都允許使用者直接連線。當伺服器開放給使用者直接登陸後,必須面臨的乙個問題就是使用者身份認證的問題。大多數提供網路服務的公司都做了一套統一的使用者認證系統,比如微軟的 passpor...

搭建sam使用者認證伺服器

服務端 wangxiaolan 172.16.30.11 客戶端 chenwanli 172.16.30.111 安裝samba伺服器 root wangxiaolan yum y install samba 對映共享目錄 建立使用者wangqing root wangxiaolan useradd...

nginx伺服器新增使用者認證

通過nginx實現web頁面的認證,需要修改nginx配置檔案,在配置檔案中新增auth語句實現使用者認證。最後使用htpasswd命令建立使用者及密碼即可。實現此案例需要按照如下步驟進行。步驟一 修改nginx配置檔案 1 修改 usr local nginx conf nginx.conf ro...