Philippの答えは完璧ですが、ログインサーバーとゲームサーバー間の接続を必要としないわずかに異なる方法があり、そのような接続が困難な場合に役立ちます。
- ユーザーがログインサーバーで正常に認証されると、上記のようにゲームサーバーのアドレスとログイントークンが送信されます。ただし、このトークンは2つの部分で構成されています。ログインサーバーの時刻、その番号のハッシュ、ユーザー名、IPアドレス、ゲームサーバーのIPアドレスまたはID、およびあなただけが知っている秘密鍵です。
- クライアントは、このトークンを送信して、提供されたゲームサーバーへのログインを試みます。サーバーは、ログイントークンの情報と独自のIPアドレス/ IDおよび秘密鍵に基づいて、以前と同じハッシュを形成します。このハッシュがトークン内のハッシュと一致する場合、プレーヤーが正しく認証されていることがわかります。次に、日付が古すぎないことを確認します(例:1分以上)。
これは機能します:
- 有効期限が切れるため、コピーして再利用することはできません。
- 秘密鍵を知らなければ、新たなログインなしでは構築できません。
- 元のIPアドレスがそれを構成するために使用されるため、他の誰か(たとえば、パケットスニファ)によって簡単に傍受されて使用されることはありません。
- ユーザー名がハッシュの一部を形成しているため、別のアカウントには使用できません。
- サーバーのID / IPアドレスがハッシュの一部を形成するため、異なるゲームサーバーでの同時ログインには使用できません。
より簡単に言えば、ハッシュは送信者がログイントークンを偽造することをほぼ不可能にし、トークン内の情報を信頼できるようにします。
他のセキュリティ指向のハッシュと同様に、bcrypt、PBKDF2、およびscryptが好きなように思える現時点で入手可能な最高のハッシュ関数を使用し、ブルートフォースの再現をあまり実用的でないように、秘密鍵が非常に長くなるようにします。