ユーザーがロールのメンバーであることを確認するために、PrincipalPermission クラスを使用する vb.net 3.5 アプリケーションがあります。このコードは、Active Directory ドメインの一部のグループでは機能しますが、他のグループでは機能しません。最初はスペースが問題だと思っていましたが、「Domain Users」が機能していることを確認しました。このコードを実行する私は 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: プリンシパル アクセス許可の要求が失敗しました。C の App.My.MyApplication.DemandSecurity() で System.Security.Permissions.PrincipalPermission.ThrowSecurityException() で System.Security.Permissions.PrincipalPermission.Demand() で: \Documents and Settings\me\My Documents\Visual Studio 2008\Projects\App\App\ApplicationEvents.vb: 28 行目
失敗したアクション: Demand 最初に失敗したアクセス許可の種類: System.Security.Permissions.PrincipalPermission
失敗した最初のアクセス許可は次のとおりです。アプリグループ"/>
要求は次のとおりでした: IPermission class="System.Security.Permissions.PrincipalPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1"> Identity Authenticated="true" Role="App Group "/>
失敗したアセンブリまたは AppDomain は次のとおりです: mscorlib、Version=2.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089"
他に何かを含める必要がある場合はお知らせください。