FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

CLIで署名文字列を作る

f:id:mbaasdevrel:20190918162816p:plain

mBaaSにアクセスする際には署名文字列を生成してリクエストヘッダーに設定する必要があります。その文字列は様々な条件によって生成されるので、プログラムからしか生成できないように思われています。しかし、生成方法さえ覚えてしまえば、コマンドラインから作ることもできます。

今回はその方法を紹介します。

下準備

アプリケーションキー、クエリストリングなどを連結

まず、下記の情報を揃えます。実際には1〜4の情報は固定になります。

  1. アプリケーションキー(X-NCMB-Application-Key)
  2. シグネチャメソッド(SignatureMethod)
  3. シグネチャバージョン(SignatureVersion)
  4. タイムスタンプ(X-NCMB-Timestamp)
  5. クエリストリング

つまり、以下は固定と考えても大丈夫です。並び順も次の通りです。

  • SignatureMethod=HmacSHA256
  • SignatureVersion=2
  • X-NCMB-Application-Key=YOUR_APPLICATION_KEY
  • X-NCMB-Timestamp=2013-12-02T02:44:35.452Z

クエリストリングは以下のパターンがあります。並び順は次の通りです。条件を指定しない場合は定義しなくても大丈夫です。

  • count(件数を取得する場合)
  • include(ポインターで取得するクラス名)
  • limit(取得件数)
  • order(並び順)
  • skip(取得時にスキップする件数)
  • where(検索条件)

whereはJSONで指定しますので、URLエンコードしなければなりません。これはnkfコマンドを使います。

$ echo '{"testKey":"testValue"}' | nkf -WwMQ | tr = %
%7B%22testKey%22%3A%22testValue%22%7D

これらの情報を合わせて "&" でつなぎます。つまり、次のような文字になります。

SignatureMethod=HmacSHA256&SignatureVersion=2&X-NCMB-Application-Key=6145f91061916580c742f806bab67649d10f45920246ff459404c46f00ff3e56&X-NCMB-Timestamp=2013-12-02T02:44:35.452Z&where=%7B%22testKey%22%3A%22testValue%22%7D

署名用文字列を作る

次に署名用文字列を作ります。これは以下の情報を使います。

  • HTTPメソッド(GET、POSTなど)
  • FQDN(mbaas.api.nifcloud.com または script.mbaas.api.nifcloud.com)
  • パス(/2013-09-01/classes/TestClass など)
  • 上記の文字列

これらの情報を改行で繋ぎます。今回はこれをsig.txtとして保存しています。

GET
mbaas.api.nifcloud.com
/2013-09-01/classes/TestClass
SignatureMethod=HmacSHA256&SignatureVersion=2&X-NCMB-Application-Key=6145f91061916580c742f806bab67649d10f45920246ff459404c46f00ff3e56&X-NCMB-Timestamp=2013-12-02T02:44:35.452Z&where=%7B%22testKey%22%3A%22testValue%22%7D

コマンドを実行する

後はOpenSSLで署名を生成します。一旦バイナリで作って、Base64エンコードします。

$ cat sig.txt | openssl dgst -sha256 -binary -hmac "YOUR_CLIENT_KEY" | base64
AltGkQgXurEV7u0qMd+87ud7BKuueldoCjaMgVc9Bes=

この署名はREST API リファレンス : シグネチャの生成方法 | ニフクラ mobile backendで例示されている文字列と同じです。

まとめ

プログラムで作ることもできますが、署名生成のアルゴリムが分かっていると応用がきくようになります。CLIであれば一つ一つの手順が確認しやすいので、正しく生成できているかどうかもすぐに分かるでしょう。

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。