obnizのアクセス制限
アクセストークン
obnizと接続する際、システムはobnizIDによってデバイスを識別します。しかしインターネットを経由した接続で自分のデバイスにアクセスするために必要な情報がたった8桁の数字だというのは、セキュリティを考えるといかにも脆弱です。総当たりで簡単に他人のobnizIDを取得できてしまいますし、悪意がなくとも誰かがプログラム中で間違ったobnizIDを指定し、それがたまたま自分のobnizIDと一致してしまうと、その誰かプログラムで勝手に自分のobnizデバイスが動かされてしまいます。
そこで、obnizIDの他に『アクセストークン』を生成し、正しいアクセストークンがないとデバイスを制御できないようにすることができます。アクセストークンはランダムな英字+数字+アンダースコア『_』からなる64文字の文字列で、obnizID に較べて文字種も文字数もはるかに多く、推測・総当たりでの発見や偶然の一致の可能性をごく小さくできます。
アクセストークンの生成
アクセストークンの生成は、開発者コンソールのデバイス管理ページから簡単に行うことができます。デバイスを登録していない場合は、まずobnizデバイスの登録(アカウントとの紐付け)が必要です。
obnizデバイスの登録
1. デバイス管理画面を表示
開発者コンソールにログインし、左メニューの『管理』→『デバイス』とクリックして、デバイス管理画面を表示します。
2. デバイスの追加を開始
デバイス管理画面にある『+デバイスを追加』ボタンをクリックします。
『デバイスをアカウントに追加』ダイアログで『購入したデバイスを追加』をクリックします。
obnizデバイスを電源に接続し、WiFiに接続できたら『準備できました』をクリックします。
3. obniz ID の入力
1行入力欄に、デバイス本体に表示されている obniz ID を入力し、『次へ』をクリック
4. 確認番号の入力
デバイス本体のLCDに
1234-5678
Number is
987654
の型式で確認番号が表示されるので(1行目はobniz ID、3行目が確認番号)、Webサイトに表示されたフォームに入力します。
※入力には時間制限があります。この写真を撮っているほんの数分で1回タイムアウトしました…
※タイムアウトすると、Web側にエラーメッセージが表示されるとともに、デバイス上には新しい確認番号が表示されます。
ここから先、画面キャプチャ失敗しました…
5. 登録完了
これで登録完了です。デバイス一覧のページに戻り、いま登録したデバイスが表示されています。
アクセストークンの生成
1. 対象のデバイスを選択する
開発者コンソールのデバイス管理(登録済みデバイス一覧)ページから、アクセストークンを発行したいデバイスを選択します(obnizIDの部分がリンクになっています)
2. アクセストークンを生成する
デバイスの設定ページが表示されるので、下の方へスクロールして『アクセスコントロール』という項目を探します。
『アクセストークンの発行』ボタンをクリックします。
画面が再表示されます。再び『アクセスコントロール』までスクロールすると、アクセストークンが表示されています。
アクセストークンを使用したプログラム
JavaScriptの場合のコード
従来、Obnizオブジェクトの生成は
var obniz = new Obniz("1234-5678");
のように記述していましたが、アクセストークンを使用する場合は
var obniz = new Obniz("1234-5678", { access_token:"xxxx…" });
とします。”xxxx…” の部分がアクセストークンです(本当は64文字もあるのでもっとずっと長いです)。
それ以外の変更はありません。
※アクセストークンを生成した場合、プログラム中でアクセストークンを指定しないとobnizデバイスと接続できなくなりますので注意して下さい(だからこそ不正に利用されないわけですが)。
アクセストークンを変更する
アクセストークンが漏洩した可能性があるなどの理由で、アクセストークンを変更する場合は、以下のようにします。
1. 対象のデバイスを選択する
開発者コンソールのデバイス管理(登録済みデバイス一覧)ページから、アクセストークンを発行したいデバイスを選択します(obnizIDの部分がリンクになっています)
2. デバイス設定ページでアクセストークンを更新する
デバイスの設定ページが表示されるので、下の方へスクロールして『アクセスコントロール』を表示します。
『アクセストークン更新』をクリックします。
画面が再表示され、新しいアクセストークンが表示されています。これ以降は、プログラム中で新しいアクセストークンを使用しないとobnizデバイスに接続できなくなります。
アクセストークンを削除する
アクセストークンを更新する手順とほぼ同じで、『アクセストークンの削除』をクリックします。
画面が再表示され、『アクセスコントロール』の項にアクセストークンが表示されなくなります。これ以降は、プログラム中にアクセストークンを記述しなくてもobnizデバイスに接続できるようになります。
まとめ
- obnizデバイスへのアクセスを制限するためにアクセストークンを使用することができる
- アクセストークンは開発者コンソールのデバイス管理ページで発行・更新・削除ができる
コメント