View a markdown version of this page

GAMESEC03-BP02 ゲームバックエンドサービスに送信されるリクエストを認証する - ゲーム業界レンズ

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

GAMESEC03-BP02 ゲームバックエンドサービスに送信されるリクエストを認証する

ゲームバックエンドサービスに送信されるリクエストを認証すると、不要なリクエストの成功がブロックされる可能性があります。

このベストプラクティスを活用しない場合のリスクレベル:

実装のガイダンス

プレイヤーがログインするための認証サービスを提供する必要があります。これにより、プレイヤーが正常に認証されると、JSON ウェブトークン (JWT) などの安全な有効期間の短いトークンがゲームクライアントに返されます。

これらのトークンには、プレイヤー属性やその他の関連するメタデータを含むクレームアサーションを含めることができます。この関連メタデータは、ゲームクライアントからゲームバックエンドに送信される後続のリクエストで使用して、リクエストを認証し、認証されたプレイヤーのコンテキストで承認できます。 

継続的な改善とメンテナンスを必要とする独自のプレイヤー認証システムを設計および構築することも、Amazon Cognito が提供するスケーラブルで安全なユーザーサインアップ、サインイン、アクセスコントロール機能を使用することもできます。

Amazon Cognito ユーザープールには、認証と認可のためのユーザーディレクトリが含まれています。ユーザープールは、サインアップ、サインイン、パスワードリセットワークフローのためにゲームに統合できる APIs を提供します。これは、サードパーティーの ID プロバイダーと統合できます。Application Load BalancerAmazon API Gateway はどちらも Cognito との統合を提供し、これらのサービスでホストされているカスタムゲームバックエンドに送信されるリクエストのユーザー認証を統合します。

ゲームが匿名アクセスをサポートし、プレイヤーを認証できない場合は、クライアント認証アプローチを使用して、ゲームバックエンドと統合するときにより安全なエクスペリエンスを提供できます。ゲームクライアントが AWS サービスを直接使用する場合、これらのサービスへのリクエストは認証情報を使用して署名する必要があります。認証されていないユーザーにゲームクライアントに認証情報を提供するには、 SDK を使用して AWS Amazon Cognito ID プールから有効期間の短い認証情報を取得し、 AWS サービスへのリクエストの署名に使用できます。これらの認証情報はゲームクライアントから更新できます。 

ゲームクライアントから AWS SDK と直接統合するだけでなく、カスタム認可をサポートする Amazon API Gateway などのサービスを使用して、独自のゲームバックエンドを構築することもできます。独自のゲームバックエンドサービスを設計することで、カスタムサーバー側のロジックを使用してリクエストを権威を持って制御できます。 

Amazon GameLift を使用してホストされるゲームのバックエンドサービスを構築する方法の詳細については、「ゲームクライアントサービスの設計」を参照してください。

お客様事例

AnyCompany Games は、マネージド認証および認可アプローチを採用することで、次のタイトルのセキュリティを強化しました。カスタムユーザー名とパスワードシステムを維持する代わりに、Amazon Cognito ユーザープールを使用してプレイヤーのサインアップとサインインを処理し、ID プールを使用して、アカウントを作成する前にトレーニングモードを試すプレイヤーの匿名アクセスをサポートしました。また、ゲーム内にカスタム認可ロジックを実装して、Cognito で定義された管理者ロールを認識し、それらのユーザーにゲーム内の特別な管理機能へのアクセスを許可しました。

実装手順

  • Amazon Cognito ユーザープールを使用してJWTs などの安全なトークンによる認証を管理し、サインアップ、サインイン、パスワードリセットなどの機能を有効にします。

  • 匿名ユーザーが AWS サービスと安全にやり取りできるように、Amazon Cognito ID プールから存続期間の短い認証情報を取得します。

  • カスタムサーバー側の認証ロジックに Amazon API Gateway を使用してカスタムゲームバックエンドを実装します。