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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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

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

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

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

11、陸時間datatimeSig nState用戶登陸狀態標 記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 權限表(Static_PermissionStatic Permissio nStatic User 字段名詳細解釋類型備注Permissio nID編號varchar(20)PKPermissi onN ame權限名稱varchar(20)Permissi onN ote全息信息描述varchar(20)2.2.5 角色權限表(Static_Role_PermissionStatic Role Permissi onStatic User 字段名詳細解釋類型

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

14、ader 派生的類,然后將服務的公共字段 聲明為該類型。 這在服務的公共合同中公開, 并且當從 WebServiceUtil.exe 創建 代理時可由客戶端使用,如下例所示: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;服務中的每個 WebMethod 都可以使用 SoapHeader 自定義屬性定義一組 關聯的標頭。默認情況下,標頭是必需的,但也可以定義可選標頭。 SoapHeader 屬性指定公共字段的名稱或者 Client 或 Server 類的屬性(本標題中稱為 Headers 屬性)。在為輸入標頭調用方法前, WebService 設置 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;然后,客戶端在調用要求標頭的方法之前,直接在代理類上設置標頭,如下 面的示例所示: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 提供與執行代碼路徑一起傳送的屬性集, CallContext 是類似于方 法調用的線程本地存儲的專用集合對象, 并提供對每個邏輯執行線程都唯一的數 據槽。數據

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

19、lCo ntext.SetData方法存儲給定對象并將其與指定名稱關聯,CallC on text.GetData方法從CallC on text中檢索具有指定名稱的對象。下面的代碼示例說明如何使用 SetData 方法將主體和標識對象傳輸到遠程 位置以進行標識。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 方法將主體和標識對象傳輸到遠程 位置以進行標識。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 詳細代碼設計4.1 WebService 代碼設計WebService端代碼主要進行對數據庫的操作,建立起Client操作數據庫所需 要的方法,供 Client 的端調用。1) class UserInfoMng()用戶信息管理類,其中包括方法:CreateUserInfo(stringUserName string UserPwd) 建立用UserName,UserPwd )戶信息,調用存儲過程 CreateUserInfoModifyU

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

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

溫馨提示

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

評論

0/150

提交評論