我有一个vb.net 3.5应用程序,它使用PrincipalPermission类来确保用户是角色的成员。该代码适用于域中的某些组,但不适用于其他组。起初,我认为空间是一个问题,但我检查了“域用户”,这是可行的。运行此代码,我是App的成员之一。
Imports System.Security
Imports System.Security.Principal
Imports System.Security.Permissions
Private Function DemandSecurity() As Boolean
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)
Dim principalGroup As New PrincipalPermission(Nothing, "App Group")
Try
principalGroup.Demand()
Debug.Print("Demanding pricipal permissions for current user on 'App Group' role succeeded. ")
Catch secEx As SecurityException
Debug.Print("Security Exception - Demanding pricipal permissions for current user on 'App Group' role failed. ")
Application.DoEvents()
MessageBox.Show("Permission denied. Output: " & vbNewLine & secEx.ToString, "App - Security Exception", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
Return False
Exit Function
End Try
Return True
End Function来自secEx.ToString的错误输出是
“System.Security.Permissions.PrincipalPermission.ThrowSecurityException():在C:\Documents和Settings\me\My \Visual 2008\Projects\App\App\ApplicationEvents.vb:line 28中的System.Security.Permissions.PrincipalPermission.Demand() at App.My.MyApplication.DemandSecurity()处,请求主体权限失败 失败的操作是:请求失败的第一个权限的类型是: System.Security.Permissions.PrincipalPermission 第一个失败的许可是: class="System.Security.Permissions.PrincipalPermission,mscorlib、Version=2.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089“version=”1> Identity Authenticated=“真正的”Role="App Group"/> -需求是: IPermission class="System.Security.Permissions.PrincipalPermission,mscorlib、Version=2.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089“version=”1> Identity Authenticated="true“”Role="App Group- IPermission程序集或失败的Culture=neutral是: mscorlib、“。
如果我需要包括其他的东西请告诉我。
发布于 2012-11-23 21:07:12
我认为你最好检查一下你的广告组,看看这个问题:http://social.technet.microsoft.com/Forums/en-US/winserverDS/thread/3e8e9209-17c7-4674-8780-7ae09c607118
发布于 2012-11-25 08:31:08
好的,这只是猜测,我碰巧看到了关于SAMAccountName和可分辨名称的讨论,但不知道这是否仍然是当前的问题:Active Directory and PrincipalPermission
老实说,我不知道“角色”是否可以执行完整的LDAP筛选器,但让我们试一试:假设您的组可分辨名称如下:
CN=MyGroup,OU=SecurityGroups,OU=Department,DC=Company,DC=com
为什么不试试这个:
Role="CN=MyGroup,OU=SecurityGroups,OU=Department,DC=Company,DC=com"
Role=@"Company.com\Department\Security Groups\MyGroup" // Not sure about this one though因为这个看起来更符合逻辑,也许是这样的:
Role=@"Company\SAMAccountNameOfYourGroup"我认为CN=Users中的组可能会成功,因为它们可能位于活动目录的根目录中,因此对于其他组,您可能需要给出唯一的SAMAccount,或者为搜索提供某种结构。
https://stackoverflow.com/questions/13535616
复制相似问题