Chapter 8

Make executable program


8.4 授權式安全控管 (authorized security control)

啟動 jLIVE Builde™  的授權式安全控管機制 (start authorized security control)

授權式安全控管系統內部作業流程 (security internal system flow)

jLIVE™ middle ware 回覆之授權資料資料(authorized data)

視窗授權項目(authorized item)

授權項目對元件的控制 (authorized item and components)

視窗授權項目之動態變更(authorized item dynamic change)

授權程式設計建議 (tips of authorized programming)

授權式安全控管設定作業 (authorized security control setting)

內嵌組態設定檔 (securitysql.xml) 

 

jLIVE Builder™ 授權式安全控管機制 (authorized security control),是個選擇性 (option) 的系統功能,應用程式系統規劃師可以決定是否採取 jLIVE Builder™ 的機制,或自行建立安全控管模組。自行管理的方式,只要將應用程式屬性設定頁的【使用 jLIVE 登入機制】取消,應用程式執行時,系統的使用者登入對話視窗就不會出現,設計師必須提供登入對話視窗,並對登入的使用者作檢核及授權使用視窗功能。

 

使用 jLIVE Builder™  的授權式安全控管機制,必須將應用程式屬性設定頁的【使用 jLIVE 登入機制】核選 (checked),並在製作應用程式時,執行授權式安全控管設定。完成上述動作後,系統會自動新增八個資料表 (tables),加入四個控制視窗 (forms),並將控管(security control) 設定的 XML 檔傳送至 jLIVE™ middle ware。其中八個資料表 (tables) 記錄使用者登入名稱 (name)、密碼 (password)、任務角色 (roles) 及視窗授權項目 (authorized items),四個控制視窗 (form) 提供執行期的應用程式授權,設計師可以直接引用或按需求進一步的更改。

 

使用 jLIVE Builder™  的授權式安全控管機制,資料庫的登入連結資料 (database login id、password) 是儲存於資料庫相關的資料表中,經由使用者登入 jLIVE™ middle ware 驗證許可後,再取得相對的資料庫登入資料(login)。應用程式系統規劃師,可以針對不同作業使用者,給予特定的登入連結資料 (id、password) 及資料庫存取權限,加強資料庫存取連結的安全性。

 

 

 

 

啟動 jLIVE Builde™  的授權式安全控管機制 (start authorized security control) 

  1. 核選 (checked) 應用程式屬性設定頁的【使用 jLIVE 登入機制】

  2. 展開 (expand) 控制面版應用程式節點,選擇 Applet 或 JarRun 屬性設定頁,按下圖示 安全 按鍵,開啟安全控管設定 (security setting) 作業。

  3. 設定應用程式管理者資料。

  4. 依資料庫系統 (database system),建立相關控制資料表 (tables)。

  5. 建立管理授權的相關模組視窗 (forms)。

  6. 同步應用程式視窗至管理資料表。

  7. 傳送管理者及相關資料庫連結資料的 XML 檔至 jLIVE™ middle ware。

當應用程式佈建執行後,應用程式視窗有所新增或刪除時,必須再次執行應用程式視窗至管理資料表的同步作業。如此授權管理作業中的視窗列示,才能顯示正確的資訊。而相關視窗的程式碼更新,請執行應用程式線上更新 (application online update) 作業。

 

 

▲Top

 

 

授權式安全控管系統內部作業流程 (internal system flow)

  1. 客戶端 (client) 以瀏覽器登入應用程式,系統出現輸入使用者名稱、密碼的對話視窗。
  2. 使用者輸入的名稱 (name) 、密碼 (password) 傳送至 jLIVE ™middle ware 驗證。
    • jLIVE™ middle ware 根據名稱、密碼,查詢是否存在於使用者資料表 (CMM_BASC_USER)中。
    • 如果不存在, jLIVE™ middle ware 傳回使用者名稱、密碼錯誤訊息。
    • 根據使用者資料表 (CMM_BASC_USER) 的 USER_EXCL 及已登入的使用者列表,檢查該名稱、密碼是否允許同時多人登入及是否已有該名稱、密碼登入之使用者,如果該使用者已存在且不允許同時多人登入,則 jLIVE™ middle ware 傳回使用者名稱、密碼已登入訊息。

    • 合格使用者,根據使用者資料表 (CMM_BASC_USER) 的 USER_KEY 與授權角色連結表 (CMM_BASC_LNK) 、角色授權表 (CMM_BASC_AUT) ,查詢使用者授權資料 (authorized data)。

    • 根據使用者資料表 (CMM_BASC_USER) 的 DB_NAME 及 DB_PASS 建立資料庫連結 (database connection)。
  3. 傳回驗證成功及使用者授權資料 (authorized data)。
  4. 客戶端 (client) 系統將根據授權資料(authorized data),將未授權的操作項目、選單、按鍵使之失效 (disabled)。

 

