2011-09-07 4 views
1

Webサイト内では、PrincipalPermission属性を使用して特定のメソッドへのアクセスを制限しています。プリンシパルが指定されたロールではありませんPrincipalPermissionAttribute要求が失敗したときに必要な役割を見つけるにはどうすればよいですか?

class Program 
{ 
    static void Main(string[] args) 
    { 
     Foo(); 
    } 

    [System.Security.Permissions.PrincipalPermission(System.Security.Permissions.SecurityAction.Demand, Role = "Winners")] 
    static void Foo() 
    { } 
} 

場合、.NETインフラストラクチャは一般的なメッセージ「主許可の要求は失敗しました」とSystem.Security.SecurityExceptionをスロー:

はここcanoncial例です。

権限チェックが失敗した場合は、PrincipalPermissionが必要とするロールを記録したいと思います。これは、私たちのサポート担当者にとって本当に便利で、ユーザーに役割を割り当てたり、ログを監視して不審な事態が発生していないかどうかを確認することができます。明らかに、セキュリティ上の目的のために、エンドユーザは未承認の一般的なメッセージを見ることになります。私はSecurityException自体を辿ってきましたが、どこにでも "Role"がありません。

この情報を得るにはどうにかしていますか?

答えて

1

コードが完全に信頼できる場合は、SecurityExceptionのFirstPermissionThatFailedプロパティのXML表現を解析して、必要な情報を抽出できます。ただし、「疑わしい」アクティビティを検出する2番目の目的のためには、SecurityExceptionのToString()メソッドの戻り値を単に記録する方がよい場合があります。これには、拒否されたPrincipalPermissionの詳細と、例外が発生したスタックトレースの両方が含まれます。スタックトレースによって与えられるコンテキストは、問題のサポートスタッフがアプリケーション構造に関連させる方法を理解していると仮定すると、非常に便利です。

+0

ああ - 私は完璧を見て、非常にありがとう。 –

関連する問題