架構說明

1. 名詞定義

縮寫 描述
GM App Gateway Management app
WKN Well-Know Name,有別於About的建立session方式
ACL Access Control List
Config file 描述Alljoyn router的Policy(Allow or Deny)
SLS Sessionless Signal

2. 什麼是Alljoyn Gateway?

  • 基於Alljoyn Framework所開發的一套Framework
  • 主旨是快速開發一套:管理裝置行為設定操作權限雲端控制的一系列功能
  • 講白一點,就是有一份XML,記錄著每個Alljoyn service內的成員們是否公開,或者是只允許被某個Alljoyn Client控制

  • 接下來的內容,會將這份XML稱為ACL(Access Control List)

ACL - Access Control List
Image 1 - ACL - Access Control List
  • ACL實際上是去更新Alljoyn router的防火決策,而Alljoyn router把決策記錄在一份Configure file

  • 將Alljoyn router視為一道防火牆,有一份通行決策(Configure file)
Configure file
Image 2 - Configure file
  • ACL可以有很多份,但只有一份會生效(Activity)

  • 在這Framework下,產生了三個負責不同職責的角色
    • Gateway Management app
    • Connector app
    • Control app

3. 介紹一下角色的職責吧

  • 在介紹職責之前,我必須要先講解我們想要的目標架構流程
  • 我們希望可以透過網路來控制Device,無論區網外網
    • 區網:Control App透過Alljoyn機制直接控制Device
    • 外網:Control App登入Cloud,並呼叫有註冊且在線的Connector來控制Device
架構
Image 3 - 架構
  • 因此,我們需要有Control App,Connector App
  • 再來,我想指定Alljoyn service的一部分成員公開,或只允許被某些Alljoyn Client控制
  • 所以我要建立一份ACL,來更新Configure file

    或是建立多份ACL,但只有一個生效

  • 建立並修改ACL的工作,將交由使用者登入Control App後進行操作

    基於安全因素,ACL只被允許在區網內透過Control App修改

  • 而維護ACL,並更新Configure file的工作,交給GM app處理
流程
Image 4 - 流程
  • GM App為了將當前配置上傳至Cloud,需要與Connector建立Non Session連線(透過WKN機制)
  • 一個Connector對應一個Cloud,也對應一份目前正在運行的ACL
對應關係
Image 5 - 對應關係

基於安全因素,ConnectorGM App是使用不同Linux User分別執行

3.1. GM App的職責是?

  • 管理ACL:透過About機制,使能被Control App搜尋並建立Session
  • 更新Config File:根據ACL的啟動/關閉,來更新Config File

    Config File的機制為透過(Allow / Deny) Linux (User / Group) 來建立Alljoyn router Policy

  • 提供列出ACL的Method給Connector呼叫
  • 透過WKN與Connector建立Non Session連線

  • WKN是規格寫死的名稱:
    • GM app WKN:org.alljoyn.GWAgent.GMApp
    • Connector app WKN:org.alljoyn.GWAgent.Connector.<Connector Id>

3.2. Connector的職責是?

  • Cloud建立連線並傳輸/接收資料
  • Config File允許的情況下,與Device互動
  • 位於Cloud與Alljoyn Device的之間,將Alljoyn資料與Cloud資料做Protocol的轉換
  • 透過GM App所發出的Signal來了解ACL是否已經被更新/刪除
  • 透過GM App取得正在啟用的ACL

3.3. Control App的職責是?

以下所敘述的功能不一定全部包含,由服務提供商自行定義,有可能只包含一部分的功能

  • 擁有建立/刪除/啟動/關閉/更新ACL的功能與UI介面
  • 與服務提供商的Cloud建立User login的機制
  • 控制Device行為

3.4. Alljoyn Router的職責是?

  • 正確執行Config File所記載的Policy

4. Control App有什麼Secure機制嗎?

  • 由於GM App提供操作ACL的Interface必須是嚴格控管的,Control App要使用此Interface的Method前,必須輸入Password/PIN
  • GM App應該內建Default的Password/PIN,並於Control App登入後,交由User自行修改
Secure
Image 6 - Secure

5. Gateway的各項流程圖

5.1. Gateway Discover

Gateway Discover
Image 7 - Gateway Discover

5.2. 管理ACL

Create ACL