▲Top

 

 

jLIVE™ middle ware 回覆之授權資料資料 (authorized data)

  1. 使用者資料表 (CMM_BASC_USER) 的欄位(data field) 內含值:
    • 欄位 COMP_CODE 內含值儲存於 SysHash,鍵值 (key) 為 compcode。
    • 欄位 USER_NAME 內含值儲存於 SysHash,鍵值 (key) 為 username。
    • 欄位 USER_CODE 內含值儲存於 SysHash,鍵值 (key) 為 usercode。
    • 欄位 USER_DUTY 內含值儲存於 SysHash,鍵值 (key) 為 userduty。
  2. jLIVE™ middle ware Session ID :儲存於 SysHash,鍵值 (key) 為 sessionid。
  3. 使用者登入的使用者名稱:儲存於 SysHash,鍵值 (key) 為 userid。
  4. 使用者登入的使用者密碼:儲存於 SysHash,鍵值 (key) 為 userpass。
  5. 視窗及視窗授權項目(authorized item) 列表:jLIVE™  middle ware 以下列 SQL 擷取使用者的視窗及視窗授權項目,再經聯集 (union) 視窗授權項目後傳回,回傳視窗及視窗授權項目儲存於 SysHash,鍵值 (key) 為視窗名稱 (form name),值 (value) 為授權項目(authorized item)。

Select B.FORM_NAME, B.FORM_SPC, B.AUT_TYPE 
From   CMM_BASC_LNK A , CMM_BASC_AUT B
Where  A.USER_KEY = [
CMM_BASC_USER.USER_KEY]
       And A.ROL_KEY = B.ROL_KEY

 

▲Top

 

視窗授權項目 (authorized item)

  • I :允許使用者在該視窗中,操作屬於新增 (insert) 檔案記錄的功能。
  • U:允許使用者在該視窗中,操作屬於修改 (update) 檔案記錄的功能。
  • D:允許使用者在該視窗中,操作屬於刪除 (delete) 檔案記錄的功能。
  • Q:允許使用者在該視窗中,操作屬於查詢 (query) 檔案記錄的功能。
  • P:允許使用者在該視窗中,操作屬於列印作業 (print) 的功能。
  • X:設計師自行定義項目(custom item) 。
  • Y:設計師自行定義項目(custom item) 。
  • Z:設計師自行定義項目(custom item) 。

 

▲Top

 

 

 

授權項目對元件的控制 (authorized item and components control)

 

jLIVE Builder™ 應用程式執行時,相關的元件 (components) 及事件 (events) 會自行反應使用者是否被授權,沒有相對的授權項目 (authorized item) 時,視窗開啟後,元件會自行失效 (disabled) ,功能選單及項目(menu and menu item) 會移除 (removed)。

  • 事件 (event) 

    • 開啟視窗 (open form) :授權資料中,須含有該視窗名稱 (form name)。

    • 資料來源瀏灠事件 (data source navigator) 

      • 新增 (insert):具有 I 授權項目。

      • 編輯 (update):具有 U 授權項目。

      • 刪除 (delete):具有 D 授權項目。

    • 查詢資料來源 (query data source) :具有 Q 授權項目。

    • 執行印表作業 (open report) :具有 P 授權項目。

  • 元件 (component)

    • 功能選單 (menu item) :連結的啟動事件具有相關授權項目。

    • 導覽元件 (Navigator component)

      • 新增按鈕 (insert):具有 I 授權項目。

      • 編輯按鈕 (update):具有 U 授權項目。

      • 刪除按鈕 (delete):具有 D 授權項目。

      • 查詢按鈕 (query):具有 Q 授權項目。

    • 按鈕元件 (Button component):連結的啟動事件具有相關授權項目。

    • 資料表元件 (Grid component):I、U、D 授權項目,各會影響資料表的新增 (insert) 編輯 (update) 刪除 (delete) 的操作許可。

    • 圖片引發器 (image invoker):連結的啟動事件具有相關授權項目。

 

 

▲Top

 

 

 

視窗授權項目之動態變更 (authorized item dynamic change)

 

jLIVE™ Builder 視窗授權項目,是以鍵值 -- 視窗名稱 (key -- form name) 與值 -- 授權項目字串 (value  -- authorized item string) 的型式存在於 SysHash 中,設計師可以用運算公式 (formula) 的 SysHashGet(FormName()) 查詢授權項目字串,如果授權項目字串中含有該授權項目即是允許該授權操作;設計師亦可根據需要,利用運算公式 (formula) 的 SysHashPut(FormName(),"IUDPQ"),更動預設的授權項目 ("IUDPQXYZ")。

 

 

 

▲Top

 

 

 

