【发布时间】: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