軟件測試開發技術.NET框架中基于角色的安全性[2] .NET架構
關鍵字:.NET 框架 安全性
Principal對象
Principal對象是實現了IPrincipal接口的類的實例,這些對象用來表示用戶,并且包括了用戶的身份信息。System.Security.Principal命名空間包括了幾種類型的Principal類,這些類中封裝了程序代碼運行的的安全環境(security context)。我們在后面將會看到對用戶名和角色進行檢查以確定根據用戶身份和角色資格是否可以讓用戶執行某些特定操作的示例代碼。
對于每一個線程來說都與一個principal對象相關聯。這個principal對象包括了表示運行當前線程的用戶的identity對象。我們可以利用Thread類的靜態屬性CurrentPrincipal來獲得這個principal對象。
下面我們來看看IPrincipal接口,該接口只有一個Identity公共屬性和IsInRole公共方法:
1、Identity屬性指向一個與principal 對象關聯的IIdentity對象。
2、IsInRole方法需要一個字符串參數,該字符串是一個角色的名稱,并且返回布爾值,指出principal對象是否屬于指定的角色。
由于實際開發的需要,我們更多接觸到的是WindowsPrincipal類,下面將詳細討論WindowsPrincipal類,相對而言,GenericPrincipal類就要簡略一些了。
GenericPrincipal類
GenericPrincipal類用來表示一個通過自定義驗證的用戶,通常與GenericIdentity類一起使用。下面是一段簡單的程序,說明了這兩個類如何使用:
//創建一個GenericIdentity對象 IIdentity myGenericIdentity = new GenericIdentity(strUserName,
"MyAuthenticationType");
//創建一個GenericPrincipal對象
String[] roles = null;
GenericPrincipal myGenericPrincipal = new GenericPrincipal(myGenericIdentity, roles);
//將創建的GenericPrincipal對象附加到當前線程上
Thread.CurrentPrincipal = myGenericPrincipal;
注意在上面的例子中,我們可以把MyAuthenticationType的驗證類型換成熟知的Kerberos身份驗證或者NTLM身份驗證。
原文轉自:http://www.anti-gravitydesign.com