Overview
當您使用任何Photon SDK啟動新專案時,您可能會注意到用戶(也稱為玩家)是匿名的。無需以用戶身份登入,且您可能會注意到每個新遊戲階段都會分配一個隨機的userId
。
這對於啟動專案來說是件好事,但也有嚴重的缺點:
- 沒有防止冒充的安全措施,任何人都可以宣告任何
userId
- 任何庫存或統計資料都在客戶端提供,易於操控
- 用戶無法識別他人或找到朋友
- 每個人都可以無條件存取您應用程式的線上元件
- 無法禁止惡意用戶
因此,我們強烈建議在正式發佈之前為所有應用程式新增身份驗證。
雖然Photon本身不提供使用者帳戶,但可以輕鬆整合第三方服務。設定完成後,Photon使用伺服器到伺服器REST api對用戶進行身份驗證。這些服務可以授予或拒絕存取Photon。
匿名用戶
即使您的Photon應用程式不需要伺服器端身份驗證,客戶端也必須始終發送身份驗證操作。預設身份驗證請求使用CustomAuthenticationType.None
,當客戶端連接時,會在幕後發生。
除非您的客戶端程式碼設定了任何憑證(在.Net中透過AuthenticationValues
),否則伺服器將分配一個新的GUID作為userId
,該GUID將持續到遊戲階段結束。
預設下,允許客戶端透過發送userId
來標識自己,但不會以任何方式進行檢查。
存儲和重用userId
客戶端是一種非常簡單的「識別」用戶的方法,但也很容易被身份盜用。這應該被適當的伺服器端身份驗證所取代。
拒絕匿名使用者
即使在為您的應用程式設定了身份驗證提供程式後,客戶端仍然可以嘗試使用AuthenticationValues.CustomAuthenticationType = CustomAuthenticationType.None
。要拒絕這些客戶端,請確保在儀表板中取消選取每個應用程式的「允許匿名用戶端連接」。
身份驗證設定
身份驗證需要伺服器端和您的客戶端之間進行一些協調。
對於每個應用程式(以及相應的AppId),首先在Photon儀表板中完成設定。使用者帳戶的幾個流行服務是預先定義的,任何其他服務都可以新增為「自訂伺服器」。此設定定義了伺服器到伺服器的身份驗證調用的憑證。
客戶端在連接時總是會發送身份驗證操作。要請求使用特定身份驗證提供程式進行身份驗證,客戶端必須在連接之前設定其AuthenticationValues
。所需的值取決於提供帳戶的服務。一些服務只需要用戶名和密碼,而另一些服務則提供自己的SDK和API來登入並獲取身份驗證權杖,以在Photon上驗證用戶。
客戶端的AuthenticationValues.CustomAuthenticationType
的值定義了要使用的服務,因此您可以混合使用。
預先定義提供者
Photon直接實作了幾個流行的使用者帳戶服務,以簡化其使用。對於每項服務,Photon儀表板都會要求一組值來建立系統之間的關聯。在客戶端,每個服務在CustomAuthenticationType
列舉中都有一個相應的值。
這些服務在單獨的檔案頁面中有更詳細的描述。客戶端必須滿足每項服務的預期值。
自訂身份驗證
自訂身份驗證可用於整合預先定義提供者未涵蓋的任何服務。如果您有一個用戶群,並希望將其納入Photon標題,可以使用自訂身份驗證。
必須設定web服務來響應Photon的授權請求。透過響應,服務授予對Photon的存取權限,設定userId
或其他值。在客戶端,使用AuthType = CustomAuthenticationType.Custom
。
自訂身份驗證檔案頁面提供了實作和設置所需REST api的所有詳細資訊,以使用任何後端對用戶進行身份驗證。
PlayFab整合
雖然PlayFab是「用戶後端服務」的流行選擇,但它的身份驗證是作為自訂身份驗證來實作的。
請查看PlayFab整合檔案以取得更多資訊。
控制台上的身份驗證
Photon為大多數流行的控制台平台提供身份驗證提供程式。每個都在相關的Console檔案頁面上進行了描述。
請查看控制台檔案類別以取得更多資訊。
新增Voice及Chat
Voice及Chat SDK是獨立的解決方案,有自己的身份驗證設置。
當Voice及Chat與其他SDK配對時,我們建議設置每個AppId以提供與Fusion或Quantum相同的身份驗證選項。
Unity的Voice SDK甚至提供了一個重用Fusion的AuthenticationValues
的選項。