2014-02-18 32 views
0

我構建了兩個獨立的遊戲,我希望它們共享相同的登錄系統。所以,如果你有一個帳戶,你用這兩個遊戲。爲不在同一網絡上的多個網站創建登錄API

但是,當他們首次註冊並登錄時,我不想將它們重定向到集中式系統,因爲我希望註冊/登錄過程儘可能簡單,因爲我擔心他們會失去興趣。

所以我想讓他們正常登錄網站,然後使用cURL通過構建API將請求發送到集中式網站。

但我想知道這是否是一種好方法,因爲這些網站都不在同一個網絡上。我想我必須建立集中式登錄系統,以便它只接受來自遊戲所在域的請求。但是還有什麼我需要擔心的嗎?我應該如何發送例如密碼?因爲發送純文本看起來像一個可怕的想法,所以我想我將不得不在遊戲的一邊散列它們。我想我必須製作一個用戶表的小副本,例如usernameuser_id

我不想使用例如OpenID或Facebook Connect等,因爲這確實意味着重定向到外部系統(這對用戶體驗不利),並且網站上玩家的平均年齡大約是十四歲,所以他們不知道OpenID,我不想強​​迫他們將他們的Facebook帳戶連接到我的網站。

另外我很抱歉,如果我不清楚或寫英文不好,我不是一個土生土長的人,並且很難用正確的方式表達自己。

在此先感謝!

回答

0

API是一個很好的方法。但是,如果你實現了這樣一個API,你應該記住這些事情:

  1. 對API使用強大的認證密鑰。您可以通過服務器IP過濾請求,但是這會起作用,但我不會推薦它,因爲您可以發送操縱的數據包(IP-Spoofing)。
  2. 你可以在你的遊戲服務器上散列密碼,但是如果從客戶端到服務器的連接沒有加密,密碼就已經通過互聯網發送了,如果他想要攻擊者可以從客戶端的未加密連接開始他或她的密碼。因此,請確保爲關鍵用戶數據的每個連接使用SSL。
+0

由於我沒有多少錢可以省下,目前還沒有SSL加密。對於IP過濾,可能是隨機密鑰加上服務器IP的組合? – Seph

+0

API密鑰可以以您想要的任何方式生成。我建議你生成一個非常長的字符串(大約800 - 1000個字符),並將其與服務器IP保存在數據庫中。如果你想要更安全的話,你可以使用服務器密鑰和授權密鑰。這樣,兩個密鑰必須是正確的,攻擊者將很難破解它們。關於SSL加密:我認爲有可能爲愛好項目免費獲得證書,我會看看是否可以找到它。 – Thiefbrain

+0

你走了,發現它:[cacert.org](http://www.cacert.org/) – Thiefbrain

0

您有兩個選項 選項1:將這兩個應用程序與CAS集成。 CAS是專爲單點登錄場景設計的基於簡單協議的身份驗證體系結構。這將極大地節省您的大量時間,並進行簡約的開發修改。

選項2:在其中一臺服務器上有一個獨立用戶表,並對該表進行身份驗證請求。問題是在遊戲過程中保持個性,你可以通過會話和cookies來實現。