This document is about: SERVER 5
SWITCH TO

概要

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再利用オプションを搭載しています。

Back to top