2012-11-23 78 views
1

我有一個使用PrincipalPermission類的vb.net 3.5應用程序來確保用戶是角色的成員。該代碼適用於Active Directory域中的某些組,但不適用於其他組。 起初我認爲空間是一個問題,但我檢查了「域用戶」的工作。運行此代碼我是App Group的成員。.Net角色認證PrincipalPermission失敗

從secEx.ToString輸出誤差是

「System.Security.SecurityException:請求主體權限失敗 在System.Security.Permissions.PrincipalPermission.ThrowSecurityException() 在系統。 .Security.Permissions.PrincipalPermission.Demand() at C:\ Documents and Settings \ me \ My Documents \ Visual Studio 2008 \ Projects \ App \ App \ ApplicationEvents.vb中的App.My.MyApplication.DemandSecurity():第28行

失敗的行動是: 需求 第一許可失敗的類型是: System.Security.Permissions.PrincipalPermission

失敗是第一權限: IPermission類=「System.Security.Permissions。的PrincipalPermission,mscorlib程序,版本= 2.0.0.0,文化=中性公鑰= b77a5c561934e089" 版本= 「1」> 身份認證= 「真」 作用= 「應用程序組」/>

的需求是爲: IPermission class =「System.Security.Permissions.P rincipalPermission,mscorlib程序,版本= 2.0.0.0,文化=中性公鑰= b77a5c561934e089" 版本= 「1」> 身份認證= 「真」 角色= 「應用程序組」/>

的組件或應用程序域失敗是: mscorlib程序,版本= 2.0.0.0,文化=中性公鑰= b77a5c561934e089"

讓我知道如果我需要包括別的。

+0

我也嘗試使用My.User.IsInRole,它也返回false。我絕對是在這個角色。 –

回答

0
+0

謝謝豪爾赫。 cn名稱與pre-windows 2000名稱相匹配,因此無法使用。除非我錯過了那篇文章的要點。 –

+0

澄清,這不會回答問題。希望有人可以建議這可能是錯誤的。 –

+0

@RussellHart事實上,你聲明一些搜索失敗,而另一些搜索失敗,其他人不是,很奇怪,聞起來像你在開始的信息中所述的命名問題,你是否嘗試過使用LDAP瀏覽器並查詢objectSID而不是名稱? –

0

沒關係,這只是胡亂猜測,我偶然看到了關於SAM帳戶名和專有名稱的討論,但不知道如果這仍然是目前的問題:Active Directory and PrincipalPermission

老實說,我不知道,如果「角色」可以執行一個完整的LDAP過濾器,但讓我們給它一個嘗試: 我們假設你的一批傑出的名字是這樣的:

「CN = MyGroup的,OU = SecurityGroups,OU =部門,DC =公司,DC = com的」

爲什麼不嘗試這樣的:

Role="CN=MyGroup,OU=SecurityGroups,OU=Department,DC=Company,DC=com" 

[email protected]"Company.com\Department\Security Groups\MyGroup" // Not sure about this one though 

而且因爲這一次似乎更多的邏輯,也許是這樣的:

[email protected]"Company\SAMAccountNameOfYourGroup" 

我覺得你的團體CN =用戶可能會成功因爲它們可能位於活動目錄的根目錄中,所以對於其他組,您可能需要提供唯一的SAMAccount或爲搜索提供一些結構。