用戶認證管理設(shè)計方案_第1頁
用戶認證管理設(shè)計方案_第2頁
用戶認證管理設(shè)計方案_第3頁
用戶認證管理設(shè)計方案_第4頁
用戶認證管理設(shè)計方案_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、用戶認證管理設(shè)計方案1 設(shè)計思路為了設(shè)計一套具有較強可擴展性的用戶認證管理,需要建立用戶、角色和權(quán)限等數(shù)據(jù)庫表,并且建立之間的關(guān)系,具體實現(xiàn)如下。1.1 用戶用戶僅僅是純粹的用戶,用來記錄用戶相關(guān)信息,如用戶名、密碼等,權(quán)限是被分離出去了的。用戶(User)要擁有對某種資源的權(quán)限,必須通過角色(Role) 去關(guān)聯(lián)。用戶通常具有以下屬性: 編號,在系統(tǒng)中唯一。 名稱,在系統(tǒng)中唯一。用戶口令。 注釋,描述用戶或角色的信息。1.2 角色角色是使用權(quán)限的基本單位, 擁有一定數(shù)量的權(quán)限, 通過角色賦予用戶權(quán)限,通常具有以下屬性: 編號,在系統(tǒng)中唯一。 名稱,在系統(tǒng)中唯一。 注釋,描述角色信息1.3 權(quán)限

2、權(quán)限指用戶根據(jù)角色獲得對程序某些功能的操作, 例如對文件的讀、 寫、修 改和刪除功能,通常具有以下屬性:編號,在系統(tǒng)中唯一。名稱,在系統(tǒng)中唯一。 注釋,描述權(quán)限信息1.4 用戶與角色的關(guān)系一個用戶(User)可以隸屬于多個角色(Role),一個角色組也可擁有多個 用戶,用戶角色就是用來描述他們之間隸屬關(guān)系的對象。用戶(User)通過角色(Role)關(guān)聯(lián)所擁有對某種資源的權(quán)限,例如用戶( User):UserID UserName UserPwd1張三xxxxxx2李四xxxxxx角色( Role):RoleIDRoleNameRoleNote01系統(tǒng)管理員監(jiān)控系統(tǒng)維護管理員02監(jiān)控人員在線監(jiān)控

3、人員03調(diào)度人員調(diào)度工作人員04一般工作人員工作人員用戶角色( User_Role):UserRoleIDUserIDRoleIDUserRoleNote1101用戶“張三”被分配到角色“系統(tǒng)管理員”2202用戶“李四” 被分配到角色 “監(jiān)控人員”3203用戶“李四” 被分配到角色 “調(diào)度人員”從該關(guān)系表可以看出,用戶所擁有的特定資源可以通過用戶角色來關(guān)聯(lián)。0001增加監(jiān)控0002修改監(jiān)控0003刪除監(jiān)控0004察看監(jiān)控信息權(quán)限( Permission):PermissionIDPermissionName1.5 權(quán)限與角色的關(guān)系一個角色(Role)可以擁有多個權(quán)限(Permission),同

4、樣一個權(quán)限可分配給 多個角色。例如:角色( Role):RoleIDRoleNameRoleNote01系統(tǒng)管理員監(jiān)控系統(tǒng)維護管理員02監(jiān)控人員在線監(jiān)控人員03調(diào)度人員調(diào)度工作人員04一般工作人員工作人員PermissionNote允許增加監(jiān)控對象允許修改監(jiān)控對象允許刪除監(jiān)控對象 允許察看監(jiān)控對象1010001角色“系統(tǒng)管理員”具有權(quán)限“增加監(jiān)控”2010002角色“系統(tǒng)管理員”具有權(quán)限“修改監(jiān)控”PermissionID RolePermissionNote角色權(quán)限( Role_Permission): RolePermissionID RoleID3010003角色“系統(tǒng)管理員”具有權(quán)限“

