vb.Net角色身份验证PrincipalPermission失败



我有一个vb.net 3.5应用程序,它使用PrincipalPermission类来确保用户是角色的成员。该代码适用于Active Directory域中的某些组,但不适用于其他组。起初,我认为空间是个问题,但我检查了"域用户",这是有效的。运行此代码时,我是应用程序组的成员。

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.SecurityException:请求主体权限失败。位于System.Security.Permissions.PrincipalPermission.SthrowSecurityException()位于System.Security.Permissions.PrincipalPermission.Demand()位于C:\Documents and Settings\me\My Documents\Visual Studio 2008\Projects\App\App\ApplicationEvents.vb:line 28 中的App.My.MyApplication.DemandSecurity()

失败的操作是:需要失败的第一个权限的类型为:System.Security.Permissions.PrincipalPermission

第一个失败的权限是:IPermission class="System.Security.Permissions.PrincipalPermission,mscorlib,版本=2.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089"version="1">身份验证="true"角色="应用程序组"/>

需求是:IPermission class="System.Security.Permissions.PrincipalPermission,mscorlib,版本=2.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089"version="1">身份验证="true"角色="应用程序组"/>

失败的程序集或AppDomain为:mscorlib,版本=2.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089">

如果我需要包括其他内容,请告诉我。

我认为您最好检查您的AD组以查看此问题:http://social.technet.microsoft.com/Forums/en-US/winserverDS/thread/3e8e9209-17c7-4674-8780-7ae09c607118

好吧,这只是一个猜测,我碰巧看到了关于SAMAccountName和可分辨名称的讨论,但不知道这是否仍然是当前的问题:Active Directory和PrincipalPermission

老实说,我不知道"角色"是否可以执行完整的LDAP筛选器,但让我们试一试:假设您的组的专有名称是这样的:

"CN=MyGroup,OU=SecurityGroups,OU=部门,DC=公司,DC=com">

为什么不试试这个:

Role="CN=MyGroup,OU=SecurityGroups,OU=Department,DC=Company,DC=com"
Role=@"Company.comDepartmentSecurity GroupsMyGroup"  // Not sure about this one though

因为这个看起来更有逻辑,也许是这样的:

Role=@"CompanySAMAccountNameOfYourGroup"

我认为CN=Users中的组可能会成功,因为它们可能在您的active directory的根目录中,所以对于其他组,您可能需要提供唯一的SAMAccount,或者提供一些搜索结构。

相关内容

  • 没有找到相关文章

最新更新