今回のメニューはこちら!
謎のサーバーサイドとかいうやつ
今回は、証明やら暗号をくわえて、サーバーがちょっとセキュアになりますよ。証明やら暗号やら
ファイルを3つ用意したのでこれを入れるだけでオッケーです。※自分の構成にあわせてネームスペースだけ変更してください。
追加するファイル
- REST.cs
サーバーサイドから利用する認証や暗号、RESTに関するものをまとめています。 - ApiApp.cs
- ApiAppREST.cs
クライアントサイドから利用する認証や暗号、RESTに関するものをまとめています。
配置はこんな感じ
今回はじめての、ソースコード編集
AzureApiAppプロジェクトの Controllers/ValuesController.csを編集して、セキュアなコードにしてみましょう。ValuesController.cs
public string Get(int id)この関数を書き換えます。
{
:
:
:
}
public HttpResponseMessage Get(string id)そのままコピペしてしまいましょう。
{
// サーバー番号
var serverId = int.Parse(REST.GetHeaderValue("x-chigusa-serverid", this.Request.Headers));
// userId の復号化
var encryptedUserId = REST.GetHeaderValue("x-chigusa-userid", this.Request.Headers);
//var userId = REST.Decrypt(encryptedUserId);
// AppVersion
var appVersion = REST.GetHeaderValue("x-chigusa-appversion", this.Request.Headers);
// ハッシュで検査
string addHeader = "x-chigusa-serverid:" + serverId;
addHeader += "\n" + "x-chigusa-userid:" + encryptedUserId;
addHeader += "\n" + "x-chigusa-appversion:" + appVersion;
if (!REST.CheckHash("GET", id, this.Request, addHeader))
throw new Exception("Arg Exception");
return Request.CreateResponse(HttpStatusCode.OK, "value");
}
ちゃんとした手続きをとって呼び出さないと例外がでるようになっています。
成功すると、OKと"value"という文字列を返します。
この検査は、RESTでもよくある感じの手法になっているはずなので、ほかでRESTに出くわしてもイメージしやすくなるといいですね。
少し補足しておくと addHeaderは、クライアント側から追加で送っている情報になります。
Unity用のDLLを作成
Releaseビルドでソリューションをビルドして、DLLを作成しましょう。完成した AzureHelper.dll、これをUnityにもっていきますので覚えておいてください。
0 件のコメント :
コメントを投稿