5、刪除監(jiān)控”4010004角色“系統(tǒng)管理員”具有權(quán)限“察看監(jiān)控”5020001角色“監(jiān)控人員”具有權(quán)限“增加監(jiān)控”6020004角色“監(jiān)控人員”具有權(quán)限“察看監(jiān)控”由以上例子中的角色權(quán)限關(guān)系可以看出, 角色權(quán)限可以建立角色和權(quán)限之間 的對應(yīng)關(guān)系。1.6 建立用戶權(quán)限用戶權(quán)限系統(tǒng)的核心由以下三部分構(gòu)成:創(chuàng)造權(quán)限、分配權(quán)限和使用權(quán)限。第一步由Creator創(chuàng)造權(quán)限(Permission), Creator在設(shè)計和實現(xiàn)系統(tǒng)時會劃 分。利用存儲過程 CreatePermissionInfo( PermissionName,PermissionNote) 創(chuàng)建權(quán)限信息,指定系統(tǒng)模塊具有哪些權(quán)限。第二步由系

6、統(tǒng)管理員(Administrator)創(chuàng)建用戶和角色,并且指定用戶角色(User Role)和角色權(quán)限(Role Permission)的關(guān)聯(lián)關(guān)系。1) Administrator 具有創(chuàng)建用戶、修改用戶和刪除用戶的功能:存儲過程 CreateUserlnfo (UserName,UserPwd 創(chuàng)建用戶信息;存儲過程 ModifyUserlnfo (UserName,UserPwd 修改用戶信息;存儲過程DeleteUserInfo (UserID)刪除用戶信息;2) Administrator 具有創(chuàng)建角色和刪除角色的功能:存儲過程 CreateRoleInfo (RoleName,Rol

7、eNote 創(chuàng)建角色信息;存儲過程DeleteRoleInfo(RoleID)刪除角色信息;3 Administrator 具有建立用戶和角色、角色和權(quán)限的關(guān)聯(lián)關(guān)系功能:存儲過程 GrantUserRole( UserID,RoleID,UserRoleNote 建立用戶和 角色的關(guān)聯(lián)關(guān)系;存儲過程DeleteUserRole(UserRoleID刪除用戶和角色的關(guān)聯(lián)關(guān)系; 存儲過程Gran tRolePermissio n( RolelD,Permissio nlD,RolePermissio nN ote建立角 色和權(quán)限的關(guān)聯(lián)關(guān)系;存儲過程DeleteRolePermission(Role

8、PermissionID刪除角色和權(quán)限的關(guān)聯(lián) 關(guān)系;第三步用戶( User 使用 Administrator 分配給的權(quán)限去使用各個系統(tǒng)模塊。 利用存儲過程 GetUserRole( UserID, UserRoleID output ,GetRolePermission ( RoleID,Role-PermissinID output 獲得用戶對模塊的使用權(quán)限。1.7 用戶認證實現(xiàn)當用戶通過驗證后,由系統(tǒng)自動生成一個128位的TicketID保存到用戶數(shù)據(jù) 庫表中,建立存儲過程 Login (UserlD,UserPwd,TicketlD output)進行用戶 認證,認證通過得到一個 Ti

9、cketID,否則TicketID為null。其流程圖如下:圖1 Login流程圖得到TicketID后,客戶端在調(diào)用服務(wù)端方法時傳遞 TicketID,通過存儲過程 JudgeTicketPermission( TicketlD,PermissionID)判斷 TicketID 對應(yīng)的用戶所 具有的權(quán)限,并根據(jù)其權(quán)限進行方法調(diào)用。當用戶退出系統(tǒng)時,建立存儲過程 Logout(UserID)來退出系統(tǒng)。當用戶 異常退出系統(tǒng)時,根據(jù)最后的登陸時間(LastSignTime)確定用戶的TickeID, 建立存儲過程 ExceptionLogout(UserlD,LastSignTime)處理用戶的

10、異常退出。圖2 Logout流程圖WebService可以采用SoapHeade中寫入TicketID來使得TicketID從客戶端 傳遞給服務(wù)端。.Net Remoti ng可以采用CallC on text類來實現(xiàn)TicketID從客戶端 傳遞給服務(wù)端。2數(shù)據(jù)庫設(shè)計2.1數(shù)據(jù)庫表圖3數(shù)據(jù)庫關(guān)系圖2.2數(shù)據(jù)庫表說明2.2.1 用戶表(Static_User)Static UserStatic User 字段名詳細解釋類型備注UserID路線編號varchar(20)PKUserName用戶名稱varchar(20)UserPwd用戶密碼varchar(20)LastSig nTime:最后登

11、陸時間datatimeSig nState用戶登陸狀態(tài)標 記intTickeID:驗證票記錄編號varchar(128)2.2.2 角色表(Static_Role)Static RoleStatic User 字段名詳細解釋類型備注RolelD角色編號varchar(20)PKRoleName:角色名稱varchar(20)RoleNote角色信息描述varchar(20)223 用戶一角色表(Static_User_RoieStatic User RoleStatic User 字段名詳細解釋類型備注UserRoleID:用戶角色編號varchar(20)PKUserID用戶編號varcha

12、r(20)FKRoleID角色編號varchar(20)FKUserRoleNote用戶角色信息描 述varchar(20)2.2.4 權(quán)限表(Static_PermissionStatic Permissio nStatic User 字段名詳細解釋類型備注Permissio nID編號varchar(20)PKPermissi onN ame權(quán)限名稱varchar(20)Permissi onN ote全息信息描述varchar(20)2.2.5 角色權(quán)限表(Static_Role_PermissionStatic Role Permissi onStatic User 字段名詳細解釋類型

13、備注RolePermissio nID角色權(quán)限編號varchar(20)PKRoleID角色編號varchar(20)FKPermissio nID權(quán)限編號varchar(20)FKRolePermissi onN ote角色權(quán)限信息描 述varchar(20)3 .net技術(shù)概要3.1 WebService SoapHeader對 SQL 數(shù)據(jù)庫執(zhí)行自定義身份驗證和授權(quán)。在這種情況中,應(yīng)向服務(wù)傳遞 自定義憑據(jù)(如用戶名和密碼),并讓服務(wù)自己處理身份驗證和授權(quán)。 將額外 的信息連同請求一起傳遞給 XML Web 服務(wù)的簡便方法是通過 SOAP 標頭。為 此,需要在服務(wù)中定義一個從 SOAPHe

14、ader 派生的類,然后將服務(wù)的公共字段 聲明為該類型。 這在服務(wù)的公共合同中公開, 并且當從 WebServiceUtil.exe 創(chuàng)建 代理時可由客戶端使用,如下例所示:using System.Web.Services;using System.Web.Services.Protocols;/ AuthHeader class extends from SoapHeader public class AuthHeader : SoapHeader public stringUsername;public stringPassword;public classHeaderService :

15、 WebService public AuthHeader sHeader;服務(wù)中的每個 WebMethod 都可以使用 SoapHeader 自定義屬性定義一組 關(guān)聯(lián)的標頭。默認情況下,標頭是必需的,但也可以定義可選標頭。 SoapHeader 屬性指定公共字段的名稱或者 Client 或 Server 類的屬性(本標題中稱為 Headers 屬性)。在為輸入標頭調(diào)用方法前, WebService 設(shè)置 Headers 屬性的 值;而當方法為輸出標頭返回時, WebService 檢索該值。 WebMethod(Description="This method requires a

16、 custom soap header set by the caller") SoapHeader("sHeader") public string SecureMethod() if (sHeader =null )return "ERROR: Please supply credentials" elsereturn "USER: " + sHeader.Username;然后,客戶端在調(diào)用要求標頭的方法之前,直接在代理類上設(shè)置標頭,如下 面的示例所示:HeaderService h = new HeaderServi

17、ce(); AuthHeader myHeader = new AuthHeader(); myHeader.Username = "username" myHeader.Password = "password"h.AuthHeader = myHeader;String result = h.SecureMethod();3.2 .Net Remoting 的安全認證方式CallContext 提供與執(zhí)行代碼路徑一起傳送的屬性集, CallContext 是類似于方 法調(diào)用的線程本地存儲的專用集合對象, 并提供對每個邏輯執(zhí)行線程都唯一的數(shù) 據(jù)槽。數(shù)據(jù)

18、槽不在其他邏輯線程上的調(diào)用上下文之間共享。當 CallContext 沿執(zhí) 行代碼路徑往返傳播并且由該路徑中的各個對象檢查時,可將對象添加到其中。 當對另一個 AppDomain 中的對象進行遠程方法調(diào)用時, CallContext 類將生成 一個與該遠程調(diào)用一起傳播的 LogicalCallContext 實例。只有公開 ILogicalThreadAffinative 接口并存儲在 CallContext 中的對象被在 LogicalCallContext 中傳播到 AppDomain 外部。不支持此接口的對象不在 LogicalCallContext 實例中與遠程方法調(diào)用一起傳輸。Cal

19、lCo ntext.SetData方法存儲給定對象并將其與指定名稱關(guān)聯(lián),CallC on text.GetData方法從CallC on text中檢索具有指定名稱的對象。下面的代碼示例說明如何使用 SetData 方法將主體和標識對象傳輸?shù)竭h程 位置以進行標識。public class ClientClass public static voidMain() GenericIdentity ident =new GenericIdentity("Bob");GenericPrincipal prpal =new GenericPrincipal(ident,Newstri

20、ng"Level1");LogicalCallContextData data =new LogicalCallContextData(prpal);/Enter data into the CallContextCallContext.SetData("test data", data);Console.WriteLine(data.numOfAccesses);ChannelServices.RegisterChannel(new TcpChannel();RemotingConfiguration.RegisterActivatedClientTy

21、pe(typeof(HelloServiceClass), "tcp:/localhost:8082");HelloServiceClass service = new HelloServiceClass(); if (service = null ) Console.WriteLine("Could not locate server.");return ;/ call remote methodConsole.WriteLine();Console.WriteLine("Calling remote object");Consol

22、e.WriteLine(service.HelloMethod("Caveman"); Console.WriteLine(service.HelloMethod("Spaceman"); Console.WriteLine(service.HelloMethod("Bob"); Console.WriteLine("Finished remote object call"); Console.WriteLine();/Extract the returned data from the call contextL

23、ogicalCallContextData returnedData =(LogicalCallContextData)CallContext.GetData("tes t data");Console.WriteLine(data.numOfAccesses);Console.WriteLine(returnedData.numOfAccesses); 下面的代碼示例說明如何使用 GetData 方法將主體和標識對象傳輸?shù)竭h程 位置以進行標識。using System;using System.Text;using System.Runtime.Remoting.Mess

24、aging;using System.Security.Principal;public class HelloServiceClass : MarshalByRefObject static int n_instances;int instanceNum;public HelloServiceClass() n_instances+; instanceNum = n_instances; Console.WriteLine(this.GetType().Name + " has been created.Instance # = 0", instanceNum);Hell

25、oServiceClass() Console.WriteLine("Destroyed instance 0 ofHelloServiceClass.", instanceNum);public String HelloMethod( String name) /Extract the call context dataLogicalCallContextData data = (LogicalCallContextData)CallContext.GetData("tes t data");IPrincipal myPrincipal = data.

26、Principal;/Check the user identityif (myPrincipal.Identity.Name = "Bob") Console.WriteLine("nHello 0, you are identified!",myPrincipal.Identity.Name); Console.WriteLine(data.numOfAccesses); else Console.WriteLine("Go away! You are not identified!");return String.Empty;/

27、 calculate and return result to client return "Hi there " + name +4 詳細代碼設(shè)計4.1 WebService 代碼設(shè)計WebService端代碼主要進行對數(shù)據(jù)庫的操作,建立起Client操作數(shù)據(jù)庫所需 要的方法,供 Client 的端調(diào)用。1) class UserInfoMng()用戶信息管理類,其中包括方法:CreateUserInfo(stringUserName string UserPwd) 建立用UserName,UserPwd )戶信息,調(diào)用存儲過程 CreateUserInfoModifyU

28、serInfo(stringUserName string UserPwd) 修改用UserName,UserPwd )戶信息,調(diào)用存儲過程 ModifyUserInfoDeleteUserInfo()刪除用戶信息,調(diào)用存儲過程DeleteUserInfo(UserID)2) class UserAuthentication()用戶認證類,用來實現(xiàn)用戶角色、權(quán)限的設(shè)置,包括方法:CreatePermissionInfo(string PermissionName stringPermissi-onNote) 建立權(quán)限信息,調(diào)用存儲過程 CreatePermissionInfo(Permissi

29、onName,PermissionNote)CreateRoleInfo(string RoleName string RoleNote)建立角色信息,調(diào)用存儲過程 CreateRoleInfo(RoleName,RoleNote)DeleteRoleInfo()刪除角色信息,調(diào)用存儲過程DeleteRoleInfo(RoleID)GrantUserRole(string UserID string RoleID stringUserRoleNote) 授予用戶角色,調(diào)用存儲過程GrantUserRole(UserID,RoleID,UserRoleNote)DeleteUserRole() 刪除用戶角色,調(diào)用存儲

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論