为什么PrincipalPermission(Attribute)不尊重身份验证类型?

时间:2011-11-11 18:53:46

标签: .net security base-class-library principalpermission

IIdentity接口公开了我想要考虑的AuthenticationType属性,因为如果用户使用x509或基本用户名/密码auth登录,情况会有所不同,您知道:

[PrincipalPermission(SecurityAction.Demand, Role = "BigBoss", AuthenticationType="basic")]
protected static void DoSomething() {}

但我不能。此外,PrincipalPermissionPrincipalPermissionAttribute都是密封的(谢谢你们),所以我无法添加我需要的功能。这是出于某种特殊原因还是仅仅是设计上的缺陷?任何想法如何解决?

1 个答案:

答案 0 :(得分:1)

尽管两者都与安全性有关,但身份验证和授权实际上是单独的问题,将授权直接与身份验证机制联系起来通常不是一个特别好的主意。

如果您觉得有充分的理由要添加这样的耦合,那么您可以使用以下几种方法:

  1. 向您的主体添加一个角色以反映身份验证机制,然后在后者重要时请求焦点角色和身份验证机制伪角色。
  2. PrincipalPermissionPrincipalPermissionAttribute被封存时,没有什么能阻止您创建符合您需要的类似类型。
  3. 对于#2,您可以创建一个自定义属性来创建自定义权限,该权限包装PrincipalPermission而不是从头开始重新创建所有逻辑。