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格式閱讀原文。

主站蜘蛛池模板: 伊人AV天堂| 91人妻在线视频| 国产成人亚洲精品无码电影| 在线视频97| 亚洲欧美h| 亚洲一区二区在线无码| 亚洲永久色| 久久精品人人做人人综合试看| 色偷偷综合网| 国产91色| 中文字幕色站| 久久精品视频一| 精品无码人妻一区二区| 四虎亚洲精品| 亚洲精品爱草草视频在线| 亚洲香蕉久久| 丝袜亚洲综合| 国内精品一区二区在线观看| a毛片基地免费大全| 亚洲婷婷六月| 亚洲日本中文字幕乱码中文| 亚洲日韩Av中文字幕无码| 久久性妇女精品免费| 亚洲无码视频图片| 久久国产高潮流白浆免费观看| 亚洲国产成人在线| 国产青青操| 中文字幕一区二区视频| 久久青青草原亚洲av无码| 国产高清在线丝袜精品一区| 制服丝袜一区| 亚洲欧美自拍一区| 国产综合亚洲欧洲区精品无码| 免费一级毛片完整版在线看| 婷婷午夜天| 欧美、日韩、国产综合一区| 一级一级特黄女人精品毛片| 在线中文字幕网| 色网在线视频| 色综合天天视频在线观看| 国产成人91精品免费网址在线 | 亚洲精品男人天堂| 色综合日本| 精品国产黑色丝袜高跟鞋| 久久久久久久97| 免费一级毛片在线观看| 99热这里都是国产精品| 欧美精品啪啪一区二区三区| 女人18毛片水真多国产| 国产一级裸网站| av无码一区二区三区在线| 国产成人麻豆精品| 国产成人午夜福利免费无码r| 欧美综合区自拍亚洲综合绿色 | 亚洲日韩在线满18点击进入| 黄色网址手机国内免费在线观看| 久久亚洲黄色视频| 国产精品久久久久鬼色| 精品国产一区二区三区在线观看 | 国产日韩欧美在线视频免费观看 | 亚洲欧洲国产成人综合不卡| 国产成熟女人性满足视频| 伦精品一区二区三区视频| 青青操国产视频| 99热这里只有精品国产99| 99资源在线| 欧美一级色视频| 天堂av高清一区二区三区| 欧美午夜视频在线| 蜜臀AV在线播放| 天堂网亚洲系列亚洲系列| 欧美狠狠干| 国产一区二区人大臿蕉香蕉| 天天色综合4| 亚洲精品无码久久毛片波多野吉| 一级毛片在线免费视频| 欧美日韩专区| 欧美亚洲欧美| 亚洲码在线中文在线观看| 国产在线八区| 亚洲天堂视频网站| 欧美成人精品在线|