999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Struts的屬性證書系統設計與實現

2007-01-01 00:00:00石曉耀胡必跑
計算機時代 2007年5期

摘要:基于角色的訪問控制,使角色成為信息訪問主體,可以有效地解決安全訪問問題。文章以OpenPERMIS為開發原型,采用Struts框架技術,設計并實現了RBAC中的屬性證書管理系統,功能包括屬性證書的創建、編輯、驗證、撤銷、查詢等,為將RBAC系統成功運用到基于Web的應用奠定了基礎。

關鍵詞:Struts框架;屬性證書管理;RBAC;訪問控制

0 引言

基于角色的訪問控制(Role Based Access Control,RBAC)是近年來訪問控制領域的研究熱點。RBAC通過引入角色概念不但降低訪問控制管理的復雜性和開銷,而且為系統管理員提供了比較好的實現安全策略的環境。目前比較成功的RBAC產品之一是英國Salford大學開發的PERMIS系統,并且提供了C/S結構的開放源——openPERMIS。

由于目前很多應用系統是基于Web服務的,因此需要考慮在Web方式下RBAC的實現。其中,屬性證書作為RBAC模型的授權信息載體,是RBAC模型中極其重要的一環,因此我們著重研究在Web方式下實現對屬性證書的動態管理。

現代的網絡開發框架大都采用模型一視圖一控制(MVC)設計模式——使邏輯和描述被分開,由一個邏輯流控制器來協調來自客戶端的請求和服務器上將采取的行動。這條途徑成為了網絡開發事實上的標準。Struts是Apache軟件基金下Jakarta項目的一部分,已經是—個較為穩定、成熟的MVC框架,因此本文以OpenPERMIS系統為原型,研究Web方式下的屬性證書管理,采用Struts框架進行設計與實現,為RBAC在Web模式下的廣泛應用打下基礎。

1 需求描述

屬性證書是由PMI的屬性權威機構簽發的包含某持有者的屬性集和一些與持有者相關信息的數據結構。由于這些屬性集能夠用于定義系統中用戶的權限,因此屬性證書可看作是權限信息的載體。屬性權威以數字簽名來保證實體與其權力屬性相綁定的有效性和合法性。在本文中使用PKCS#12格式的證書,進行數據的封裝存儲。

通常RBAC系統主要分為三個功能模塊:屬性證書管理模塊(創建角色證書、創建策略證書、編輯屬性證書、驗證屬性證書、撤銷屬性證書、查詢屬性證書六個子模塊組成);訪問控制模塊(由獲取用戶屬性證書、ADF驗證用戶角色、AEF執行用戶請求三個子模塊組成);系統管理模塊(由用戶管理、角色管理、資源管理和操作管理四個子模塊組成)。

屬性證書和RBAC模型信息通常會使用LDAP目錄服務器作為存儲數據庫。本系統選擇使用密歇根大學開發的OpenLDAP軟件包;OpenLDAP可以在Linux上穩定運行、易于配置并且有良好的編程接口。

可以將屬性證書管理模塊功能詳細分解為以下幾個方面:

創建屬性證書用戶選擇適當的屬性證權威源(sOA)后提交證書版本號、序列號、有效期、頒發者ID、屬性信息、PKCS#12文件的訪問密碼、存儲DN等必要信息,由系統生成屬性證書并保存到LDAP上。

編輯屬性書(策略與角色)用戶選擇SOA及證書存儲DN,系統列出該DN中所有的屬性證書,用戶從證書列表中選擇證書進行編輯。

驗證屬性證書用戶選擇SOA、證書存儲DN及PKCS#12文件的訪問密碼后,系統列出此DN下的所有屬性證書,用戶從證書列表中選擇證書進行驗證。驗證分為兩步,分別對屬性證書的簽名和有效期進行驗證。

查詢屬性證書用戶選擇SOA及證書存儲DN,系統列出該DN中所有的屬性證書,用戶從證書列表中選擇證書查看其內容。

撤銷屬性證書對于一些過期或簽名無效的證書,系統提供撤銷功能。用戶選擇SOA、證書存儲DN、PKCS#12文件訪問密碼,系統列出該DN下所有的屬性證書,用戶選擇屬性證書進行撤銷,撤銷后LDAP將不再保存該證書信息。

2 屬性證書類圖與APl包

2.1屬性證書類圖

在OpenPERMIS原型系統中屬性證書遵循X.509協議規定的ASN.1編碼證書格式,因此證書的每個字段類都繼承ASNlType接口。

