【发布时间】:2012-11-23 20:54:03
【问题描述】:
我有一个 vb.net 3.5 应用程序,它使用 PrincipalPermission 类来确保用户是角色的成员。该代码适用于 Active Directory 域中的某些组,但不适用于其他组。 起初我认为空间是一个问题,但我检查了“域用户”,它有效。运行此代码我是 App Group 的成员。
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.ThrowSecurityException() 在 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" 版本="1"> 身份验证=“真” 角色="应用组"/>
需求是: IPermission class="System.Security.Permissions.PrincipalPermission,mscorlib,版本=2.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089" 版本="1"> 身份验证=“真” 角色="应用组"/>
失败的程序集或 AppDomain 是: mscorlib,版本=2.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089"
如果我需要添加任何其他内容,请告诉我。
【问题讨论】:
-
我也尝试过使用 My.User.IsInRole,它也返回 false。我绝对是这个角色。
标签: .net vb.net security active-directory principalpermission