Create ACL
Image 8 - Create ACL

Activate ACL

Activate ACL
Image 9 - Activate ACL

Connector startup

Connector startup
Image 10 - Connector startup

Update ACL

Update ACL
Image 11 - Update ACL

Delete ACL

Delete ACL
Image 12 - Delete ACL

Disable ACL

Disable ACL
Image 13 - Disable ACL

5.3. Notification

送出 Notification

送出 Notification
Image 14 - 送出 Notification

接收 Notification

接收 Notification
Image 15 - 接收 Notification

5.4. 控制AllJoyn Device

呼叫Method

呼叫Method
Image 16 - 呼叫Method

Get property

Get property
Image 17 - Get property

Set property

Set property
Image 18 - Set property

Remoting session-based signal

session-based signal
Image 19 - session-based signal

6. 與ACL相關的成員

6.1. GM app管理ACL的部分

Method

  • Create profile
  • Activate profile
  • Get profile
  • GetProfileStatus
  • GetProfileList
  • Update profile
  • Delete profile
  • Deactivate profile

6.2. Connector提供給外網的部分

Method

  • Get profile
  • Update connection status

Signal

  • Profile updated
  • Profile deleted
  • Shutdown App

7. Config File

  • Config File內的Policy應該要使GM App能收到所有設備的About(Default)
  • GM App啟動時,應該基於已經安裝的Connector ID,建立Deny-all的Policy
  • GM App應該根據ACL修改Config File內的Policy
  • 當Active的ACL被Disable或是Delete時,GM App要移除與此ACL相關的Policy
  • Policy可以Allow/Deny Connector發出Notification
  • Policy可以Allow/Deny Connector接收某Device的Notification
  • Policy可以Allow/Deny Connector對發出Signal
  • Policy可以Allow/Deny Connector接收某Device的Signal
  • Policy可以Allow/Deny Connector呼叫某Device的Method
  • Config File的Policy會隨著Runtime而不斷改變
  • Config File的Reload有兩種方法,一種是取得Bus的ProxyBusObject並引用其Interface的Method;另一種是發送平台訊號(如Kill xxx)來觸發

    GM App採用前者的方式

8. Connetor與Cloud的架構與設計

8.1. 架構

  • 服務提供商在Cloud端建立App Download Server,管理所有可供下載的Connector Package
  • Control App於User login Cloud後,提供UI介面,便於User從App Download Server下載Connector Package,且提Install/Upgrade等UI介面。

    基於上面的需求,GM App必須提供一個Interface給Control App,以便管理Connector PackageInstall/Upgrade/Uninstall/Restart

  • 基於安全考量,應由Package Manager(PM)管理需要安裝的Connector Package並驗證數位簽章是否符合

    PMGM App互動的實作與細節不在此討論內。

Cloud & Connector
Image 20 - Cloud & Connector
  • Install或其他Method被呼叫時,實際上Control App將URL傳給GM App,並交由PM下載、驗證、安裝並分配一個唯一Linux User給此Connector Package當作識別

  • 每一個被安裝的Connector Package都有被分配到一個唯一的Linux User
  • Connector Package被分配到的Linux User都屬於同一個Group

  • GM App應該將已經安裝的Connector Package紀錄成一個表格,包含
    • Connector Id
    • App Name
    • App Package Name
    • App version
    • App package File URL
    • App User Id
    • App Group Id
    • Install Status
    • Install Description
    • Connection Status
    • Operational Status
  • 所有Connector Package內,在預定位置必須含有manifest file,來描述此Connector提供的Service,以及預期能與之互動的Interface

8.2. 設計細節

App Management interface

Method
  • Install App
  • Uninstall App
  • Restart App
  • Get App Status
  • Get Installed Apps
  • Get Manifest Data
  • Get Manifest Interfaces
Signal
  • App Status Changed

Package Manager app functions

Method
  • Install App
  • Uninstall App

8.3. Manifest file

  • Install App
  • App Package Name
  • App version
  • Min AJ SDK version
  • exposed Services
  • List <Desired AllJoyn Interfaces for access>
  • execution Info

外部連結: Alljoyn Gateway wiki

© 2017 Trashman all right reserved,powered by Gitbook修訂時間: 2024-10-14 03:41:00

results matching ""

    No results matching ""