【问题标题】:How can I find the role required when PrincipalPermissionAttribute demand fails?当 PrincipalPermissionAttribute 需求失败时,如何找到所需的角色?
【发布时间】:2011-09-07 20:08:10
【问题描述】:

在网站中,我使用 PrincipalPermission 属性来限制对某些方法的访问。

这是一个规范的例子:

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,并带有通用消息“请求主体权限失败”。

如果权限检查失败,我想记录 PrincipalPermission 所需的角色。这对我们的支持人员非常有用,他们可以将角色分配给用户和/或监控日志以查看是否发生任何可疑情况。显然,出于安全目的,最终用户仍会看到通用的未经授权的消息。我已经浏览了 SecurityException 本身,但它的任何地方都没有“角色”。

有没有办法得到这些信息?

【问题讨论】:

    标签: c# security


    【解决方案1】:

    如果您的代码完全受信任,您可以通过解析 SecurityException 的 FirstPermissionThatFailed 属性的 XML 表示来提取所需的信息。但是,对于检测“可疑”活动的第二个目的,最好只记录 SecurityException 的 ToString() 方法的返回值。这将包括被拒绝的 PrincipalPermission 的详细信息和发生异常的堆栈跟踪。假设相关支持人员了解如何将其与您的应用程序结构相关联,堆栈跟踪给出的上下文可能非常有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2012-06-04
      • 1970-01-01
      • 1970-01-01
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多