授權程式設計建議 (tips of authorized programming)

  • jLIVE™ Builder 內建的八個資料表 (tables),其中資料表名稱及已存在的欄位名稱不可更改,但可以加入其它欄位。建議應用程式規劃時,能以這些資料表 (tables) 涵蓋或擴充為,人員、公司、部門等基本資料檔。

  • 設計師在應用系統流程中,可以利用運算公式 (formula) 的 SysHashGet(),取得由 jLIVE™ middle ware 所傳回的使用者資料:公司代碼 (compcode)、使用者名稱(username)、使用者代碼(usercode)、使用者職責 (userduty) 以及由客戶端登入時的 ID (userid)、密碼 (userpass) 和由 jLIVE™ middle ware 所建立的 Session ID (sessionid)。其中可以公司代碼 (compcode) 關連隸屬的公司資料,運用於多公司系統;使用者代碼 (usercode) 可以關連使用者的基本資料;使用者職責 (userduty) 則應用於使用層級的流程規畫。

  • 由於各個資料庫系統的資料欄位型別與索引不儘相同,設計師可以按存取需求,自行加入所需的索引,以加快查詢效率。

  • jLIVE™ Builder 內建的四個視窗,設計師在了解設計內容後,可以自行修改或重新設計。jLIVE™ 在內嵌視窗時,會按內嵌組態設定檔 (securitysql.xml) 的指示,選擇不同組的作業視窗,其中的差異在於資料庫系統是否有提供 AUTOINCREASE 的資料欄位型別。

  • 使用者資料表 (CMM_BASC_USER),中的 USER_EXCL 欄位,其值為 1 時,一個 USER_ID、USER_PASS 線上 (on line) 只允許登入一個使用者,第二個以相同 USER_ID、USER_PASS  登入時將無法進入。

  • 使用者資料表 (CMM_BASC_USER),中的 DB_NAME 和 DB_PASS 欄位,為該使用者登入資料庫所使用的 ID 和 密碼 (password)。

  • 視窗資料表 (CMM_BASC_FORM),中的 FORM_NAME 欄位,是視窗 class 的名稱; FORM_DIR 欄位,是jLIVE Builder™ 視窗節點的分類 (catalog) 屬性值;FORM_DESC 欄位,是視窗節點的註解值。

  • 使用者登入記錄資料表 (CMM_BASC_LOG),LOG_STAT 欄位,其值 i 表示在線上 (on line) ;o  表示已離線 ;k 表示不正常離線。設計師可查詢使用者登入記錄資料表 (CMM_BASC_LOG),顯示線上狀態。

 

 

▲Top

 

 

 

授權式安全控管設定作業 (authorized security control setting)

 

按下圖示 安全 ,開啟作業視窗。

  • 應用程式系統管理者:

     

    • 管理者 ID:應用程式系統管理者 ID,應用系統線上更新需要此 ID 及密碼。

    • 密碼:應用程式系統管理者密碼。

    • 使用者名稱:管理者名稱。以應用程式系統管理者登入時 SysHash , username 的值。

    • 公司代碼:所屬公司代碼。以應用程式系統管理者登入時 SysHash , compcode  的值。

    • 使用者代碼:使用者代碼。以應用程式系統管理者登入時 SysHash , usercode 的值。

    • 使用者類別:使用者類別。以應用程式系統管理者登入時 SysHash , userduty 的值。

    • 資料庫 ID:應用程式系統管理者登入資料庫的 ID。

    • 資料庫密碼:應用程式系統管理者登入資料庫的密碼。

 

  • 資料表 (tables):建立授權管理資料庫資料表 (database tables)。在第一次建立授權管理時,系統會檢查相關的資料表是否存在,但並不做資料表結構 (data structure) 檢查,所以如果有同名稱的資料表存在,將會產生系統授權錯誤。所有資料表必須全部存在才可進行下一步的作業。

     

    • CMM_BASC_USER:使用者資料表。

       

      CREATE TABLE CMM_BASC_USER ( 
      USER_KEY int IDENTITY (1, 1) NOT NULL,
      USER_ID varchar (12) NULL, 
      USER_PASS varchar (12) NULL, 
      USER_CODE varchar (10) NULL, 
      USER_NAME varchar (32) NULL, 
      DB_NAME varchar (20) NULL, 
      DB_PASS varchar (20) NULL, 
      COMP_CODE varchar (4) NULL, 
      DEP_CODE varchar (10) NULL, 
      USER_DUTY varchar (4) NULL, 
      USER_EXCL varchar(1) NULL) 

       

    • CMM_BASC_LNK:使用者角色連結表。

