摘要:本文依據 RBAC 基本思想,利用 ASP.NET 中使用者控制項技術,設計了電子商務系統中使用者權限控制一種具體實作方法。
關鍵字:ASP.NET、角色存取控制、使用者控制項
電子商務系統對安全問題有較高要求,傳統存取控制方法 DAC(自主存取控制模型)、MAC(強制存取控制模型)難以滿足複雜企業環境需求。因此,NIST(美國國家標準與技術委員會)90 年代初提出基於角色存取控制方法,實現用戶與存取權限邏輯分離,更符合企業用戶、組織、資料與應用特徵。ASP.NET 是微軟為抗衡 JSP 推出新一代 ASP(Active Server Pages)腳本語言,借鑒 JSP 優點,同時具自身新特點。
本文將先介紹 ASP.NET 基本情況與 RBAC 基本思想,在此基礎上給出電子商務系統實現使用者權限控制具體方法。
ASP.NET 是微軟流行動態 WEB 程式技術活動伺服器網頁(ASP)最新版本,但遠非傳統 ASP 簡單升級。ASP.NET 與 ASP 最大區別在於程式設計思維轉換,ASP.NET 是真正面向物件,而不僅僅功能增強。
ASP.NET 中,Web 表單頁由兩部分組成:視覺元素(HTML、伺服器控制項與靜態文字)與該頁程式邏輯。其中每部分都儲存在單獨檔案中。可視元素在副檔名 .aspx 檔案建立,程式碼位於單獨類別檔案,稱作代碼隱藏類別檔案副檔名 .aspx.vb 或 .aspx.cs。這樣,.aspx 檔存放所有顯示元素,aspx.vb 或 aspx.cs 存放邏輯。
為讓用戶能根據需求方便定義控制項,ASP.NET 引入 Web 表單使用者控制項概念。實際上,只要將 .aspx 稍作修改即可轉換為 Web 使用者控制項,副檔名 .ascx,.ascx 和 .aspx 一樣也有存放邏輯的代碼隱藏類別檔案,副檔名 .ascx.vb 或 .ascx.cs,只是它不能作為獨立 Web 表單頁運行,只有當被包含在 .aspx 檔中時,使用者控制項才能工作。
透過以下兩步驟在 WEB 表單頁設定使用者控制項:
<%@ Register TagPrefix="Acme" TagName="Head" Src="../UserControl/headinner.ascx" %><Acme: Head runat="server"/>這樣,該控制項成為頁一部分,並將在處理該頁時呈現。且該控制項公共屬性、事件與方法將向 Web 表單頁公開並可透過程式設計使用。根據此原理,可將每個頁面初始化時所要執行操作(如登入驗證、角色驗證)封裝在使用者控制項中。
RBAC(角色存取控制)基本思想可簡單用圖 1 表示,即將整個存取控制過程分兩步:存取權限與角色關聯,角色再與用戶關聯,從而實現用戶與存取權限邏輯分離。
因 RBAC 實現用戶與存取權限邏輯分離,極大方便權限管理。例如,若用戶職位發生變化,只需將用戶目前角色移除,加入代表新職務或新任務角色即可,角色/權限間變化比角色/用戶關係變化相對慢得多,且委派用戶到角色不需多少技術,可由行政管理人員執行,而配置權限到角色工作較複雜,需一定技術,可由專門技術人員承擔,但不給他們委派用戶權限,這與現實情況正好一致。
利用 .NET 中使用者控制項實現權限控制基本思想:根據角色存取控制(RBAC)基本原理,給用戶分配一個角色,每個角色對應一些權限,然後利用 ASP.NET 中使用者控制項判斷該用戶對應角色是否對訪問頁面有存取權力。