Player Shared Secret
Player Shared Secret は、ゲーム クライアント間で共有される新しい種類の擬似シークレット キーです。API を使うと、タイトルの RSA 公開キーと交換でき、アカウント登録の実行に使用できます。 タイトルは複数の Player Shared Key を持つことができ、Admin API 呼び出し (Create、Update、Delete、List) を介して、必要に応じて設定・取り消しできます。 Player Shared Secret は、認証されているか否かを問わず、それらを取得するクライアント API が存在しないため、それぞれのクライアントに組み込んでおく必要があります。タイトル公開キー
Player Shared Secret は GetTitlePublicKey に送信されます。キーが有効であれば、この API は 237 バイトのデータを暗号化できる Base 64 エンコードされた RSA CSP blob バイト配列を返します。 アカウント作成を許可するすべての API は、登録要求を暗号化ペイロードとしてEncryptedRequest フィールドに投稿することを受け入れるようになりました。
標準フィールドである
TitleId、InfoRequestParameters、および CreateAccount は、暗号化ペイロードに含めるべきでは ありません。タイトル公開キーを使用した登録
LoginWithCustomID とタイトル公開キーを使用してプレイヤーを登録するサンプル コードを次に示します。
Player Secret
新しい登録システムの一部として、PlayerSecret という新しいフィールドがあります。設定されている場合、ログイン要求を含むすべてのサービスへの API 呼び出し中に、サーバーによって検証されるリクエスト ヘッダーに署名できます。
Player Secret は、タイトルごとにユーザーごとに 1 回のみ 設定できます。同じスタジオ内で複数のタイトルを持つユーザーは、各タイトルに対して Player Secret を設定する必要があります。
Player Secret が登録時にまだ設定されていない場合は、SetPlayerSecret を呼び出して設定できます。以前に設定されていても、Player Secret を 新しい 値に設定できる admin および server API があります。
一度設定した Player Secret は、失うと復元 できません し、それを回復する API も 存在しない ため、デバイスに安全に保存する必要があります。
Player Secret を使用した API リクエストへの署名
以下のコード例では、API リクエストの署名に使用できる署名ヘッダーを構築します。署名ヘッダーの形式は次のとおりです。jsonRequestModel.utcTimeStampInISO.playerSecret
ポリシー適用の使用
API ポリシー を使用して、これらのシナリオを適用できるようになりました。- クライアント要求が暗号化ペイロードであること。
- クライアント要求に署名付きヘッダーが含まれていること。
Deny ステートメントを使用します。これは、Allow ステートメントで許可されていないすべての呼び出しでヘッダーを必須とするポリシーを作成します。
ポリシー ステートメントには ApiConditions というプロパティがあります。ApiConditions には HasSignatureOrEncryption というプロパティが含まれ、これは 3 つの可能な値を持つ列挙型です。
AnyTrueFalse
既定値 (ポリシーで設定されていない場合) は
Any です。LoginWithCustomID へのすべての API 呼び出しを (暗号化されていない、またはヘッダーが欠けている呼び出しを除いて) 許可します。
Deny ステートメントには HasSignatureOrEncryption: False が含まれています。これは、署名または暗号化がないすべての要求が拒否されることを意味します。言い換えれば、署名ヘッダーまたは暗号化が ある すべての要求は、Allow the rest policy に基づいて許可されます。