ゲートウェイとエンドノード
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 によって発行されます。
オーナーのユーザーをユーザー名とパスワードで作成してログインするか、仮ユーザー(Android、iOS、JavaScript、REST)を作成することで入手できます。
ゲートウェイエージェントへのアクセストークン(黄色)
モバイルアプリがゲートウェイエージェントにアクセスする際に使用するアクセストークンで、ゲートウェイエージェントによって発行されます。
モバイルアプリが Wi-Fi 経由でゲートウェイのローカル REST API の認証 API を呼び出すことで入手できます。モバイルアプリから、ゲートウェイのパスワードを指定して認証します。
ゲートウェイのアクセストークン(青色)
ゲートウェイがゲートウェイ自身の権限でアクセスする際に使用するアクセストークンで、Thing Interaction Framework によって発行されます。
ゲートウェイを初期登録する際、ゲートウェイのパスワードを指定して認証することで入手できます。
エンドノードのアクセストークン(紫色)
ゲートウェイが各エンドノードの権限でアクセスする際に使用するアクセストークンで、Thing Interaction Framework によって発行されます。エンドノードごとに存在します。
エンドノードを初期登録する際、エンドノードのパスワードを指定して認証することで入手できます。
パスワード
セキュリティを保持するため、以下のパスワードを使用します。
オーナーユーザーのパスワード
オーナーユーザーの認証のために使用します。オーナーユーザーのアクセストークンを入手する際に使用します。仮ユーザー(Android、iOS、JavaScript、REST)を使用した場合、パスワードを使用せずにアクセストークンを入手することもできます。
オーナーユーザーのパスワードは、エンドユーザーがログイン情報として入力することを想定しています。
ゲートウェイのパスワード
以下の 2 通りの目的に使用するパスワードです。
- モバイルアプリがゲートウェイのローカル REST API にアクセスするために使用します。モバイルアプリがゲートウェイエージェントのアクセストークンを入手する際に使用します。
- ゲートウェイが Thing Interaction Framework にゲートウェイの権限でアクセスするために使用します。ゲートウェイのアクセストークンを入手する際に使用します。
ゲートウェイのパスワードは、ゲートウェイのインストール時(工場出荷時、または、ゲートウェイの導入作業時)に指定します。
エンドノードのパスワード
Thing Interaction Framework に、エンドノードの権限でアクセスするために使用します。エンドノードごとに異なるパスワードを設定することができます。エンドノードのアクセストークンを入手する際に使用します。
エンドノードのパスワードは、エンドノードの初期登録の際にモバイルアプリから指定します。パスワードの入力をエンドユーザーに促しても、ランダムな文字列などで振り出しても構いません。
最終的に、ゲートウェイはエンドノードのアクセストークンで Thing Interaction Framework にアクセスしますが、エンドノードのパスワードをゲートウェイと共有する必要はありません。ゲートウェイは内部処理としてエンドノードのアクセストークンを自動的にやりとりします。
なお、エンドノードとコンバーターの間のセキュリティについては、Thing Interaction Framework で特別に配慮を行っていません。安全にアクセスできるように、必要に応じて対策してください。