为什么PrincipalPermission(Attribute)不尊重认证类型



IIdentity接口暴露了AuthenticationType属性,我想考虑到这一点,因为如果用户使用x509或基本用户名/密码认证登录,情况会有所不同,你知道:

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

但是我不能。此外,PrincipalPermissionPrincipalPermissionAttribute都是密封的(谢谢伙计们),所以我不能添加我需要的功能。这是出于某种特殊原因还是仅仅是设计缺陷?有什么办法吗?

尽管两者都与安全相关,但身份验证和授权实际上是分开的关注点,将授权直接耦合到身份验证机制通常不是一个特别好的主意。

如果您觉得有令人信服的理由添加这样的耦合,那么您有两个可用的方法:

  1. 向您的主体添加一个角色以反映认证机制,然后在后者重要时同时要求焦点角色和认证机制伪角色。
  2. 虽然PrincipalPermissionPrincipalPermissionAttribute是密封的,但没有什么可以阻止您创建类似的类型来做您想做的事情。

对于#2,您可以创建一个自定义属性,该属性创建一个自定义权限来包装PrincipalPermission,而不是从头开始重新创建其所有逻辑。

相关内容

  • 没有找到相关文章

最新更新