CREATE TABLE CMM_BASC_LNK (
USER_KEY int NOT NULL,
ROL_KEY int NOT NULL) 
  • CMM_BASC_ROL:角色資料表。

    CREATE TABLE CMM_BASC_ROL (
    ROL_KEY int IDENTITY (1, 1) NOT NULL,
    ROL_NAME varchar (32)  NULL,
    ROL_DESC varchar (254) NULL)
    
  • CMM_BASC_AUT:角色視窗授權表。

    CREATE TABLE CMM_BASC_AUT (   
    ROL_KEY int NOT NULL,
    FORM_NAME varchar (64) NOT NULL,
    FORM_SPC varchar (10) NULL,
    AUT_TYPE varchar (1) NULL)
    
  • CMM_BASC_FORM:視窗資料表 。

    CREATE TABLE CMM_BASC_FORM (
    FORM_NAME varchar (64)   NOT NULL,
    FORM_DIR varchar (32)    NULL,
    FORM_DESC varchar (254)  NULL)
    	
  • CMM_BASC_COMP:公司代碼資料表。

     

    CREATE TABLE  CMM_BASC_COMP (
    COMP_CODE  varchar (4)   NOT NULL,
    COMP_NAME  varchar (32)  NULL,
    COMP_DESC  varchar (254) NULL,
    COMP_ID  varchar (10)    NULL,
    COMP_TYPE  varchar (4)   NULL)
     
  • CMM_BASC_DEP:部門代碼資料表。

    CREATE TABLE CMM_BASC_DEP (
    COMP_CODE varchar (4)  NOT NULL,
    DEP_CODE varchar (10)  NOT NULL,
    DEP_NAME varchar (32)  NULL,
    LOCA_CODE varchar (6)  NULL) 
    	
  • CMM_BASC_LOG:使用者登入記錄資料表。
CREATE TABLE CMM_BASC_LOG( 
SESSION_ID varchar(20) NOT NULL, 
USER_KEY int NOT NULL, 
AP_NAME varchar(32) NULL, 
LOG_IN datetime NULL, 
LOG_OUT datetime NULL, 
LOG_STAT varchar(1) NULL, 
REM_HOST varchar(32) NULL, 
REM_IP varchar(32) NULL, 
REM_NAME varchar(32) NULL, 
LOCA_HOST varchar(32) NULL, 
LOCA_IP varchar(32) NULL, 
LOCA_NAME varchar(32) NULL)


 

  • 視窗 (form):建立授權管理視窗模組

     

    • CMM_BASC_USERCreate:使用者管理視窗。

    • CMM_BASC_ROLCreate:角色管理視窗。

    • CMM_BASC_FORMCreate:應用程式視窗管理。

    • CMM_BASC_COMPCreate:公司代碼管理視窗。

      若視窗已存在, 則新增按鈕將失效。

 

  • 程式:將 jLIVE Builder™ 控制面版的應用程式視窗同步更新到 CMM_BASC_FORM 資料表中。

     

 

 

▲Top

 

 

 

內嵌組態設定檔 (securitysql.xml) 
 

securitysql.xml 位於 jLIVE Builder™ 安裝目錄下的 XML 目錄中,是內嵌 (plug in) 資料表 (tables) 及視窗(forms) 的設定檔。設計師必須完全了解 XML 修改方式,及對要修正或新增的 SQL ,已在資料庫中測試無誤,才可進行更動。通常只有在下列情況下才需做更動。

  • 所使用的資料庫不在選項中:

    在 <config><sql> 標籤 (Tag) 下新增一整組的建立資料表 (tables) 標籤 (tag),可以複製已存在的 MSSQL 或ORACLE 再進行修改。設計師必須對每一個資料表 (table) 的 SQL 命令按所使用的資料庫 (database system) 正確的定義。而在資料庫標籤 (tag) 中有一 特別的屬性 --  specform ,若使用的資料庫具有 AUTOINCREASE 欄位型別,則設定為空字串,否則設定為 oracle,這是因為 jLIVE Builder™ 根據 AUTOINCREASE 欄位型別的有無,提供二種不同的操作視窗。

     

  • 更改內嵌資料表的 SQL 命令:

    對要修正或新增的 SQL ,必須先在資料庫中測試無誤,才可進行更動。

     

  • 以自行修改或開發的視窗取代原有模組:

    jLIVE Builder™ 在內嵌四個視窗 (forms) 時,是根據四個視窗名稱(CMM_BASC_USERCreate.xml+"."+
    specform
    、 CMM_BASC_ROLCreate.xml+"."+specform、CMM_BASC_FORMCreate.xml+"."+specform、CMM_BASC_COMPCreate.xml+"."+specform),如果 specform 屬性是空字串則前面不加 "."。如果設計師要以自行開發的視窗取代,必須先更名為上述的視窗名稱,再加上 "." 與一個特殊字串,並把此字串填入 specform 的屬性中,請參考 Oracle 的作法。

 

▲Top

 



Copyright © 2001~ 2004 Probe Technology . All Rights Reserved.

Questions, comments, and suggestions to Service@probe.com.tw