問題,如何與委託人一起構造PrincipalPermission以授權違反該委託人的帳戶?
如何在PrincipalPermission上調用Demand時構造一個PrincipalPermission對象,該對象將授權來自Principal對象的數據?
爲什麼和你有什麼企圖......
我存儲由用戶輸入提供的賬號串反映像「jlaird」用戶帳戶名稱。然後,當有人試圖使用我的Windows服務時,我根據誰通過WCF界面調用訪問權限授予訪問權限。
因此,我提供的字符串,並從它建立一個System.DirectoryServices.AccountManagement.Principal對象。通過這種方式:
System.DirectoryServices.AccountManagement.Principal userP = null;
userP = System.DirectoryServices.AccountManagement.Principal.FindByIdentity(new PrincipalContext(ContextType.Domain), "jlaird");
然後我建立一個System.Security.PrincipalPermission這樣:
System.Security.PrincipalPermission permPP = null;
permPP = new PrincipalPermission(userP.UserPrincipalName, null);
然後當我打電話System.Security.PrincipalPermission.Demand(),並等待一個例外(或不)批准已被調用Windows服務這樣的用戶:
permPP.Demand()
通過調試,我驗證了兩個字符串「jlaird」和「MYDOMAIN \ jlaird」指向同一個帳戶t時他的主要對象。在這兩種情況下,Principal對象的UserPrincipalName都是'[email protected]'。
即使從userP.UserPrincipalName構造它,對PrincipalPermission的需求也會引發異常。事實上,它只有授權用戶,當我在字符串中「MYDOMAIN \ jlaird」進入新的PrincipalPermission等也不會拋出異常:
new PrincipalPermission("MYDOMAIN\jlaird", null);
然而,這將拋出一個異常:
new PrincipalPermission("[email protected]")
我該如何構建一個PrincipalPermission對象,該對象將對來自Principal對象的數據進行授權,以便「MYDOMAIN \ jlaird」和「jlaird」將授權並使Demand不引發異常?