ゲートウェイとエンドノード

Thing Interaction Framework では、ゲートウェイとエンドノードのいずれも、スタンドアローン(ゲートウェイの機能を使用しない単独で存在する Thing)と同様に Thing として識別されます。

ここでは、これら Thing の識別方法と、アクセスに必要なセキュリティについての情報を説明します。

ゲートウェイとエンドノードの識別子

Thing Interaction Framework 上では、ゲートウェイとエンドノードを識別するため、それぞれに対して vendorThingID と thingID という 2 つの ID を使用します。

vendorThingID と thingID の概念は、スタンドアローンの Thing を扱う場合と同じです。詳細は Thing の識別子 をご覧ください。

たとえば、ゲートウェイの配下に 3 つのエンドノードを接続した場合、以下のような内部構造ができあがります。

オーナー

ゲートウェイとエンドノードは、それらを使用するユーザー(KiiUser)やグループ(KiiGroup)をオーナーとして識別します。オーナーは初期登録の際に、ゲートウェイやエンドノードと関連付ける必要があります。

オーナーの概念も、スタンドアローンの Thing を扱う場合と同じです。詳細は Thing オーナー をご覧ください。

オーナーは紐付けられているゲートウェイやエンドノードにアクセスする権限を持つため、コマンドの送信やステータスの参照ができます。オーナーではないユーザーからはアクセスできません。通常、ゲートウェイと、それに接続されているエンドノードには、同じオーナーを関連付けます。

アクセストークンとセキュリティ

スタンドアローンの Thing と同様に、オーナーのユーザー、ゲートウェイ、エンドノードはそれぞれアクセストークンを持ちます。アクセストークンの概念は アクセストークン をご覧ください。Thing Interaction Framework はリクエストに含まれるアクセストークンを確認することによって、どのユーザー(またはどの Thing)の権限で操作を実行しているかを識別します。

ゲートウェイ、エンドノード、モバイルアプリ、オーナーは、以下の図のような情報を扱ってセキュリティを保持します。

アクセストークン

図のアクセストークンは、次のような意味を持ちます。

なお、ゲートウェイとエンドノードのアクセストークンは初期登録の際に内部で自動的に処理されますが、セキュリティの理解のために把握しておくことが理想的です。

  • オーナーユーザーのアクセストークン(緑色)

    モバイルアプリがオーナーユーザーの権限でアクセスする際に使用するアクセストークンで、Kii Cloud/Thing Interaction Framework によって発行されます。

    オーナーのユーザーをユーザー名とパスワードで作成してログインするか、仮ユーザー(AndroidiOSJavaScriptREST)を作成することで入手できます。

  • ゲートウェイエージェントへのアクセストークン(黄色)

    モバイルアプリがゲートウェイエージェントにアクセスする際に使用するアクセストークンで、ゲートウェイエージェントによって発行されます。

    モバイルアプリが Wi-Fi 経由でゲートウェイのローカル REST API の認証 API を呼び出すことで入手できます。モバイルアプリから、ゲートウェイのパスワードを指定して認証します。

  • ゲートウェイのアクセストークン(青色)

    ゲートウェイがゲートウェイ自身の権限でアクセスする際に使用するアクセストークンで、Thing Interaction Framework によって発行されます。

    ゲートウェイを初期登録する際、ゲートウェイのパスワードを指定して認証することで入手できます。

  • エンドノードのアクセストークン(紫色)

    ゲートウェイが各エンドノードの権限でアクセスする際に使用するアクセストークンで、Thing Interaction Framework によって発行されます。エンドノードごとに存在します。

    エンドノードを初期登録する際、エンドノードのパスワードを指定して認証することで入手できます。

パスワード

セキュリティを保持するため、以下のパスワードを使用します。

  • オーナーユーザーのパスワード

    オーナーユーザーの認証のために使用します。オーナーユーザーのアクセストークンを入手する際に使用します。仮ユーザー(AndroidiOSJavaScriptREST)を使用した場合、パスワードを使用せずにアクセストークンを入手することもできます。

    オーナーユーザーのパスワードは、エンドユーザーがログイン情報として入力することを想定しています。

  • ゲートウェイのパスワード

    以下の 2 通りの目的に使用するパスワードです。

    • モバイルアプリがゲートウェイのローカル REST API にアクセスするために使用します。モバイルアプリがゲートウェイエージェントのアクセストークンを入手する際に使用します。
    • ゲートウェイが Thing Interaction Framework にゲートウェイの権限でアクセスするために使用します。ゲートウェイのアクセストークンを入手する際に使用します。

    ゲートウェイのパスワードは、ゲートウェイのインストール時(工場出荷時、または、ゲートウェイの導入作業時)に指定します。

  • エンドノードのパスワード

    Thing Interaction Framework に、エンドノードの権限でアクセスするために使用します。エンドノードごとに異なるパスワードを設定することができます。エンドノードのアクセストークンを入手する際に使用します。

    エンドノードのパスワードは、エンドノードの初期登録の際にモバイルアプリから指定します。パスワードの入力をエンドユーザーに促しても、ランダムな文字列などで振り出しても構いません。

    最終的に、ゲートウェイはエンドノードのアクセストークンで Thing Interaction Framework にアクセスしますが、エンドノードのパスワードをゲートウェイと共有する必要はありません。ゲートウェイは内部処理としてエンドノードのアクセストークンを自動的にやりとりします。

なお、エンドノードとコンバーターの間のセキュリティについては、Thing Interaction Framework で特別に配慮を行っていません。安全にアクセスできるように、必要に応じて対策してください。