新JokeサービスSORACOM Horoscopeを分解してみたら、認証サービスの良サンプルだとわかった話

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ども、大瀧です。 2016年4月1日、SORACOMの新サービスが発表されました。エイプリルフールということでJokeサービスという位置づけなのですが、そのうちのひとつSORACOM Horoscopeは、その実、認証サービスであるSORACOM Endorseの良いデモサービスになっています。そして、Webブラウザ上のJavascriptのコードからそのアーキテクチャが見えるので、今回はそのあたりをご紹介してみたいと思います。

SORACOM Horoscopeの概要と使い方

SORACOM Horoscopeはよくある占いWebサービスを、SORACOM AirのSIMをキーとして提供するサービスです。通常のインターネット回線でSORACOM Horoscopeのページにアクセスすると、以下のようにセットアップ手順の案内が表示されます。

soracom-horo02

この手順に従い、SORACOM Airの回線経由、かつSORACOM Endorseの設定をしてアクセスすると。。。

soracom-horo01

こんな感じで占い結果が表示されます。また、ガイドによるとリロードしてもその日のうちは同じ結果が表示されるとのことです。

このような仕組みを持たせるには、一般にはアカウント情報などをユーザーに入力させるかCookieなどクライアントセッションで実装しますが、これをSORACOM Endorseを用いて実現しているわけです。

分解してみた

https://horoscope.soracom.jp/index.jsにロジックが記述されているので気になる方は確認してみてください。流れをまとめると以下のようになります。

soracom-horo03

jQueryによる一般的なAjaxシーケンスですので、curlコマンドで再現できました。Endorseのエンドポイントhttps://endorse.soracom.io/にGETリクエストを投げるとトークンが返ってきます。

$ curl https://endorse.soracom.io/
{"token":"eyJraWQi..."}
$

返ってきたトークンをHoroscopeのエンドポイントhttps://horoscope.soracom.io/endorseにPOSTリクエストのボディとして投げてあげると。。。

$ curl -X POST --data '{"token":"eyJraWQi..."}' https://horoscope.soracom.io/endorse
{"message":"電子工作の才能に目覚める一日。まず手始めに SORACOM Beam を使いこなしてみて。\nSORACOM Funnel で大量のデータを送信すれば上級者の仲間入り!\nデバイス博士と呼ばれる日も近い!?\n\n今日のラッキーデバイス : Raspberry Pi","iconNo":7,"iconName":"基板"}
$

占い結果がレスポンスとして返ってきました!トークンはSORACOM Endorseのみで得られるものですのでそれ以外からのアクセスと区別でき、かつHoroscopeのエンドポイント自体はインターネットからアクセスできるので、この仕組みを使えば「SORACOM専用ページ」のようなものも作れそうですね。

まとめ

SORACOM Horoscopeは、エンジニアが多く在籍するSORACOMさんならではのJokeサービスですね。皆さんも試しつつ、その中身をちょっと覗いてみてくださいw