根據RFC3281中對屬性證書的ASN.1語法定義,屬性證書主要由三部分組成:屬性證書主體信息、簽名算法標識符和簽名值。其中主體信息又包括證書版本號、持有者、頒發者、有效期、屬性信息、擴展等信息,而持有者信息又分baseCertificateID結構模式、entityName結構模式與OhjectDigestlnfo結構模式,頒發者類型根據版本不同又可分為V1Form與V2Form。經過源碼分析,我們得到了圖1表示的各字段之間的類圖關系。

圖1 屬性證書的類圖關系

2.2底層API包

OpenPERMIS開發包內提供了底層API供我們引用(見表1),此外我們還增加了一些自定義的包以便系統調用。其中OpenPERMIS提供了對屬性證書進行操作的工具,IAIK提供了證書編碼及簽名算法的工具。

表1 OpenPERMS底層API包

出于Web開發的需要,我們在系統中自定義了一些包以便自身的調用(見表2)。

表2 自定義包

3 基于Struts框架的屬性證書管理系統設計與實現

Struts framework是MVC模式的體現:從視圖角度,主要可由JSP建立,struts自身包含了一組可擴展的自定義標簽庫,可以簡化創建用戶界面的過程;從模型角度,主要是表示一個系統的狀態,在Struts中,系統的狀態主要由ActiomFormBean體現,這些狀態是非持久性的;從控制器角度主要是AcfionServlet,但是對于業務邏輯的操作則主要由Action、ActionMapping、ActionForward這幾個組件協調完成。在這部分我們結合struts框架給出了屬性證書管理系統中的主要模塊的設計與實現代碼。

3.1屬性證書的創建

屬性證書中角色證書存儲用戶角色信息,策略證書存儲所有資源的訪問控制規則,是整個訪問控制模塊的決策依據。我們設計實現的創建證書流程,主要分以下幾步:

(1)選擇適當SOA,由SOA確定PKCS#12文件。PKCS#12中包含用于簽名的私鑰。

(2)從參數中獲取證書的相關信息來設置版本號、序列號、有效期、頒發者ID和擴展信息。

(3)設置屬性信息:從參數中獲取屬性信息,包括一個或多個屬性的Vector對象。屬性由屬性類型和屬性值組成,其中屬性值也是包括一個以上值的Vector對象。

(4)從參數中獲取PKCS#12文件的文件名和訪問密碼,從PKCS#12文件中獲取頒發者信.息、簽名算法和私鑰。

(5)根據前面獲取的基本信息建立屬性證書的主體字段AttributeCertificatelnfo,并對其進行DER編碼。

(6)根據第4步獲得的簽名算法和私鑰對DER編碼后的attributeCertificatelnfo進行簽名。

(7)根據未經過DER編碼的主體字段AttributeCertificatelnfo、簽名算法和主體字段AttributeCertificatelnfo的簽名值建立屬性證書AC結構AttributeCertificate,并對其進行DER編碼。

(8)將證書保存到LDAP相應的DN下。

根據上述流程的描述,我們從MVC角度給出創建角色證書子模塊的描述:

(1)視圖角度,見表3。

3.2屬性證書的編輯

編輯屬性證書的過程與創建屬性證書的過程有點類似,不同的是編輯屬性證書模塊證書的各個字段都已賦值,用戶只需修改相應字段即可。在保存的過程中,創建屬性證書模塊向LDAP的相應DN下增加屬性證書,而編輯屬性證書模塊則替換原有的屬性證書。

編輯屬性證書流程主要分以下幾步:

(1)選擇合適的SOA,一個SOA對應一個PKCS#12文件,通過PKCS#12文件判斷此證書是否由該SOA簽發。

(2)選擇屬性證書所在的DN,獲得證書列表。

(3)從證書列表中選取要編輯的屬性證書。

(4)系統顯示所選證書內容,用戶進行修改操作。

(5)從證書簽發者的PKCS#12文件中獲取簽發者信息、簽名算法和私鑰。

(6)根據前面獲取的基本信息建立屬性證書的主體字段AttributeCertificatelnfo,并對其進行DER編碼。

(7)根據第5步獲得的簽名算法和簽發者的私鑰對DER編碼后的AttributeCertificatelnfo進行簽名。

(8)根據主體字段AttributeCertificatelnfo、簽名算法signatureAlgorithm和主體字段AttributeCertificatelnfo的簽名值型signatureValue建立屬性證書AC結構AttributeCertificate,并對其進行DER編碼。

(9)替換原有證書。

3.3屬性證書的驗證

屬性證書的驗證可分為兩步,第一步為驗證屬性證書的簽名,即驗證屬性證書的合法性。第二步為驗證屬性證書的有效期。其實現的步驟有:

(1)選擇合適的SOA,一個SOA對應一個PKCS#12文件,即由SOA決定用于驗證的公鑰。

(2)通過PKCS#12訪問密碼訪問PKCS#12文件。從PKCS#12證書包內取得密鑰對。

