概要
Photon SDKを使用して新しくプロジェクトを開始するとき、ユーザー(プレイヤー)が匿名であることに気が付くでしょう。ユーザーとして炉食いする必要はありません。各新規セッションにはランダムなuserId
が割り当てられます。
プロジェクトの開始にはとても良いシステムなのですが、深刻なデメリットもあります。
- なりすましに対抗できるセキュリティの欠如。誰でも好きなように
userId
を名乗れます。 - インベントリや統計がクライアント側に提供されるため、簡単に操れます。
- 他のユーザーを特定したりフレンドを探したりできません。
- 誰でもアプリのオンラインコンポーネントに無条件でアクセス可能です。
- 悪意のあるユーザーでも出入り禁止にできません。
このことから、一般リリースの前に全てのアプリに認証を追加するようお願いしています。
Photonではユーザーアカウントを提供していませんが、サードパーティサービスの統合は簡単に行えます。セットアップを行うと、Photonはユーザーの認証にサーバー間REST APIを使用するようになります。これらのサービスでPhotonへのアクセス権を承認したり拒否したりできます。
匿名ユーザー
サーバー側認証を必要としていないPhotonアプリだとしても、クライアントは認証オペレーションを必ず送信しなければなりません。デフォルトの認証リクエストはCustomAuthenticationType.None
を使用し、クライアントの接続時にシーンの裏で起きます。
クライアントが認証情報( AuthenticationValues
経由でのin .Net)を設定していない限り、サーバーがuserId
として新しくGUIDを割り当てます。これはセッション終了まで残ります。
クライアントはuserId
を送信することでお互いを特定できる使用ですが、チェックはされません。
userId
をクライアント側で保存および再利用することが、ユーザーを特定するための簡単な「特定」方法となりますが、なりすましに弱いという弱点があります。適切なサーバー側認証と置き換えてください。
匿名ユーザーの却下
アプリに認証プロバイダーをセットアップしても、クライアントはAuthenticationValues.CustomAuthenticationType = CustomAuthenticationType.None
の使用を試みることができます。これらを使用するクライアントを却下するにはダッシュボードで、アプリごとに「Allow anonymous clients to connect(匿名クライアントの接続を許可する)」のチェックを外すようにしてください。
認証セットアップ
認証には、サーバー側とクライアントの間の連携が必要になります。
アプリケーション(そして対応するAppID)ごとに、まずPhoton Dashboard内でセットアップが行われます。ユーザーアカウントの一般的なサービスを決めておき、その他のサービスは「カスタムサーバー」として追加していきます。このセットアップが、サーバー間認証呼び出しの認証情報となります。
クライアントは必ず接続時に認証オペレーションを送信します。特定のAuthentication Provider(認証プロバイダー)で認証をリクエストするには、接続する前にクライアント側でAuthenticationValues
を設定しておく必要があります。必要な値はアカウントが提供するサービスによって異なります。ユーザー名とパスワードだけが必要なサービスもあれば、独自のSDKやAPIを用いてログインし認証トークンを取得してPhoton上でユーザーを認証するサービスもあります。
クライアントのAuthenticationValues.CustomAuthenticationType
値はどのサービスを使用するかを決めるものです。サービスを自由に組み合わせて使うことができます。
Predefined Provider(あらかじめ定義されたプロバイダー)
Photonはよく使われるユーザーアカウントサービスを直接実装し、使いやすくしています。各サービスにおいて、システム間を関連付けるためにPhoton Dashboardで値を求められます。クライアント側では、各サービスに対応する値が CustomAuthenticationType
enumで存在しています。
これらのサービスについては別のドキュメントページで詳しく説明しています。サービスごとに決められた値を提供する必要があります。
Custom Authentication(カスタム認証)
Custom Authenticationはあらかじめ定義されたプロバイダーに含まれないサービスを統合するときに使用します。ユーザーベースをPhotonタイトルに引き込みたいときにCustom Authenticationを使用できます。
Photonの権限リクエストに応えるため、Webサービスをセットアップする必要があります。応答を通して、サービスはPhootnへのアクセス権を付与しuserId
または追加の値を設定します。クライアント側ではAuthType = CustomAuthenticationType.Custom
を使用します。
Custom Authenticationドキュメントページで、必須のREST APIを実装および構成して、あらゆるバックエンドでユーザーを認証する方法の詳細を説明しています。
PlayFab Integration
「ユーザーのバックエンドサービス」としてPlayFabが一般的ですが、この認証はCustom Authenticationとして実装されます。
詳細はPlayFab Integrationドキュメントをご覧ください。
Authentication on Consoles(コンソールでの認証)
PhotonはAuthentication Providersに最も一般的なコンソールプラットフォームを提供しています。それぞれのコンソールドキュメントページで説明しています。
詳細はConsolesドキュメントカテゴリをご覧ください。
VoiceとChatの追加
Voice SDKとChat SDKは別個のソリューションで、別々の認証設定が必要です。
VoiceやChatを他のSDKと組み合わせる場合、FusionやQuantumと同様に各AppIDで認証オプションを提供するような構成にすることを推奨します。
Unity向けVoice SDKはFusionのAuthenticationValues
再利用オプションを搭載しています。