【问题标题】:WCF PrincipalPermission with roles, configuring for sub-methodsWCF PrincipalPermission 与角色,配置子方法
【发布时间】:2011-08-20 16:54:12
【问题描述】:

我想让这个尽可能简单,所以我不会发布任何代码,因为它可能只会让事情变得混乱。

我已经使用 WCF 的基于角色的授权在我的应用程序中实现了安全性。

假设我的公开接口上有 4 个方法

  • 获取人员
  • 删除人员
  • 更新人
  • GetSurnameAndForename

我已经附上了

[PrincipalPermission(SecurityAction.Demand,Role="POWERUSER")]

到前 3 个,而

[PrincipalPermission(SecurityAction.Demand,Role="GENERALUSER")]

到最后一个。

这很好用,并且可以防止“GENERALUSER”访问前 3 个方法。

但是,GetSurnameAndForename 方法在内部调用 GetPerson 方法,但该方法失败。我理解它为什么会失败,但是有没有一种首选方法可以让 GetSurnameAndForename 在没有 POWERUSER 角色的情况下调用 GetPerson ?

我能想到的唯一方法是在 IsInRole 方法中添加一个额外的检查来检查 CallStack 以查看此调用是来自内部方法还是外部调用。此解决方案有效,但不是很优雅。

【问题讨论】:

    标签: c# .net wcf wcf-security


    【解决方案1】:

    是的,有一个非常简单的解决方案。将GetPerson 提供的逻辑封装到私有方法中,并从GetPersonGetSurnameAndForename 调用该新方法。

    【讨论】:

    • 谢谢,你这么一说就明白了。今天一直在我的脑海里嗡嗡作响,有时你看不到树木的树木......再次感谢!
    【解决方案2】:

    使用 Principal Permission Attributes 保护的跨越边界是灾难的根源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      • 2014-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      • 2010-09-30
      相关资源
      最近更新 更多