(3)密鑰對進行自我驗證以判斷密鑰是否匹配。

(4)從密鑰對里取得公鑰證書驗證證書簽名有效性。

(5)從證書主體字段中獲得有效期。

(6)將有效期與當前日期進行比較以判斷證書是否過期。

(7)返回驗證結果。

3.4屬性證書的撤銷

證書的撤銷需要提供PKCS#12及訪問密碼,通過驗證屬性證書來判斷此證書是否為該SOA簽發。如果驗證沒有通過則拒絕撤銷操作。證書的撤銷是一個替換的過程,而不是簡單的刪除工作,簡單的刪除操作會把相應DN下所有的證書都刪除掉。所以我們的解決方案是:從LDAP相應的DN下獲得證書列表,取得要撤銷的證書,用一個Vector數據結構保存剩余的屬性證書,再用此Vector替換原DN下所有的屬性證書。

綜合以上分析給出屬性證書撤銷的流程,主要分以下幾步。

(1)選擇合適的SOA,一個SOA對應一個PKCS#12文件,通過PKCS#12文件判斷此證書是否由該SOA簽發。

(2)選擇屬性證書所在的DN,獲得證書列表。

(3)從證書列表中選取要撤銷的證書。

(4)用Vector構造剩余證書列表。

(5)用Vector中證書列表替換DN下證書列表。

4 結束語

本文在分析OpenPERMIS開源代碼基礎上,基于Struts框架,進行了屬性證書管理系統的設計與實現。文中主要描述了屬性證書的類圖和相關的API包提供基礎的支持,詳細介紹了屬性證書的創建,編輯,驗證和撤消模塊的處理流程和代碼實現。本文所描述的是基于RBAC信息系統的Web實現的屬性證書管理模塊,能夠為用戶的角色管理提供方便,為RBAC在Web系統上的應用提供了關鍵支持,已經投入使用。

本文提出并實現了基于struts框架的屬性證書系統,可以進行基于Web方式的屬性證書管理,有利于RBAC在Web上的部署與實現。

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。

主站蜘蛛池模板: 亚洲无线一二三四区男男| 国产精品女主播| 国产精品人成在线播放| 色九九视频| 狠狠干综合| 九九这里只有精品视频| 亚洲精品国产综合99久久夜夜嗨| 国产熟睡乱子伦视频网站| 日韩区欧美国产区在线观看| 欧美亚洲第一页| 色老二精品视频在线观看| 在线观看欧美国产| 国产精品久久久久久久久久98| 制服无码网站| 亚洲美女高潮久久久久久久| 亚洲男人的天堂网| 精品国产乱码久久久久久一区二区| 亚洲福利一区二区三区| 国产毛片基地| 国产亚洲视频免费播放| 国产99视频精品免费观看9e| 久草视频精品| 国产亚洲欧美在线中文bt天堂| 国产欧美日韩综合一区在线播放| 拍国产真实乱人偷精品| 亚洲人精品亚洲人成在线| 狠狠操夜夜爽| 丝袜久久剧情精品国产| 怡红院美国分院一区二区| 日韩亚洲高清一区二区| 亚洲中文字幕97久久精品少妇| 第一页亚洲| 久精品色妇丰满人妻| 热伊人99re久久精品最新地| 精品一区二区久久久久网站| 成年人视频一区二区| 国产真实二区一区在线亚洲| 午夜视频在线观看区二区| 欧美国产综合色视频| 美女国产在线| 中文无码伦av中文字幕| 欧美一区中文字幕| 2021国产在线视频| 九色视频线上播放| www.99在线观看| 免费va国产在线观看| 91精品国产麻豆国产自产在线| 成人免费一区二区三区| 亚洲无码久久久久| 精品无码专区亚洲| 少妇精品网站| 欧美成人午夜影院| 成人看片欧美一区二区| 国产理论最新国产精品视频| 久久久噜噜噜久久中文字幕色伊伊| 在线播放精品一区二区啪视频| 一本一道波多野结衣一区二区 | 国产精品久久精品| 国内精品91| 国产AV毛片| 中文字幕在线欧美| 精品无码国产一区二区三区AV| 在线观看无码av五月花| 精品撒尿视频一区二区三区| 免费看a毛片| 一级毛片在线播放免费| 久久久久久午夜精品| 国产美女无遮挡免费视频网站| www中文字幕在线观看| 欧美区在线播放| 毛片卡一卡二| 国产剧情一区二区| 亚洲欧美色中文字幕| 亚洲男人天堂网址| 日韩性网站| 狠狠躁天天躁夜夜躁婷婷| 国产91成人| 亚洲高清在线播放| 国产最新无码专区在线| 国产精品欧美在线观看| 一区二区日韩国产精久久| 99中文字幕亚洲一区二区|